Contract 0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016 3

 
Txn Hash Method
Block
From
To
Value
0x0cc971c9fccc9107fabd3f04fa767fbc83744a0f4d6050f7bd05980e842bd48cExecute Signatur...(pending)2021-09-07 20:48:269 days 23 hrs ago0x32089aa1b87c13c8c6e5d77437e58351657b094f IN POA Network: xDAI Bridge0 Ether(Pending)(Pending)
0xeaa9f37c3d93e3146054b7f2a2003c16fc216087ff22aa1ac1bd7465f7a727b6Execute Signatur...(pending)2021-09-05 4:59:1712 days 15 hrs ago0xd4a27b0200d608a537efa56e41c1f317d7053068 IN POA Network: xDAI Bridge0 Ether(Pending)(Pending)
0xfc3c5762f95d2d2712175756f2e8cdf45b25b3d7e96317166269c6ec366de575Execute Signatur...(pending)2021-09-05 2:41:0412 days 17 hrs ago0x5f2e4803393f55d25cb7037f11eef8432104bed7 IN POA Network: xDAI Bridge0 Ether(Pending)(Pending)
0x4c2ac840505c0320a32769e20e0d4ec9f7840b61fc31d417c66134a440bb7978Execute Signatur...132453242021-09-17 20:10:0821 mins ago0xe588ccbfdb206bde7b1288c7a46b8a33c9f8a363 IN  POA Network: xDAI Bridge0 Ether0.013607267095 84.307204389
0x73f5901658bbe4aebac531944973484ab47b095976230226b020bae08c26d41eExecute Signatur...132449872021-09-17 18:55:511 hr 36 mins ago0xc3de23dc565df629f1422f7db0e5504d21f4fd65 IN  POA Network: xDAI Bridge0 Ether0.012154145419 75.304027976
0x48cba4e5c90cc6a048a6ec77ed1f8964e7eeee2156475d224df6c815f844fcdfExecute Signatur...132449112021-09-17 18:40:341 hr 51 mins ago0x28fd732bdc2d9e8bd09f0edbb19b4d458344947b IN  POA Network: xDAI Bridge0 Ether0.01231702526 85.356478891
0x1686502aa0362c4cfcc733b213108cc655200097f7a77f46d4284bdd3b713850Execute Signatur...132445552021-09-17 17:19:393 hrs 12 mins ago0x0cb93d500d1d5587923978d6dba8c0f2cd5535dd IN  POA Network: xDAI Bridge0 Ether0.01522964585 94.366071112
0x4124a8cbcaed9e96e9385dbe26e3147527a356b07a14d1f4852b99bcc1ee5cccExecute Signatur...132440492021-09-17 15:34:544 hrs 57 mins ago0x4e7bf3694962fc482a16d60fd78f99db9c4c52b0 IN  POA Network: xDAI Bridge0 Ether0.02164515150
0xfa20f37be1eb7d25285fc9e4557d667547fa0639bd0dff90d049e2a940e41205Execute Signatur...132440492021-09-17 15:34:544 hrs 57 mins ago0x4e7bf3694962fc482a16d60fd78f99db9c4c52b0 IN  POA Network: xDAI Bridge0 Ether0.02420835150
0x70637fd6bc9ce9d701c86eb52c9123d492399f15777c8eca96de5ad37f2675e9Execute Signatur...132427442021-09-17 10:47:319 hrs 44 mins ago0x8341b33ef2c9191758e7111cf98911bce4bd9c4f IN  POA Network: xDAI Bridge0 Ether0.01033249824 64.012800954
0xaf8e29617862a3d7e04cd2eab017b569eca4525933a085b33eff97f20adadfc3Relay Tokens132426022021-09-17 10:13:1810 hrs 18 mins ago0x97df8e364d2046afde3fd4cd393b396dfff8ce5c IN  POA Network: xDAI Bridge0 Ether0.004743649599 56.084767079
0xecf2ce7b7e511a66d7ad7d3b5e1ab31a6f876c1773c3a857688cb297d5b8a296Execute Signatur...132421282021-09-17 8:27:1112 hrs 4 mins ago0x6abc5052ad88df17ed63df220205d483fa9439ff IN  POA Network: xDAI Bridge0 Ether0.016720394794 103.610767301
0xc260731931dd0d361eab69f406b33e44c923219f6699bf2c42f1553525430688Execute Signatur...132421172021-09-17 8:23:1612 hrs 8 mins ago0x72e3c253dd7470ad19f8619dde975063f24bf74d IN  POA Network: xDAI Bridge0 Ether0.009786285275 60.624347379
0x54abffc3b3c33ccaf8308298ac70d1f2eca5a6cbb109436667e96cec184cc443Execute Signatur...132418952021-09-17 7:33:3612 hrs 58 mins ago0x458a883c12a1fd16cfbbb4f6085ba8933fbfd1ad IN  POA Network: xDAI Bridge0 Ether0.009039128 56
0xd07eda22aa1b8f2f84a09f71ecbf9b4182b924fa3141e10acd02b9fa38525d37Execute Signatur...132418782021-09-17 7:29:5113 hrs 2 mins ago0xab97a04454c00a3988d64c5a2e0ec8b967936c75 IN  POA Network: xDAI Bridge0 Ether0.007811876082 48.39682109
0x96f99baea80ea6d73bf3fae4b58a1618de202686b6f812ec453a06308bbef3eeExecute Signatur...132410702021-09-17 4:24:3016 hrs 7 mins ago0x28fd732bdc2d9e8bd09f0edbb19b4d458344947b IN  POA Network: xDAI Bridge0 Ether0.008677328077 60.133526982
0xe3b000d9165e2a11e0bc04dfb8930ca5b18f726a4799e61fb1acb219dece99a2Execute Signatur...132406892021-09-17 2:53:2017 hrs 38 mins ago0x5586210f7f7d5ed9c5c7bd3f43fa9e25534500f2 IN  POA Network: xDAI Bridge0 Ether0.011417305269 63.966436414
0x1ec7160e50eba8b513e0c6f2348afea0b8e62ba5aceb6ec09c39f360b7efaa97Relay Tokens132394172021-09-16 22:16:0122 hrs 16 mins ago0xf5517015452e5c4f5caaca0d0a1b60885b6e44a3 IN  POA Network: xDAI Bridge0 Ether0.003735329555 59.570833679
0x82c4b4cd28a59939cbed7d8bbc2629a7aa5130ade1fa1930767e8e71472cdef4Execute Signatur...132393872021-09-16 22:10:3722 hrs 21 mins agoENS Name tayericks.eth IN  POA Network: xDAI Bridge0 Ether0.010229340067 63.373706375
0xa688d72d4bd60ddb9992d3270122751e5b454b74c1f3ea5ebb4794b6d1e21331Relay Tokens132383712021-09-16 18:22:131 day 2 hrs ago0x888e2b06fe26f2693f7feff342f8a8c64c801129 IN  POA Network: xDAI Bridge0 Ether0.00815152 130
0xf23c0e29f827d4678bc8927cf07c6a2b841eb2c7d78a44cc7e33ae0edc37ea8aExecute Signatur...132380402021-09-16 17:06:251 day 3 hrs agoENS Name lucianodeangelo.eth IN  POA Network: xDAI Bridge0 Ether0.012609510154 78.131162315
0x593658b9d56758025de09dd8c06056af680c1b723501f9807b07e822381f9a55Execute Signatur...132378612021-09-16 16:27:181 day 4 hrs ago0xe0802cf223a05a14408ad44e7f878d21408fb04c IN  POA Network: xDAI Bridge0 Ether0.013625041886 84.411056649
0x977a255c2aa24a8366d44b2b3ec4c477cb5455f8541816394aea5a6beaee21a7Execute Signatur...132373942021-09-16 14:48:541 day 5 hrs ago0x6f582b89e63a9315e38435dd595eae8130ec9dc3 IN  POA Network: xDAI Bridge0 Ether0.01448930125 89.772066163
0xd11ba2c4505823ed1cf59a5c324efcc3b365445b17bc98a8b49226b6632a74b3Relay Tokens132370462021-09-16 13:32:491 day 6 hrs ago0xf29bea303881454149f9f0dc1fe9f123023d29e8 IN  POA Network: xDAI Bridge0 Ether0.003707336865 59.124407779
0x6d26fcdedc908498e1709c1df4e10ce96527f09d4fd0a98f53a88d57c5c5a5b5Execute Signatur...132369392021-09-16 13:08:351 day 7 hrs ago0xc1165124be8dc53a3826a1aa1b6643e9138d167c IN  POA Network: xDAI Bridge0 Ether0.010347562171 64.106126345
[ Download CSV Export 
Latest 2 internal transactions
Parent Txn Hash Block From To Value
0x7800bb9e24777558d0a96c41fd6a7068c707d08091a5f64161d59c816bc63798111045332020-10-22 7:04:38330 days 13 hrs ago 0x0a1820f0ff7dc9fce0a4f0b589ee14ddae88233c POA Network: xDAI Bridge0.052255 Ether
0x183aa6557a6a831d7b2a5f9b188b5e4e70898a27e9b04a586f67c63900638313111042182020-10-22 5:54:48330 days 14 hrs ago 0x0a1820f0ff7dc9fce0a4f0b589ee14ddae88233c POA Network: xDAI Bridge0.016112 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:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-10-18
*/

pragma solidity 0.4.24;

// File: contracts/upgradeability/EternalStorage.sol

/**
 * @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: contracts/upgradeability/UpgradeabilityOwnerStorage.sol

/**
 * @title UpgradeabilityOwnerStorage
 * @dev This contract keeps track of the upgradeability owner
 */
contract UpgradeabilityOwnerStorage {
    // Owner of the contract
    address private _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/Proxy.sol

/**
 * @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
  */
    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 () payable public {
        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

/**
 * @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 string representing the name of the current version
    */
    function version() public 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

/**
 * @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);
        require(version > _version);
        _version = version;
        _implementation = implementation;
        emit Upgraded(version, implementation);
    }
}

// File: contracts/upgradeability/OwnedUpgradeabilityProxy.sol

/**
 * @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 onlyProxyOwner() {
        require(msg.sender == proxyOwner());
        _;
    }

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

    /**
    * @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) public onlyProxyOwner {
        require(newOwner != address(0));
        emit ProxyOwnershipTransferred(proxyOwner(), 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 onlyProxyOwner {
        _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) payable public onlyProxyOwner {
        upgradeTo(version, implementation);
        require(address(this).call.value(msg.value)(data));
    }
}

// File: contracts/upgradeability/EternalStorageProxy.sol

/**
 * @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
 */
contract EternalStorageProxy is OwnedUpgradeabilityProxy, EternalStorage {}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"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"}]

60806040526100163364010000000061001b810204565b61003d565b60008054600160a060020a031916600160a060020a0392909216919091179055565b6104718061004c6000396000f3006080604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100cd5780633ad06d16146100fe57806354fd4d50146101245780635c60da1b1461014b5780636fde820214610160578063a9c45fcb14610175578063f1739cae146101d1575b600061008c6101f2565b9050600160a060020a03811615156100a357600080fd5b60405136600082376000803683855af43d82016040523d6000833e8080156100c9573d83f35b3d83fd5b3480156100d957600080fd5b506100e2610201565b60408051600160a060020a039092168252519081900360200190f35b34801561010a57600080fd5b50610122600435600160a060020a0360243516610210565b005b34801561013057600080fd5b5061013961023a565b60408051918252519081900360200190f35b34801561015757600080fd5b506100e26101f2565b34801561016c57600080fd5b506100e2610240565b604080516020600460443581810135601f81018490048402850184019095528484526101229482359460248035600160a060020a03169536959460649492019190819084018382808284375094975061024f9650505050505050565b3480156101dd57600080fd5b50610122600160a060020a03600435166102fd565b600254600160a060020a031690565b600061020b610240565b905090565b610218610201565b600160a060020a0316331461022c57600080fd5b6102368282610385565b5050565b60015490565b600054600160a060020a031690565b610257610201565b600160a060020a0316331461026b57600080fd5b6102758383610210565b30600160a060020a0316348260405180828051906020019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af19250505015156102f857600080fd5b505050565b610305610201565b600160a060020a0316331461031957600080fd5b600160a060020a038116151561032e57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610357610201565b60408051600160a060020a03928316815291841660208301528051918290030190a161038281610416565b50565b600254600160a060020a03828116911614156103a057600080fd5b60015482116103ae57600080fd5b600182905560028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820468432494ae522077e1a5855bc87444d93894689c72242af4568befd3cd609d60029

Swarm Source

bzzr://468432494ae522077e1a5855bc87444d93894689c72242af4568befd3cd609d6
Block Transaction Difficulty Gas Used Reward
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.