xDAI Price: $0.999318 (-0.01%)

Contract

0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6

Overview

XDAI Balance

Gnosis Chain LogoGnosis Chain LogoGnosis Chain Logo0 XDAI

XDAI Value

$0.00

Token Holdings

More Info

Private Name Tags

Transaction Hash
Block
From
To
Execute Affirmat...443287922026-01-24 19:12:1515 mins ago1769281935IN
Gnosis: xDai Bridge 2
0 XDAI0.000231383
Execute Affirmat...443287922026-01-24 19:12:1515 mins ago1769281935IN
Gnosis: xDai Bridge 2
0 XDAI0.000160263
Execute Affirmat...443287902026-01-24 19:12:0515 mins ago1769281925IN
Gnosis: xDai Bridge 2
0 XDAI0.000160263
Execute Affirmat...443287322026-01-24 19:07:1520 mins ago1769281635IN
Gnosis: xDai Bridge 2
0 XDAI0.000231383
Execute Affirmat...443287312026-01-24 19:07:1020 mins ago1769281630IN
Gnosis: xDai Bridge 2
0 XDAI0.000231383
Execute Affirmat...443287312026-01-24 19:07:1020 mins ago1769281630IN
Gnosis: xDai Bridge 2
0 XDAI0.000578553
Execute Affirmat...443287312026-01-24 19:07:1020 mins ago1769281630IN
Gnosis: xDai Bridge 2
0 XDAI0.000259563
Execute Affirmat...443287312026-01-24 19:07:1020 mins ago1769281630IN
Gnosis: xDai Bridge 2
0 XDAI0.000259563
Execute Affirmat...443287312026-01-24 19:07:1020 mins ago1769281630IN
Gnosis: xDai Bridge 2
0 XDAI0.000310863
Submit Signature443285972026-01-24 18:55:5531 mins ago1769280955IN
Gnosis: xDai Bridge 2
0 XDAI0.00016293
Submit Signature443285952026-01-24 18:55:4532 mins ago1769280945IN
Gnosis: xDai Bridge 2
0 XDAI0.000162873
Submit Signature443285922026-01-24 18:55:3032 mins ago1769280930IN
Gnosis: xDai Bridge 2
0 XDAI0.000548243
Submit Signature443285922026-01-24 18:55:3032 mins ago1769280930IN
Gnosis: xDai Bridge 2
0 XDAI0.000532973
Submit Signature443285922026-01-24 18:55:3032 mins ago1769280930IN
Gnosis: xDai Bridge 2
0 XDAI0.000533073
Submit Signature443285922026-01-24 18:55:3032 mins ago1769280930IN
Gnosis: xDai Bridge 2
0 XDAI0.000917823
Transfer443285712026-01-24 18:53:4534 mins ago1769280825IN
Gnosis: xDai Bridge 2
1,200 XDAI0.00018511
Submit Signature443284772026-01-24 18:45:3542 mins ago1769280335IN
Gnosis: xDai Bridge 2
0 XDAI0.000162913
Submit Signature443284772026-01-24 18:45:3542 mins ago1769280335IN
Gnosis: xDai Bridge 2
0 XDAI0.000162983
Submit Signature443284772026-01-24 18:45:3542 mins ago1769280335IN
Gnosis: xDai Bridge 2
0 XDAI0.000162913
Submit Signature443284772026-01-24 18:45:3542 mins ago1769280335IN
Gnosis: xDai Bridge 2
0 XDAI0.000548313
Submit Signature443284772026-01-24 18:45:3542 mins ago1769280335IN
Gnosis: xDai Bridge 2
0 XDAI0.000533153
Submit Signature443284772026-01-24 18:45:3542 mins ago1769280335IN
Gnosis: xDai Bridge 2
0 XDAI0.000533153
Submit Signature443284752026-01-24 18:45:2542 mins ago1769280325IN
Gnosis: xDai Bridge 2
0 XDAI0.000917893
Submit Signature443284562026-01-24 18:43:5044 mins ago1769280230IN
Gnosis: xDai Bridge 2
0 XDAI0.000162943
Transfer443284542026-01-24 18:43:4044 mins ago1769280220IN
Gnosis: xDai Bridge 2
265.66472074 XDAI0.00018511
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
443285712026-01-24 18:53:4534 mins ago1769280825
Gnosis: xDai Bridge 2
1,200 XDAI
443284542026-01-24 18:43:4044 mins ago1769280220
Gnosis: xDai Bridge 2
265.66472074 XDAI
443283772026-01-24 18:37:0550 mins ago1769279825
Gnosis: xDai Bridge 2
5,867.46655284 XDAI
443274922026-01-24 17:21:352 hrs ago1769275295
Gnosis: xDai Bridge 2
488 XDAI
443249852026-01-24 13:46:505 hrs ago1769262410
Gnosis: xDai Bridge 2
45,632.93803198 XDAI
443239222026-01-24 12:16:007 hrs ago1769256960
Gnosis: xDai Bridge 2
100,000 XDAI
443237092026-01-24 11:57:407 hrs ago1769255860
Gnosis: xDai Bridge 2
7,820 XDAI
443237092026-01-24 11:57:407 hrs ago1769255860
Gnosis: xDai Bridge 2
7,820 XDAI
443223002026-01-24 9:54:409 hrs ago1769248480
Gnosis: xDai Bridge 2
10.56 XDAI
443183612026-01-24 4:10:0515 hrs ago1769227805
Gnosis: xDai Bridge 2
39,956 XDAI
443161862026-01-24 0:59:2518 hrs ago1769216365
Gnosis: xDai Bridge 2
30 XDAI
443151732026-01-23 23:30:4519 hrs ago1769211045
Gnosis: xDai Bridge 2
3,500 XDAI
443123892026-01-23 19:27:2524 hrs ago1769196445
Gnosis: xDai Bridge 2
11.43760767 XDAI
443118402026-01-23 18:38:5524 hrs ago1769193535
Gnosis: xDai Bridge 2
231,301 XDAI
443060982026-01-23 10:15:5033 hrs ago1769163350
Gnosis: xDai Bridge 2
171,874 XDAI
443060982026-01-23 10:15:5033 hrs ago1769163350
Gnosis: xDai Bridge 2
171,874 XDAI
443047762026-01-23 8:19:4535 hrs ago1769156385
Gnosis: xDai Bridge 2
57,428.56787815 XDAI
443043072026-01-23 7:38:5035 hrs ago1769153930
Gnosis: xDai Bridge 2
84 XDAI
442951002026-01-22 18:11:152 days ago1769105475
Gnosis: xDai Bridge 2
64,111.75553848 XDAI
442948022026-01-22 17:44:452 days ago1769103885
Gnosis: xDai Bridge 2
59,752.10431126 XDAI
442948022026-01-22 17:44:452 days ago1769103885
Gnosis: xDai Bridge 2
59,752.10431126 XDAI
442933482026-01-22 15:37:252 days ago1769096245
Gnosis: xDai Bridge 2
127,250.81801351 XDAI
442930742026-01-22 15:13:152 days ago1769094795
Gnosis: xDai Bridge 2
127,161.95891763 XDAI
442929372026-01-22 15:01:152 days ago1769094075
Gnosis: xDai Bridge 2
63,055.89809441 XDAI
442922382026-01-22 13:59:252 days ago1769090365
Gnosis: xDai Bridge 2
164,030.00224646 XDAI
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB289f0e6...B303F1B6D
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
EternalStorageProxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at gnosisscan.io on 2022-08-03
*/

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

API
[{"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"}]

0x60806040526100163364010000000061001b810204565b61003d565b60008054600160a060020a031916600160a060020a0392909216919091179055565b6104718061004c6000396000f3006080604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100cd5780633ad06d16146100fe57806354fd4d50146101245780635c60da1b1461014b5780636fde820214610160578063a9c45fcb14610175578063f1739cae146101d1575b600061008c6101f2565b9050600160a060020a03811615156100a357600080fd5b60405136600082376000803683855af43d82016040523d6000833e8080156100c9573d83f35b3d83fd5b3480156100d957600080fd5b506100e2610201565b60408051600160a060020a039092168252519081900360200190f35b34801561010a57600080fd5b50610122600435600160a060020a0360243516610210565b005b34801561013057600080fd5b5061013961023a565b60408051918252519081900360200190f35b34801561015757600080fd5b506100e26101f2565b34801561016c57600080fd5b506100e2610240565b604080516020600460443581810135601f81018490048402850184019095528484526101229482359460248035600160a060020a03169536959460649492019190819084018382808284375094975061024f9650505050505050565b3480156101dd57600080fd5b50610122600160a060020a03600435166102fd565b600254600160a060020a031690565b600061020b610240565b905090565b610218610201565b600160a060020a0316331461022c57600080fd5b6102368282610385565b5050565b60015490565b600054600160a060020a031690565b610257610201565b600160a060020a0316331461026b57600080fd5b6102758383610210565b30600160a060020a0316348260405180828051906020019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af19250505015156102f857600080fd5b505050565b610305610201565b600160a060020a0316331461031957600080fd5b600160a060020a038116151561032e57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610357610201565b60408051600160a060020a03928316815291841660208301528051918290030190a161038281610416565b50565b600254600160a060020a03828116911614156103a057600080fd5b60015482116103ae57600080fd5b600182905560028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820468432494ae522077e1a5855bc87444d93894689c72242af4568befd3cd609d60029

Deployed Bytecode

0x6080604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100cd5780633ad06d16146100fe57806354fd4d50146101245780635c60da1b1461014b5780636fde820214610160578063a9c45fcb14610175578063f1739cae146101d1575b600061008c6101f2565b9050600160a060020a03811615156100a357600080fd5b60405136600082376000803683855af43d82016040523d6000833e8080156100c9573d83f35b3d83fd5b3480156100d957600080fd5b506100e2610201565b60408051600160a060020a039092168252519081900360200190f35b34801561010a57600080fd5b50610122600435600160a060020a0360243516610210565b005b34801561013057600080fd5b5061013961023a565b60408051918252519081900360200190f35b34801561015757600080fd5b506100e26101f2565b34801561016c57600080fd5b506100e2610240565b604080516020600460443581810135601f81018490048402850184019095528484526101229482359460248035600160a060020a03169536959460649492019190819084018382808284375094975061024f9650505050505050565b3480156101dd57600080fd5b50610122600160a060020a03600435166102fd565b600254600160a060020a031690565b600061020b610240565b905090565b610218610201565b600160a060020a0316331461022c57600080fd5b6102368282610385565b5050565b60015490565b600054600160a060020a031690565b610257610201565b600160a060020a0316331461026b57600080fd5b6102758383610210565b30600160a060020a0316348260405180828051906020019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af19250505015156102f857600080fd5b505050565b610305610201565b600160a060020a0316331461031957600080fd5b600160a060020a038116151561032e57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610357610201565b60408051600160a060020a03928316815291841660208301528051918290030190a161038281610416565b50565b600254600160a060020a03828116911614156103a057600080fd5b60015482116103ae57600080fd5b600182905560028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820468432494ae522077e1a5855bc87444d93894689c72242af4568befd3cd609d60029

Block Transaction Gas Used Reward
view all blocks validated

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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.