Contract 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a 1

Contract Overview

AMB Rinkeby Bridge
Balance:
0 xDAI

xDAI Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x2528b5f188310d70615bdb37f5b03e78ae408c367f2780147f1c97a608c39c09Submit Signature252874992022-12-04 13:55:352 hrs 1 min ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0xf1cf2ee3e72d76693a43147de8dc3435b5dd5470a50cf506804711dabcd42243Submit Signature252874992022-12-04 13:55:352 hrs 1 min ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0x1e10d060fb6c68814d05ae4d03abba320ef4c52403459baf44118ac720df2c8eSubmit Signature252874992022-12-04 13:55:352 hrs 1 min ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0
0x80b262151ba36001fdd90b9a2263ef5815a30348f12af033d83cbb2e74b32994Submit Signature252728792022-12-03 14:14:001 day 1 hr ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0x4288c78f9537c906013ced626c6d525e2cfcee42b58c69300319395adfec3b07Submit Signature252728772022-12-03 14:13:501 day 1 hr ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0x3ab1279b8d77df0d4346902bcfd9505331611edb04f7847c56a2266d08fd465fSubmit Signature252724052022-12-03 13:28:001 day 2 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0x4073c06d6686d7698a2a19489da8d86ec9bf857522b6d8b2cc32b06f13e14a9aSubmit Signature252724022022-12-03 13:27:451 day 2 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0xea546853333e002b7021011817d33233d9f9158edff4c634797ea6bd2aeea9deSubmit Signature252346252022-11-30 19:26:403 days 20 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0x90cb362744b3d2980b6a4536661c035023955ec30807e86692a12c4fd7051167Submit Signature252346252022-11-30 19:26:403 days 20 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0
0x654761575b083a4c0a1d1412aad9fee62e1898183c7ad7c12f39bdd8d181924fSubmit Signature252346252022-11-30 19:26:403 days 20 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0x74e80ff9f7f70358f341fb62d243075a1479b05739ead1add5dbf95be5379a3bSubmit Signature252341902022-11-30 18:00:203 days 21 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0x5425f0d355583ce027be5cf760a361b8e9057d7911a099c332fa55bfbaf81676Submit Signature252341902022-11-30 18:00:203 days 21 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0
0x8b55498f15357b25b3da017668393d73d1aa25b814ffbb0ec2f96e2665a1f64cSubmit Signature252341902022-11-30 18:00:203 days 21 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0x3db88f0822461eee96e6ec17978a6d080ca908a4dd79119fe824f5d5cf57d344Submit Signature252332902022-11-30 16:08:203 days 23 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0xf35c46537a2966a238e0e3d9dc60dcab5663e4cff0e198e135f9fc3abd601f75Submit Signature252332902022-11-30 16:08:203 days 23 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0x3d28a4e6193ef34e0ec2c07a5702299be1787acf80cb7471eabb3f49cbdf1401Submit Signature252332902022-11-30 16:08:203 days 23 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0
0x069c0d40330c00a5ab3a5df23740987c608b43f5dc3f9d68aeec5967b1febcc4Submit Signature252306362022-11-30 11:55:254 days 4 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0xd02c66e21242fb294be020ae762dd7da70e558541d3f0bbfc477ad1d176cee33Submit Signature252306362022-11-30 11:55:254 days 4 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0xa7f9ec84feb0ea3bd7fd60c6b18a2f60d093e548182c1deb03187b84520cdcaaSubmit Signature252306352022-11-30 11:55:204 days 4 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0
0xfae9fb088a249aa515fe8f4bcef7f073dd7b2d6afec6f4ef54f2ce04089b49c9Submit Signature252231802022-11-30 0:14:004 days 15 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0x52b69497774c20a1808215e7ecbf468d070b7041326897c83f8817ca54b02dfbSubmit Signature252231802022-11-30 0:14:004 days 15 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0x198e0766c8f81f9499675101e58fc4c6c111b8abddac62b7d8aa46ac05f7a984Submit Signature252231782022-11-30 0:13:454 days 15 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0
0x9c0a3cf9a351ee09e95baeb8ac5c50bd2570a6ce1c207a931df52d47c663bcb2Submit Signature252209592022-11-29 20:54:354 days 19 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
0x590fa1304e958fc7ef1a8862287f94f0667550414f3ea8d7b3aa6de49a5fa401Submit Signature252209582022-11-29 20:54:304 days 19 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0
0xba1a76cdb7a4ee55a8b48fe1ccf81df6a1fa9bc4d408616cb4c915773bb28bc7Submit Signature252190302022-11-29 18:01:254 days 21 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0
[ Download CSV Export 
AdvancedLatest 25 internal transaction
Parent Txn Hash Block From To Value
0x2528b5f188310d70615bdb37f5b03e78ae408c367f2780147f1c97a608c39c09252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x00000000000000000000000000000000000000010 xDAI
0x2528b5f188310d70615bdb37f5b03e78ae408c367f2780147f1c97a608c39c09252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x2528b5f188310d70615bdb37f5b03e78ae408c367f2780147f1c97a608c39c09252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x6c8d0afddbd29a0954feeb73904923fc8f73c4800 xDAI
0xf1cf2ee3e72d76693a43147de8dc3435b5dd5470a50cf506804711dabcd42243252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0xf1cf2ee3e72d76693a43147de8dc3435b5dd5470a50cf506804711dabcd42243252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x00000000000000000000000000000000000000010 xDAI
0xf1cf2ee3e72d76693a43147de8dc3435b5dd5470a50cf506804711dabcd42243252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0xf1cf2ee3e72d76693a43147de8dc3435b5dd5470a50cf506804711dabcd42243252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x6c8d0afddbd29a0954feeb73904923fc8f73c4800 xDAI
0x1e10d060fb6c68814d05ae4d03abba320ef4c52403459baf44118ac720df2c8e252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x1e10d060fb6c68814d05ae4d03abba320ef4c52403459baf44118ac720df2c8e252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x00000000000000000000000000000000000000010 xDAI
0x1e10d060fb6c68814d05ae4d03abba320ef4c52403459baf44118ac720df2c8e252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x1e10d060fb6c68814d05ae4d03abba320ef4c52403459baf44118ac720df2c8e252874992022-12-04 13:55:352 hrs 1 min ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x6c8d0afddbd29a0954feeb73904923fc8f73c4800 xDAI
0x9644ba041ba127f3c2310ac76795ae7c568f07d60250ff0b0406e93d780d9b04252874772022-12-04 13:53:252 hrs 3 mins ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x6c8d0afddbd29a0954feeb73904923fc8f73c4800 xDAI
0x9644ba041ba127f3c2310ac76795ae7c568f07d60250ff0b0406e93d780d9b04252874772022-12-04 13:53:252 hrs 3 mins ago 0xf85b17e64bc788d0cb1a8c8c87c0d74e520c2a540xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI
0x80b262151ba36001fdd90b9a2263ef5815a30348f12af033d83cbb2e74b32994252728792022-12-03 14:14:001 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x80b262151ba36001fdd90b9a2263ef5815a30348f12af033d83cbb2e74b32994252728792022-12-03 14:14:001 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x00000000000000000000000000000000000000010 xDAI
0x80b262151ba36001fdd90b9a2263ef5815a30348f12af033d83cbb2e74b32994252728792022-12-03 14:14:001 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x80b262151ba36001fdd90b9a2263ef5815a30348f12af033d83cbb2e74b32994252728792022-12-03 14:14:001 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x6c8d0afddbd29a0954feeb73904923fc8f73c4800 xDAI
0x4288c78f9537c906013ced626c6d525e2cfcee42b58c69300319395adfec3b07252728772022-12-03 14:13:501 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x4288c78f9537c906013ced626c6d525e2cfcee42b58c69300319395adfec3b07252728772022-12-03 14:13:501 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x00000000000000000000000000000000000000010 xDAI
0x4288c78f9537c906013ced626c6d525e2cfcee42b58c69300319395adfec3b07252728772022-12-03 14:13:501 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x4288c78f9537c906013ced626c6d525e2cfcee42b58c69300319395adfec3b07252728772022-12-03 14:13:501 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x6c8d0afddbd29a0954feeb73904923fc8f73c4800 xDAI
0xce1df4fc6dea0a3f02bdf00788b09157f94a666b526ceeaccdcf208412205beb252728562022-12-03 14:11:551 day 1 hr ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x6c8d0afddbd29a0954feeb73904923fc8f73c4800 xDAI
0xce1df4fc6dea0a3f02bdf00788b09157f94a666b526ceeaccdcf208412205beb252728562022-12-03 14:11:551 day 1 hr ago 0x1e0507046130c31deb20ec2f870ad070ff2660790xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI
0x3ab1279b8d77df0d4346902bcfd9505331611edb04f7847c56a2266d08fd465f252724052022-12-03 13:28:001 day 2 hrs ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0xac91dfb485ed2b96381686d3d299e3d041db40510 xDAI
0x3ab1279b8d77df0d4346902bcfd9505331611edb04f7847c56a2266d08fd465f252724052022-12-03 13:28:001 day 2 hrs ago 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0x00000000000000000000000000000000000000010 xDAI
[ Export Not Available for Advanced mode ]  
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x75df5af045d91108662d8080fd1fefad6aa0bb59

Contract Name:
EternalStorageProxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion
/**
 *Submitted for verification at gnosisscan.io on 2022-08-03
*/

// 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 Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.