Contract 0x51849F05090b222FFc329DC8825de0D7e26F84A1 2

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x96291dcc3191772e52b83b9b5ef962a15a232c0f01f651db93861fec6d0c8d83Relay Tokens110727872021-09-20 7:17:382 hrs 29 mins ago0x7764b7076d58d6248f5f5ca80ccb4fc66f10fa74 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.325 BNB0.000549925
0x07673064a4e072d832ca97bf49c18c5f2eea77557f6716173f9075c593c8cce8Relay Tokens110695832021-09-20 4:37:245 hrs 9 mins ago0x7764b7076d58d6248f5f5ca80ccb4fc66f10fa74 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.244 BNB0.000549925
0x31358416bcb933d3f7307ef8cf665dfed677ecc715a1c64aefd8394195927135Relay Tokens110646542021-09-20 0:30:569 hrs 16 mins ago0x7a5c76d4c9d255b1d6eb595f67dda2ddbba0b68e IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.4966 BNB0.000549925
0x6ea0f83f401b2fa0aafcd427db04608f51e3bcdf97a0749ffc21a53889a22639Relay Tokens110643652021-09-20 0:16:299 hrs 30 mins ago0x7764b7076d58d6248f5f5ca80ccb4fc66f10fa74 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.31 BNB0.000624925
0xccdb0ef375d5e10db1efbcb68413867f997d6ed837121540a1b38a2cd8f4cf55Relay Tokens110637912021-09-19 23:47:459 hrs 59 mins ago0x7a5c76d4c9d255b1d6eb595f67dda2ddbba0b68e IN  0x51849f05090b222ffc329dc8825de0d7e26f84a11.9874 BNB0.000549925
0xe2637b84522760bd3ce779f7afa4529234bf2b5e313e7f7b99aaf65346f75141Relay Tokens110530982021-09-19 14:53:0018 hrs 54 mins ago0x54a3cb055a5117156e8ce698f584702e5bbf8d82 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.45 BNB0.000549925
0x73192fdb2b2f6fbb9ef2b9ab25dd430e8fbed1674796518331caaa32d4736d58Relay Tokens110504732021-09-19 12:41:4521 hrs 5 mins ago0x3d81b68b655e1a0d50a970768e6ec6b5659f0de5 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.02 BNB0.000549925
0xc511f7e65569834b5ced969e03fdd69c955d99e9b6388e18529310cc1a354d31Relay Tokens110502022021-09-19 12:28:1221 hrs 19 mins ago0x3d81b68b655e1a0d50a970768e6ec6b5659f0de5 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.05 BNB0.000624925
0x592ce2e2ddcf546286e576548c0a81f8c44e5c8261b8546d76204db2ee602dccRelay Tokens110324882021-09-18 21:27:521 day 12 hrs ago0x22fa3239c4bf43d05cc587ff40ea3ba5841c6709 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a12.439428492726551 BNB0.000549925
0x39ba196557ddad4cb0fb191efc4bfe5584415ee007d48c64418726507efac940Relay Tokens110284112021-09-18 18:03:571 day 15 hrs ago0x2329a89af284bfcacc2755bf9b1490b19ca0d8c7 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.47326 BNB0.000549925
0x4f9b005c23a6b831990d59a88240c5e23ad3faab048dbaefe9093f9789eed6edRelay Tokens110283372021-09-18 18:00:001 day 15 hrs ago0x2329a89af284bfcacc2755bf9b1490b19ca0d8c7 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.01 BNB0.000549925
0xeea60dfd0b3aedaf01f3a2e3ed89b2f8a64e84441d543826db1816fb16c70fb9Relay Tokens110280022021-09-18 17:43:091 day 16 hrs ago0x69a93be937935f2f08c1f1c12ff57b399ac4009a IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.25 BNB0.000549865
0xe8b5da9f678c3b5f60042d259f37dc8ffff378094840cc58a721e1ed66f51b01Relay Tokens110231812021-09-18 13:40:001 day 20 hrs ago0xbab00afe40fa1c11638f04cb604fee57debc99a5 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.23 BNB0.000549925
0x513a6afef5a81ede31544cf25acd9029ed9a434035596984b789ade5af87a366Relay Tokens110129272021-09-18 5:05:462 days 4 hrs ago0x995ed4769ae15de8c2baa9763df56c8495702cc0 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.4 BNB0.000549925
0xdff4c4f9ba2e8daeb7c97b8183230f24f3a1f4fd2d6af470d0d3a8faf43b4974Relay Tokens110127062021-09-18 4:54:432 days 4 hrs ago0x995ed4769ae15de8c2baa9763df56c8495702cc0 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.006 BNB0.000624925
0x5cf78ff765cbae8ac8f741b230fe40d5ef3cde97cc5a90a03166687d8778df74Relay Tokens110052542021-09-17 22:41:552 days 11 hrs ago0x22fa3239c4bf43d05cc587ff40ea3ba5841c6709 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a12.45208159687352 BNB0.000549925
0xcd9a2a17286056893f4859739022e6489ab166da9afa2b30ffd32d419825ab86Relay Tokens110014502021-09-17 19:31:402 days 14 hrs ago0xb426ffc8c1b655da3135eaf2c1f019f56dbad096 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.0013 BNB0.000549925
0x98a0f3f91d0c8b6017ff0dbfa84e37b5197ebc95b1893b1df77a10585b07c77bRelay Tokens110001212021-09-17 18:25:132 days 15 hrs ago0x71a70ba04c92d28b5927e73fc093881100b5860c IN  0x51849f05090b222ffc329dc8825de0d7e26f84a11.56 BNB0.000549865
0xd0cced6511c68ce7fcc959dbb9c650f8a774fa3426b8c15a4944ddbb2cacbcf2Relay Tokens109921032021-09-17 11:43:352 days 22 hrs ago0xd0ed6aee5749edb74b0eac4688dfcfdab84f16cf IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.646 BNB0.000549925
0x694cc8f4e7c93c55b426a608f7afe2934fb9e7d11df6f0030ebb3b2f0cab155dRelay Tokens109905932021-09-17 10:28:032 days 23 hrs ago0xb4a8e5f28eea7d5c54a6adfdcf2815a84f6e690e IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.48 BNB0.000624925
0xb578c48c9b91edce638b61d5813eec0cecfeaf84aa1aa4ad50a6aa9a2725a498Relay Tokens109625572021-09-16 11:03:373 days 22 hrs ago0x0eefce704ebf765ec1931ff4602e690d868651a7 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.217038700672063 BNB0.000549925
0xf8f7f46bb7f9c9c576a1a013d22dff94b0edffda9eceb56f2842a88a046e8773Relay Tokens109541712021-09-16 4:03:124 days 5 hrs ago0xf6c6e3c296195a8ed602b7a926d25b00fbf3f3a9 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a11.32176169 BNB0.000549865
0xe56073a2cdfff830afe38c105f9d7cc2836ab4795f4ec323790794e55eae3ac6Relay Tokens109502112021-09-16 0:45:084 days 9 hrs ago0xd0ed6aee5749edb74b0eac4688dfcfdab84f16cf IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.242 BNB0.000624925
0x98f76fedb843bd3a40518bba99800a1e58bb1be295d60415074538b927c3fdc6Relay Tokens109484762021-09-15 23:18:234 days 10 hrs ago0xaaaf9ea89e68250736cdbdcf21cb6581faaaab39 IN  0x51849f05090b222ffc329dc8825de0d7e26f84a10.5 BNB0.000549925
0x9beb3bd6391911bf40b11fda5c09cabfc71495c1e939d9c64a5e58f1ccdd4bbcRelay Tokens109471102021-09-15 22:10:054 days 11 hrs ago0x8f39bd047ba7bb1e4bd5e6757848ea922c5d9a2f IN  0x51849f05090b222ffc329dc8825de0d7e26f84a11 BNB0.000549925
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1f97c862f9776dbd8abda602bded49dc936bb737f671526740a4340a0d13f094110745442021-09-20 8:45:311 hr 1 min ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10xd602bc2aab90d81858d6240b39a9c38bfabe494e0.507608057896215 BNB
0x1f97c862f9776dbd8abda602bded49dc936bb737f671526740a4340a0d13f094110745442021-09-20 8:45:311 hr 1 min ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.002550794260785 BNB
0x92814fb42b6343cd4aab796c2498d40eb794bfeab34985471bdb5d5c8c770298110655392021-09-20 1:15:118 hrs 32 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10xef7834e49c67565e205fce25031cf9a6ba92e7410.014835189381455769 BNB
0x92814fb42b6343cd4aab796c2498d40eb794bfeab34985471bdb5d5c8c770298110655392021-09-20 1:15:118 hrs 32 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.000074548690359074 BNB
0xd62bea0470cf955e227bc6fa95e2022b9e8b2075cda104d01f6015b03e23cf21110644412021-09-20 0:20:179 hrs 27 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10x7a5c76d4c9d255b1d6eb595f67dda2ddbba0b68e2.164515453096988136 BNB
0xd62bea0470cf955e227bc6fa95e2022b9e8b2075cda104d01f6015b03e23cf21110644412021-09-20 0:20:179 hrs 27 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.010876962075864261 BNB
0x88196b6b6c754c213bff05e36bb82db231c93a5016ab4356f448819388843627110544352021-09-19 15:59:5317 hrs 47 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10x0b683ceddba5e58949a323e4f8b739d0dfe5535f1.199781303659604016 BNB
0x88196b6b6c754c213bff05e36bb82db231c93a5016ab4356f448819388843627110544352021-09-19 15:59:5317 hrs 47 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.006029051777183939 BNB
0x2221fa0cee219f09cc69bef18ed0ca2d98b83046aeb80fcb7bd180363c5eb064110538382021-09-19 15:30:0218 hrs 17 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10x7a5c76d4c9d255b1d6eb595f67dda2ddbba0b68e1.974885836179355886 BNB
0x2221fa0cee219f09cc69bef18ed0ca2d98b83046aeb80fcb7bd180363c5eb064110538382021-09-19 15:30:0218 hrs 17 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.009924049428036964 BNB
0xc03e06e71121a3117e6f5b70b0bae97ad5bc983fa0d5572fe60d3fdf6a236e80110535732021-09-19 15:16:4518 hrs 30 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10x9adc0d89084c6d6721aa3cb765f015a541b35d790.000999228888374257 BNB
0xc03e06e71121a3117e6f5b70b0bae97ad5bc983fa0d5572fe60d3fdf6a236e80110535732021-09-19 15:16:4518 hrs 30 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.000005021250695348 BNB
0xeb9b975dc61aae0135f3c993d6764f903ed253b0881876b5b55debd4d3fef460110502392021-09-19 12:30:0321 hrs 17 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10xd602bc2aab90d81858d6240b39a9c38bfabe494e0.5080991977 BNB
0xeb9b975dc61aae0135f3c993d6764f903ed253b0881876b5b55debd4d3fef460110502392021-09-19 12:30:0321 hrs 17 mins ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.0025532623 BNB
0x3cb3fee28d96d4377e40d0698efb69fe509c3ffd65c98164e5c8dfe20a328a85110441252021-09-19 7:10:441 day 2 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10xe29a95625daa1589ead598a41d941cc2c963efc90.124295082305441661 BNB
0x3cb3fee28d96d4377e40d0698efb69fe509c3ffd65c98164e5c8dfe20a328a85110441252021-09-19 7:10:441 day 2 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.000624598403544932 BNB
0x60cef3394b1d17b2ca7e3525294160801123b2c808e5ec7417bebedc942723b6110406072021-09-19 4:14:461 day 5 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10xb4a8e5f28eea7d5c54a6adfdcf2815a84f6e690e0.020191686587170798 BNB
0x60cef3394b1d17b2ca7e3525294160801123b2c808e5ec7417bebedc942723b6110406072021-09-19 4:14:461 day 5 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.000101465761744576 BNB
0x73b584decb397cba25fee1943c8f9fd0669f7089bda5df2fb554f0955a51b7c5110404712021-09-19 4:07:581 day 5 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10xb4a8e5f28eea7d5c54a6adfdcf2815a84f6e690e0.012404698855889416 BNB
0x73b584decb397cba25fee1943c8f9fd0669f7089bda5df2fb554f0955a51b7c5110404712021-09-19 4:07:581 day 5 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.000062335170130097 BNB
0xd6abc0e0e2aa90e91f8700fdc72fdbb261af514c7eee1723c815385cbca3ac7e110369272021-09-19 1:09:491 day 8 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10x96661c1256c82495201c58549dca0a2b27fd507f0.00242061022412421 BNB
0xd6abc0e0e2aa90e91f8700fdc72fdbb261af514c7eee1723c815385cbca3ac7e110369272021-09-19 1:09:491 day 8 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.000012163870472985 BNB
0x208d3c6c268761bbfdda495fff7cada887b53fdbe5d2a23cb2ad846b1285f326110321692021-09-18 21:11:551 day 12 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10xd602bc2aab90d81858d6240b39a9c38bfabe494e0.609534683839 BNB
0x208d3c6c268761bbfdda495fff7cada887b53fdbe5d2a23cb2ad846b1285f326110321692021-09-18 21:11:551 day 12 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a1 0xe4649dd2615240d2458b8e1983a091360997f7da0.003062988361 BNB
0x2d0d643b9c4b1949f51f4dff575aecc1563ae45604d394eaa602aa589b489e0d110290952021-09-18 18:38:121 day 15 hrs ago 0x51849f05090b222ffc329dc8825de0d7e26f84a10x2329a89af284bfcacc2755bf9b1490b19ca0d8c70.467870374516138985 BNB
[ Download CSV Export 
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-05-16
*/

// 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.