Contract 0x3A5A320a2f98a3Fe39c9040e7e3E9caA7F0D5bd6 1

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1f97c862f9776dbd8abda602bded49dc936bb737f671526740a4340a0d13f094Execute Signatur...110745442021-09-20 8:45:3119 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175516
0xc864253a989c7aca5723a66cb6cb1da4f7363fc8a663fa8fd7f69093bae3a629Execute Signatur...110733112021-09-20 7:43:501 hr 20 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00194582
0x92814fb42b6343cd4aab796c2498d40eb794bfeab34985471bdb5d5c8c770298Execute Signatur...110655392021-09-20 1:15:117 hrs 49 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175504
0x42ebc61a8f215103516b0f85660b647ee65e3f07e64c56857beedb432169308cExecute Signatur...110646272021-09-20 0:29:358 hrs 35 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00224594
0xd62bea0470cf955e227bc6fa95e2022b9e8b2075cda104d01f6015b03e23cf21Execute Signatur...110644412021-09-20 0:20:178 hrs 44 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00190516
0xe92b8e7e85418f1a5f846b4b3ced6d578eff828f21a4a29d7810647e326d49acExecute Signatur...110621312021-09-19 22:24:4510 hrs 39 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00194582
0xb6d2bbfa66d24e9561688b503ac8c17bc80e90291401dd28c3c51b42bdfc13cbExecute Signatur...110548132021-09-19 16:18:4716 hrs 45 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00209606
0x36e6415e1692f9068e41be30d0021795a99693b1e1276ffa4e249b9055c34945Execute Signatur...110547042021-09-19 16:13:2016 hrs 51 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00209606
0x88196b6b6c754c213bff05e36bb82db231c93a5016ab4356f448819388843627Execute Signatur...110544352021-09-19 15:59:5317 hrs 4 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175504
0x2221fa0cee219f09cc69bef18ed0ca2d98b83046aeb80fcb7bd180363c5eb064Execute Signatur...110538382021-09-19 15:30:0217 hrs 34 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175516
0xc03e06e71121a3117e6f5b70b0bae97ad5bc983fa0d5572fe60d3fdf6a236e80Execute Signatur...110535732021-09-19 15:16:4517 hrs 47 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00200504
0xd7e4e59e64614bce501e90ae98b016caae3640a079fb18297a7a105c5178caefExecute Signatur...110530372021-09-19 14:49:5718 hrs 14 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00209606
0xeb9b975dc61aae0135f3c993d6764f903ed253b0881876b5b55debd4d3fef460Execute Signatur...110502392021-09-19 12:30:0320 hrs 34 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175504
0x3cb3fee28d96d4377e40d0698efb69fe509c3ffd65c98164e5c8dfe20a328a85Execute Signatur...110441252021-09-19 7:10:441 day 1 hr ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175516
0x60cef3394b1d17b2ca7e3525294160801123b2c808e5ec7417bebedc942723b6Execute Signatur...110406072021-09-19 4:14:461 day 4 hrs ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175504
0x73b584decb397cba25fee1943c8f9fd0669f7089bda5df2fb554f0955a51b7c5Execute Signatur...110404712021-09-19 4:07:581 day 4 hrs ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175504
0xd6abc0e0e2aa90e91f8700fdc72fdbb261af514c7eee1723c815385cbca3ac7eExecute Signatur...110369272021-09-19 1:09:491 day 7 hrs ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00190504
0x208d3c6c268761bbfdda495fff7cada887b53fdbe5d2a23cb2ad846b1285f326Execute Signatur...110321692021-09-18 21:11:551 day 11 hrs ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175504
0x2d0d643b9c4b1949f51f4dff575aecc1563ae45604d394eaa602aa589b489e0dExecute Signatur...110290952021-09-18 18:38:121 day 14 hrs ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175516
0x9cda9a60821281e94edc19ba75044ce0b701213bd81b6a254248e2afd7c97b45Execute Signatur...110278302021-09-18 17:34:331 day 15 hrs ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00200516
0x6da752edc3ce3f6374a3c1c2d0260f3cc38cb76cd3e2f3ea6969e6c2a19d7286Execute Signatur...110241362021-09-18 14:28:551 day 18 hrs ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00224594
0x3f569d6ae400d7e9b221d076da2ed4c4f76cf611f97cada00d7dfe255f599939Execute Signatur...110175502021-09-18 8:58:022 days 6 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.0017548
0x4785551f918031ab44aee0236bf700dce0a23ee856fba27094ce7d8a55291a45Execute Signatur...110175212021-09-18 8:56:352 days 8 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.0017548
0x23835598b725f430134d380b20fc477ee4c621a2df3858c82e9ec7b00dba1a3eExecute Signatur...110167602021-09-18 8:18:252 days 46 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.0017548
0x43c164bd33e7fbed5cb719353e9a299ebc0ad91609ef4ed61114165fd387095aExecute Signatur...110165572021-09-18 8:08:162 days 56 mins ago0x6f7648d9b6203ff9e6289bbaae3b5738ad27a0b4 IN  0x3a5a320a2f98a3fe39c9040e7e3e9caa7f0d5bd60 BNB0.00175492
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EternalStorageProxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion
/**
 *Submitted for verification at BscScan.com on 2021-03-11
*/

// File: contracts/upgradeability/EternalStorage.sol

pragma solidity 0.4.24;

/**
 * @title EternalStorage
 * @dev This contract holds all the necessary state variables to carry out the storage of any contract.
 */
contract EternalStorage {
    mapping(bytes32 => uint256) internal uintStorage;
    mapping(bytes32 => string) internal stringStorage;
    mapping(bytes32 => address) internal addressStorage;
    mapping(bytes32 => bytes) internal bytesStorage;
    mapping(bytes32 => bool) internal boolStorage;
    mapping(bytes32 => int256) internal intStorage;

}

// File: openzeppelin-solidity/contracts/AddressUtils.sol

pragma solidity ^0.4.24;


/**
 * Utility library of inline functions on addresses
 */
library AddressUtils {

  /**
   * Returns whether the target address is a contract
   * @dev This function will return false if invoked during the constructor of a contract,
   * as the code is not actually created until after the constructor finishes.
   * @param _addr address to check
   * @return whether the target address is a contract
   */
  function isContract(address _addr) internal view returns (bool) {
    uint256 size;
    // XXX Currently there is no better way to check if there is a contract in an address
    // than to check the size of the code at that address.
    // See https://ethereum.stackexchange.com/a/14016/36603
    // for more details about how this works.
    // TODO Check this again before the Serenity release, because all addresses will be
    // contracts then.
    // solium-disable-next-line security/no-inline-assembly
    assembly { size := extcodesize(_addr) }
    return size > 0;
  }

}

// File: contracts/upgradeability/Proxy.sol

pragma solidity 0.4.24;

/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
contract Proxy {
    /**
    * @dev Tells the address of the implementation where every call will be delegated.
    * @return address of the implementation to which it will be delegated
    */
    /* solcov ignore next */
    function implementation() public view returns (address);

    /**
    * @dev Fallback function allowing to perform a delegatecall to the given implementation.
    * This function will return whatever the implementation call returns
    */
    function() public payable {
        // solhint-disable-previous-line no-complex-fallback
        address _impl = implementation();
        require(_impl != address(0));
        assembly {
            /*
                0x40 is the "free memory slot", meaning a pointer to next slot of empty memory. mload(0x40)
                loads the data in the free memory slot, so `ptr` is a pointer to the next slot of empty
                memory. It's needed because we're going to write the return data of delegatecall to the
                free memory slot.
            */
            let ptr := mload(0x40)
            /*
                `calldatacopy` is copy calldatasize bytes from calldata
                First argument is the destination to which data is copied(ptr)
                Second argument specifies the start position of the copied data.
                    Since calldata is sort of its own unique location in memory,
                    0 doesn't refer to 0 in memory or 0 in storage - it just refers to the zeroth byte of calldata.
                    That's always going to be the zeroth byte of the function selector.
                Third argument, calldatasize, specifies how much data will be copied.
                    calldata is naturally calldatasize bytes long (same thing as msg.data.length)
            */
            calldatacopy(ptr, 0, calldatasize)
            /*
                delegatecall params explained:
                gas: the amount of gas to provide for the call. `gas` is an Opcode that gives
                    us the amount of gas still available to execution

                _impl: address of the contract to delegate to

                ptr: to pass copied data

                calldatasize: loads the size of `bytes memory data`, same as msg.data.length

                0, 0: These are for the `out` and `outsize` params. Because the output could be dynamic,
                        these are set to 0, 0 so the output data will not be written to memory. The output
                        data will be read using `returndatasize` and `returdatacopy` instead.

                result: This will be 0 if the call fails and 1 if it succeeds
            */
            let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
            /*

            */
            /*
                ptr current points to the value stored at 0x40,
                because we assigned it like ptr := mload(0x40).
                Because we use 0x40 as a free memory pointer,
                we want to make sure that the next time we want to allocate memory,
                we aren't overwriting anything important.
                So, by adding ptr and returndatasize,
                we get a memory location beyond the end of the data we will be copying to ptr.
                We place this in at 0x40, and any reads from 0x40 will now read from free memory
            */
            mstore(0x40, add(ptr, returndatasize))
            /*
                `returndatacopy` is an Opcode that copies the last return data to a slot. `ptr` is the
                    slot it will copy to, 0 means copy from the beginning of the return data, and size is
                    the amount of data to copy.
                `returndatasize` is an Opcode that gives us the size of the last return data. In this case, that is the size of the data returned from delegatecall
            */
            returndatacopy(ptr, 0, returndatasize)

            /*
                if `result` is 0, revert.
                if `result` is 1, return `size` amount of data from `ptr`. This is the data that was
                copied to `ptr` from the delegatecall return data
            */
            switch result
                case 0 {
                    revert(ptr, returndatasize)
                }
                default {
                    return(ptr, returndatasize)
                }
        }
    }
}

// File: contracts/upgradeability/UpgradeabilityStorage.sol

pragma solidity 0.4.24;

/**
 * @title UpgradeabilityStorage
 * @dev This contract holds all the necessary state variables to support the upgrade functionality
 */
contract UpgradeabilityStorage {
    // Version name of the current implementation
    uint256 internal _version;

    // Address of the current implementation
    address internal _implementation;

    /**
    * @dev Tells the version name of the current implementation
    * @return uint256 representing the name of the current version
    */
    function version() external view returns (uint256) {
        return _version;
    }

    /**
    * @dev Tells the address of the current implementation
    * @return address of the current implementation
    */
    function implementation() public view returns (address) {
        return _implementation;
    }
}

// File: contracts/upgradeability/UpgradeabilityProxy.sol

pragma solidity 0.4.24;




/**
 * @title UpgradeabilityProxy
 * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
 */
contract UpgradeabilityProxy is Proxy, UpgradeabilityStorage {
    /**
    * @dev This event will be emitted every time the implementation gets upgraded
    * @param version representing the version name of the upgraded implementation
    * @param implementation representing the address of the upgraded implementation
    */
    event Upgraded(uint256 version, address indexed implementation);

    /**
    * @dev Upgrades the implementation address
    * @param version representing the version name of the new implementation to be set
    * @param implementation representing the address of the new implementation to be set
    */
    function _upgradeTo(uint256 version, address implementation) internal {
        require(_implementation != implementation);

        // This additional check verifies that provided implementation is at least a contract
        require(AddressUtils.isContract(implementation));

        // This additional check guarantees that new version will be at least greater than the privios one,
        // so it is impossible to reuse old versions, or use the last version twice
        require(version > _version);

        _version = version;
        _implementation = implementation;
        emit Upgraded(version, implementation);
    }
}

// File: contracts/upgradeability/UpgradeabilityOwnerStorage.sol

pragma solidity 0.4.24;

/**
 * @title UpgradeabilityOwnerStorage
 * @dev This contract keeps track of the upgradeability owner
 */
contract UpgradeabilityOwnerStorage {
    // Owner of the contract
    address internal _upgradeabilityOwner;

    /**
    * @dev Tells the address of the owner
    * @return the address of the owner
    */
    function upgradeabilityOwner() public view returns (address) {
        return _upgradeabilityOwner;
    }

    /**
    * @dev Sets the address of the owner
    */
    function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal {
        _upgradeabilityOwner = newUpgradeabilityOwner;
    }
}

// File: contracts/upgradeability/OwnedUpgradeabilityProxy.sol

pragma solidity 0.4.24;



/**
 * @title OwnedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
contract OwnedUpgradeabilityProxy is UpgradeabilityOwnerStorage, UpgradeabilityProxy {
    /**
    * @dev Event to show ownership has been transferred
    * @param previousOwner representing the address of the previous owner
    * @param newOwner representing the address of the new owner
    */
    event ProxyOwnershipTransferred(address previousOwner, address newOwner);

    /**
    * @dev the constructor sets the original owner of the contract to the sender account.
    */
    constructor() public {
        setUpgradeabilityOwner(msg.sender);
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyUpgradeabilityOwner() {
        require(msg.sender == upgradeabilityOwner());
        /* solcov ignore next */
        _;
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param newOwner The address to transfer ownership to.
    */
    function transferProxyOwnership(address newOwner) external onlyUpgradeabilityOwner {
        require(newOwner != address(0));
        emit ProxyOwnershipTransferred(upgradeabilityOwner(), newOwner);
        setUpgradeabilityOwner(newOwner);
    }

    /**
    * @dev Allows the upgradeability owner to upgrade the current version of the proxy.
    * @param version representing the version name of the new implementation to be set.
    * @param implementation representing the address of the new implementation to be set.
    */
    function upgradeTo(uint256 version, address implementation) public onlyUpgradeabilityOwner {
        _upgradeTo(version, implementation);
    }

    /**
    * @dev Allows the upgradeability owner to upgrade the current version of the proxy and call the new implementation
    * to initialize whatever is needed through a low level call.
    * @param version representing the version name of the new implementation to be set.
    * @param implementation representing the address of the new implementation to be set.
    * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
    * signature of the implementation to be called with the needed payload
    */
    function upgradeToAndCall(uint256 version, address implementation, bytes data)
        external
        payable
        onlyUpgradeabilityOwner
    {
        upgradeTo(version, implementation);
        // solhint-disable-next-line avoid-call-value
        require(address(this).call.value(msg.value)(data));
    }
}

// File: contracts/upgradeability/EternalStorageProxy.sol

pragma solidity 0.4.24;



/**
 * @title EternalStorageProxy
 * @dev This proxy holds the storage of the token contract and delegates every call to the current implementation set.
 * Besides, it allows to upgrade the token's behaviour towards further implementations, and provides basic
 * authorization control functionalities
 */
// solhint-disable-next-line no-empty-blocks
contract EternalStorageProxy is EternalStorage, OwnedUpgradeabilityProxy {}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"version","type":"uint256"},{"name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeabilityOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"version","type":"uint256"},{"name":"implementation","type":"address"},{"name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"version","type":"uint256"},{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]

60806040526100163364010000000061001b810204565b61003d565b60068054600160a060020a031916600160a060020a0392909216919091179055565b6103e08061004c6000396000f3006080604052600436106100775763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ad06d1681146100c257806354fd4d50146100e85780635c60da1b1461010f5780636fde820214610140578063a9c45fcb14610155578063f1739cae14610179575b600061008161019a565b9050600160a060020a038116151561009857600080fd5b60405136600082376000803683855af43d82016040523d6000833e8080156100be573d83f35b3d83fd5b3480156100ce57600080fd5b506100e6600435600160a060020a03602435166101a9565b005b3480156100f457600080fd5b506100fd6101d3565b60408051918252519081900360200190f35b34801561011b57600080fd5b5061012461019a565b60408051600160a060020a039092168252519081900360200190f35b34801561014c57600080fd5b506101246101d9565b6100e6600480359060248035600160a060020a0316916044359182019101356101e8565b34801561018557600080fd5b506100e6600160a060020a0360043516610250565b600854600160a060020a031690565b6101b16101d9565b600160a060020a031633146101c557600080fd5b6101cf82826102d8565b5050565b60075490565b600654600160a060020a031690565b6101f06101d9565b600160a060020a0316331461020457600080fd5b61020e84846101a9565b30600160a060020a03163483836040518083838082843782019150509250505060006040518083038185875af192505050151561024a57600080fd5b50505050565b6102586101d9565b600160a060020a0316331461026c57600080fd5b600160a060020a038116151561028157600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96102aa6101d9565b60408051600160a060020a03928316815291841660208301528051918290030190a16102d58161037d565b50565b600854600160a060020a03828116911614156102f357600080fd5b6102fc816103ac565b151561030757600080fd5b600754821161031557600080fd5b600782905560088054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b11905600a165627a7a723058205efa0945e5d067ec1c50cbe1d8f911c02984b89b258d789a08c1c223e98176890029

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.