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]
0xd762f5f4be5b7bf3f3db5d5d360da75e74dcec8b00c421787aaf5a6cf6351247Execute Affirmat...262827192023-02-03 1:30:154 days 3 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0.000560457
0xf4fc83da3f53893b06f66847c10c22892a3e0c10bad550d24d85bd9768a4990cExecute Affirmat...262827192023-02-03 1:30:154 days 3 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.000292209
0x626a933fc5bce2659409e28418f8ea966f8e43e957c0164026980973c20cae9dExecute Affirmat...262825652023-02-03 1:17:104 days 4 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0.000214104
0x7ce1b10ace200a76624ce1aeaadf05d178e4221537a424c25dc0e8a6b71462b1Execute Affirmat...262825642023-02-03 1:17:054 days 4 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.000601467
0xeb9b5ddc906bbdc915276321255bb70cd2abf96611074bcd0ff8d8c27a761c5fExecute Affirmat...262825582023-02-03 1:16:354 days 4 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000292173
0x5e149d1fe14824409fe048bd7aabd0728a3f10eb28339153824272085d58ad44Submit Signature262698142023-02-02 6:54:454 days 22 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000167997
0x3fc76205d9f0d327f52b4f8caabdbb660223d333c8f1dcd394be3d381b6e2192Submit Signature262698132023-02-02 6:54:404 days 22 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.000543432
0x32762ffed231d9332ec3e854dd016ffb564f8445634e9296854aa74915dedd35Submit Signature262698122023-02-02 6:54:354 days 22 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0.000988008
0x023624554f22502bc78c07b7612d835ca678150bcf850a545d044aa7354ad455Submit Signature262533122023-02-01 7:13:255 days 22 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.00054366
0x18d6e1afdc4b888859429cdfd77f7dbcbd6249194c0fcd6b5938a75b2f6c814bSubmit Signature262532432023-02-01 7:07:205 days 22 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.000987972
0xce87b2cae62056d1a7bf5db740e38dd828aca361b72a9b95610f0613210b5969Submit Signature262503382023-02-01 2:54:306 days 2 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000543432
0x57ed315e732089b86b10809de6962f4ec7ddd08973c4b2a5fe10f7a6cfd213b9Submit Signature262503382023-02-01 2:54:306 days 2 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.000987708
0x022726bc223d1e0e4da5cefb182e4eb4c9e69085c3fa18c3df97d34d5c5ebfefSubmit Signature262462522023-01-31 20:57:056 days 8 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.00054354
0x94e828cbaa0ccde525b366507e8d1b4d6f9d214dd1556e73246b594aafb4bc29Submit Signature262462512023-01-31 20:57:006 days 8 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000987852
0x1bf497fe12f0d81b069a700e2f7133a0e1a9babeb511b4b0c4bd0ffd6b41b493Submit Signature262057432023-01-29 10:01:208 days 19 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0.000168225
0xf5d5960c1b65ae8de46871f4f4d39e0b378f387415f9e4ca05900f4e84427e53Submit Signature262057422023-01-29 10:01:058 days 19 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.00054366
0xc9821af86c9742fcb22f7e715d9404366d74f2c5db92559b460e5e45664745e2Submit Signature262057422023-01-29 10:01:058 days 19 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000987972
0xff863ef1fabd9db9d79dfcd97c03fb870f22828ff1cb48de8aa916bc2eeccc58Submit Signature261969512023-01-28 21:13:009 days 8 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0.000168033
0xd39444caf45b81eda78498e9e7cecfef928fee4fdcbaa9d548a7f27d1dadb298Submit Signature261969512023-01-28 21:13:009 days 8 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000543468
0xc62eaa7ba89732676e9ecb307c20be3106f3a380b128e8ee3e4acb9612b74f08Submit Signature261969492023-01-28 21:12:459 days 8 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.000988044
0xfe221cb7cb5c89ff2e48b59c543efd92ce5e7c158127be65d6779670f5097d02Submit Signature261898462023-01-28 10:50:559 days 18 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.000543696
0xf0efbebc665ac40aa5cd421dc6b53497a24426357b99bab0756554d39395b318Submit Signature261898462023-01-28 10:50:559 days 18 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000987744
0xf8cc84e1c50ee39ba349222abbea13ec53dfaf24941c7a668abdd01eef2115f0Submit Signature260428882023-01-19 12:38:3518 days 16 hrs ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  AMB Rinkeby Bridge0 xDAI0.000168333
0xd606069650ade35eb3025ef775b3ce960864ff794158f7a89d0f69891c6ce900Submit Signature260428882023-01-19 12:38:3518 days 16 hrs ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  AMB Rinkeby Bridge0 xDAI0.000543768
0xe720bffa30f88e06c8a05986bacb4daa4058c23fed1e3a3c349a5a3d1b342c92Submit Signature260428842023-01-19 12:38:1518 days 16 hrs ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  AMB Rinkeby Bridge0 xDAI0.00098778
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View 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.