Contract 0xD925002f88279776dEB4907bA7F8dC173e2EA7a7 1

Contract Overview

Balance:
0 Ether

Token:
Txn Hash
Method
Block
From
To
Value
0xfe5bb12444b6a4984877793307bd6c316e40184da394a779a20af182d21de8a3Relay Tokens108680132022-06-17 13:11:5317 days 11 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00845265 50
0xbb07d8fa4df1a076c4dc71897b00005411f1151e6ac345b1b307cfdf4b9eca04Relay Tokens108679872022-06-17 13:05:2317 days 11 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.0003381 2.00000001
0x841a3fbdf88fea3337e26f326e61221137b23d64055243db8aec1838f4e5cff3Relay Tokens108679642022-06-17 12:59:3817 days 11 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018617 1.00000001
0xe03dfbc5e9ee195a1760b7c4614681dd1909d9d3b2398eec392266692a9a1cc9Relay Tokens105669452022-04-25 17:01:2370 days 7 hrs ago0x3b11ab56fb4b3f73d726ba6a1a697230fc07e8a8 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018615 1.00000001
0x0783681f851fab7088b529c5148290b2730202e2b8ef1b2333d71bc2a72f8ffeRelay Tokens105545552022-04-23 13:14:4172 days 11 hrs ago0x3b11ab56fb4b3f73d726ba6a1a697230fc07e8a8 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00020476 1.10000001
0xa5983973b384dcb7699101f232ae9f526667ddb18cd77d15f44f0870c65643edRelay Tokens104242052022-03-31 18:58:5995 days 5 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018617 1.00000001
0xa30e7e77a55dabc9e75a9ec47e5cef72d85304ec09060768f0702f1865c5f38aRelay Tokens103720772022-03-22 17:30:49104 days 7 hrs ago0x15bd5349dee5b80fc9ff2556d12232dbd527ec37 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018617 1.00000001
0xd13612639d94666cf17270665e741f78910853abeaf275259d0ef18a29be7fe3Relay Tokens103490452022-03-18 13:10:19108 days 11 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00023296 1.37786363
0xe8073ac27b38f950a3b147547cebcf8251317f50718b01581b167e24e38de48bRelay Tokens103490262022-03-18 13:05:34108 days 11 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00025485 1.36887169
0x062bc2e6a518976c4ba07e50023649590ccf08c3bc904662de6687a2eeae678fRelay Tokens96299802021-11-12 15:49:55234 days 9 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00016427 1.00000001
0x52f6921856872b93412383f8ff7be967d7dbfff9e4b7270daff4fcc005b2e4baRelay Tokens96299602021-11-12 15:44:55234 days 9 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018617 1.00000001
0xff1c8f4e049ecb1a566b57776a51b3c516a19132aa9c72b076853fcbce078d3eRelay Tokens96128012021-11-09 16:07:57237 days 8 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018137 1.00000001
0x9e247add4ca972a4e1b33b8b5b40fa5301b8c869ade68fbea0bf56ef1f1c1631Relay Tokens95968622021-11-06 21:27:46240 days 3 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018137 1
0x814f8ca82a606ddf8091ada286c84f61a67d0af89539a474b91f471929e2c43bRelay Tokens94274912021-10-08 5:21:50269 days 19 hrs ago0xde63b0e3548d8bedfd3999331051ae1f23e4dfbd IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018135 1.00000001
0x368b64e8b3687db2e34b580f259a81f8fcea8c13832956090f704b73ae8c157dRelay Tokens92649772021-09-09 23:10:37298 days 1 hr ago0xba7acca20449db21cf8f0b6394177e558b173a9d IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00009611 1
0x6cca184757b2e23747430655d0cf3e29f79db653d538df3fe7b391202b3b78e5Relay Tokens92649682021-09-09 23:08:22298 days 1 hr ago0xba7acca20449db21cf8f0b6394177e558b173a9d IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00009611 1
0xa0325f7eb46bb76b27cea599430891f970946835a09e72263e0e9d3d6b6efa62Relay Tokens92649622021-09-09 23:06:52298 days 1 hr ago0xba7acca20449db21cf8f0b6394177e558b173a9d IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00009611 1
0x4143e87107a8a376349004c6a6a4a183dbae03aee42e86c4da7c8a46584cecaeRelay Tokens92649302021-09-09 22:58:51298 days 1 hr ago0xba7acca20449db21cf8f0b6394177e558b173a9d IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00009611 1
0x64705637fc4293af31b56d6acec9b0d675d634d39405d2f5c81a9767d433c668Relay Tokens91908412021-08-27 22:48:37311 days 2 hrs ago0xed0f0c4de6150b7e3262e537d9691fc750b2ba23 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00018616 1
0xae9ea401caa6e2091eee25568ccee296a4c9c7e18ea53343da2a7172dedd0c88Relay Tokens91700952021-08-24 8:14:20314 days 16 hrs ago0x826055046f6abd7ae0d45de76b364e51c4e7dffe IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00019097 1
0x07092d37abec6e6a9b34d7a8b1e243275aea0653d5df675dc1eac723178a24afRelay Tokens91488422021-08-20 15:29:31318 days 9 hrs ago0x826055046f6abd7ae0d45de76b364e51c4e7dffe IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00017387 1
0x656898269f8eb793d0eec6c7bb5c000c9ba7ae70fe90ee6162b3aed7a015a15eRelay Tokens91488262021-08-20 15:25:31318 days 9 hrs ago0x826055046f6abd7ae0d45de76b364e51c4e7dffe IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00019096 1
0xa46a21a171f8e9e7c8286057b25a04ec69f166deaeb5723acdacf3f3c054cd44Relay Tokens91396852021-08-19 1:19:37319 days 23 hrs ago0xf20451084935435949291f8288d7896f6fe36ab3 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.00009607 1
0x120c2e232c18cabe74d906724f6f5916a3b8dd565bb7e85ed1d3dcba436ad2a0Relay Tokens90914322021-08-10 16:09:34328 days 8 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.000164271.00000123
0xa2bf444757642362c37c229be0669349571a14a62e56eebd9682011013ecc6f3Relay Tokens90891562021-08-10 6:39:42328 days 18 hrs ago0x122ec44c3fc85d3f1ddd72d5fe940b7d61534465 IN  0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether0.000186171
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xfe5bb12444b6a4984877793307bd6c316e40184da394a779a20af182d21de8a3108680132022-06-17 13:11:5317 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0xfe5bb12444b6a4984877793307bd6c316e40184da394a779a20af182d21de8a3108680132022-06-17 13:11:5317 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xe0d8d7b8273de14e628d2f2a4a10f719f898450a0 Ether
0xfe5bb12444b6a4984877793307bd6c316e40184da394a779a20af182d21de8a3108680132022-06-17 13:11:5317 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0x5f5ba6cf7612032be76b10dc1a317fbf79e1ccd10 Ether
0xbb07d8fa4df1a076c4dc71897b00005411f1151e6ac345b1b307cfdf4b9eca04108679872022-06-17 13:05:2317 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0xbb07d8fa4df1a076c4dc71897b00005411f1151e6ac345b1b307cfdf4b9eca04108679872022-06-17 13:05:2317 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xe0d8d7b8273de14e628d2f2a4a10f719f898450a0 Ether
0xbb07d8fa4df1a076c4dc71897b00005411f1151e6ac345b1b307cfdf4b9eca04108679872022-06-17 13:05:2317 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0x5f5ba6cf7612032be76b10dc1a317fbf79e1ccd10 Ether
0x841a3fbdf88fea3337e26f326e61221137b23d64055243db8aec1838f4e5cff3108679642022-06-17 12:59:3817 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0x841a3fbdf88fea3337e26f326e61221137b23d64055243db8aec1838f4e5cff3108679642022-06-17 12:59:3817 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xe0d8d7b8273de14e628d2f2a4a10f719f898450a0 Ether
0x841a3fbdf88fea3337e26f326e61221137b23d64055243db8aec1838f4e5cff3108679642022-06-17 12:59:3817 days 11 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0x5f5ba6cf7612032be76b10dc1a317fbf79e1ccd10 Ether
0x1224814faa3b1ea0f1927cb46f458a16465cdfd5f9818634f85335f8dd74c4e4108662772022-06-17 5:57:0217 days 19 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xe0d8d7b8273de14e628d2f2a4a10f719f898450a0 Ether
0x1224814faa3b1ea0f1927cb46f458a16465cdfd5f9818634f85335f8dd74c4e4108662772022-06-17 5:57:0217 days 19 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0x1224814faa3b1ea0f1927cb46f458a16465cdfd5f9818634f85335f8dd74c4e4108662772022-06-17 5:57:0217 days 19 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0x1224814faa3b1ea0f1927cb46f458a16465cdfd5f9818634f85335f8dd74c4e4108662772022-06-17 5:57:0217 days 19 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0x5f5ba6cf7612032be76b10dc1a317fbf79e1ccd10 Ether
0x1224814faa3b1ea0f1927cb46f458a16465cdfd5f9818634f85335f8dd74c4e4108662772022-06-17 5:57:0217 days 19 hrs ago 0xd4075fb57fcf038bfc702c915ef9592534bed5c1 0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether
0x98a3eaf78790e53b0b4ad1c875ca098a0eb6b6dc298bd52facad3d7eea443bb9106041682022-05-02 4:55:0663 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xe0d8d7b8273de14e628d2f2a4a10f719f898450a0 Ether
0x98a3eaf78790e53b0b4ad1c875ca098a0eb6b6dc298bd52facad3d7eea443bb9106041682022-05-02 4:55:0663 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0x98a3eaf78790e53b0b4ad1c875ca098a0eb6b6dc298bd52facad3d7eea443bb9106041682022-05-02 4:55:0663 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0x98a3eaf78790e53b0b4ad1c875ca098a0eb6b6dc298bd52facad3d7eea443bb9106041682022-05-02 4:55:0663 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0x5f5ba6cf7612032be76b10dc1a317fbf79e1ccd10 Ether
0x98a3eaf78790e53b0b4ad1c875ca098a0eb6b6dc298bd52facad3d7eea443bb9106041682022-05-02 4:55:0663 days 20 hrs ago 0xd4075fb57fcf038bfc702c915ef9592534bed5c1 0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether
0x84934896669c2d4180a2262368a05a239ae91ce0f9b48977febeff707e1b68e9106041322022-05-02 4:46:0463 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xe0d8d7b8273de14e628d2f2a4a10f719f898450a0 Ether
0x84934896669c2d4180a2262368a05a239ae91ce0f9b48977febeff707e1b68e9106041322022-05-02 4:46:0463 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0x84934896669c2d4180a2262368a05a239ae91ce0f9b48977febeff707e1b68e9106041322022-05-02 4:46:0463 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
0x84934896669c2d4180a2262368a05a239ae91ce0f9b48977febeff707e1b68e9106041322022-05-02 4:46:0463 days 20 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0x5f5ba6cf7612032be76b10dc1a317fbf79e1ccd10 Ether
0x84934896669c2d4180a2262368a05a239ae91ce0f9b48977febeff707e1b68e9106041322022-05-02 4:46:0463 days 20 hrs ago 0xd4075fb57fcf038bfc702c915ef9592534bed5c1 0xd925002f88279776deb4907ba7f8dc173e2ea7a70 Ether
0xe03dfbc5e9ee195a1760b7c4614681dd1909d9d3b2398eec392266692a9a1cc9105669452022-04-25 17:01:2370 days 7 hrs ago 0xd925002f88279776deb4907ba7f8dc173e2ea7a7 0xd4075fb57fcf038bfc702c915ef9592534bed5c10 Ether
[ 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 Etherscan.io on 2020-07-19
*/

// 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 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"}]

60806040526100163364010000000061001b810204565b61003d565b60068054600160a060020a031916600160a060020a0392909216919091179055565b6103e08061004c6000396000f3006080604052600436106100775763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ad06d1681146100c257806354fd4d50146100e85780635c60da1b1461010f5780636fde820214610140578063a9c45fcb14610155578063f1739cae14610179575b600061008161019a565b9050600160a060020a038116151561009857600080fd5b60405136600082376000803683855af43d82016040523d6000833e8080156100be573d83f35b3d83fd5b3480156100ce57600080fd5b506100e6600435600160a060020a03602435166101a9565b005b3480156100f457600080fd5b506100fd6101d3565b60408051918252519081900360200190f35b34801561011b57600080fd5b5061012461019a565b60408051600160a060020a039092168252519081900360200190f35b34801561014c57600080fd5b506101246101d9565b6100e6600480359060248035600160a060020a0316916044359182019101356101e8565b34801561018557600080fd5b506100e6600160a060020a0360043516610250565b600854600160a060020a031690565b6101b16101d9565b600160a060020a031633146101c557600080fd5b6101cf82826102d8565b5050565b60075490565b600654600160a060020a031690565b6101f06101d9565b600160a060020a0316331461020457600080fd5b61020e84846101a9565b30600160a060020a03163483836040518083838082843782019150509250505060006040518083038185875af192505050151561024a57600080fd5b50505050565b6102586101d9565b600160a060020a0316331461026c57600080fd5b600160a060020a038116151561028157600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96102aa6101d9565b60408051600160a060020a03928316815291841660208301528051918290030190a16102d58161037d565b50565b600854600160a060020a03828116911614156102f357600080fd5b6102fc816103ac565b151561030757600080fd5b600754821161031557600080fd5b600782905560088054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b11905600a165627a7a7230582078bac02704e0c07980df83f6082a0453ef0e0259d68860b6e0f2c5dc0d11c56c0029

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.