Contract 0x75df5af045d91108662d8080fd1fefad6aa0bb59 3

Gnosis 

Contract Overview

Gnosis: AMB-ETH-XDAI
Balance:
0 xDAI

xDAI Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x948e6790bc4ae4d08bb9e0b376380914a75191a820edf507d0b132f85bacc56aExecute Affirmat...252877282022-12-04 14:17:502 mins ago0x258667e543c913264388b33328337257af208a8f IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000215616
0x0f6e8d3bfc8f02e2d47a886d25b8bd8becea8342da7757ce991c06162764910fExecute Affirmat...252877282022-12-04 14:17:502 mins ago0x674c97db4ce6cac04a124d745979f3e4cba0e9f0 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000696621
0x01d497c27287201d41a29d1e6092b65d283d84a7e435f584bb54ffeb00f4e755Execute Affirmat...252877252022-12-04 14:17:353 mins ago0x19ac7c69e5f1ac95b8d49b30cbb79e81f1ab0dba IN  Gnosis: AMB-ETH-XDAI0 xDAI0
0xee65f9606bf82afdb1405eae941e02f1cbb9d21212094bf0be82c252425f1422Execute Affirmat...252877252022-12-04 14:17:353 mins ago0x459a3bd49f1ff109bc90b76125533699aaaaf9a6 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000242385
0x3bfcda2e4215c4f2275bb0f2fbd301ccc38cf66c5fcf29e053ca817ead130d83Execute Affirmat...252877242022-12-04 14:17:303 mins ago0xbdc141c8d2343f33f40cb9edd601ccf460cd0dde IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000293685
0x39da8aa070c5c008f4738332072920cf6fbf7c51ce27cba06832da88a76fe995Submit Signature252876632022-12-04 14:11:359 mins ago0x19ac7c69e5f1ac95b8d49b30cbb79e81f1ab0dba IN  Gnosis: AMB-ETH-XDAI0 xDAI0
0xfbe7b9f05281844c9892ac7e42227e70cca1457b60f965af9c6f3cb97d3d28feSubmit Signature252876632022-12-04 14:11:359 mins ago0x105cd22ed3d089bf5589c59b452f9de0796ca52d IN  Gnosis: AMB-ETH-XDAI0 xDAI0
0x36f172626262bf5dbc435cc3457c0d1ea93a774f37b3cc60385fb621579250abSubmit Signature252876632022-12-04 14:11:359 mins ago0x258667e543c913264388b33328337257af208a8f IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000538326
0xda50134aca3b45d7c5cb6e89c1bc70718e4385cb0f62504e3a4c5348317c83faSubmit Signature252876632022-12-04 14:11:359 mins ago0x459a3bd49f1ff109bc90b76125533699aaaaf9a6 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.00053859
0xde671b75f29262c6604b1b1e23eab2c7a317c900801f7c1d5fa34e21547d270eSubmit Signature252876632022-12-04 14:11:359 mins ago0x674c97db4ce6cac04a124d745979f3e4cba0e9f0 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.001056192
0xef1883b2ce215008c7b81688378df1b3ef8497831b4d2feabcce1f409a009da4Execute Affirmat...252876622022-12-04 14:11:209 mins ago0x19ac7c69e5f1ac95b8d49b30cbb79e81f1ab0dba IN  Gnosis: AMB-ETH-XDAI0 xDAI0
0xf11a2ebb20e417ebfa7e4fb38cf4f3b1dbe16de130ef4dbec6b4295514ca4be8Execute Affirmat...252876622022-12-04 14:11:209 mins ago0xbdc141c8d2343f33f40cb9edd601ccf460cd0dde IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000244221
0xfdf5d66456f6403bd4c4da896129d71e4dfe6e7cb9fedd881e8f337ab42c1974Execute Affirmat...252876612022-12-04 14:11:159 mins ago0x258667e543c913264388b33328337257af208a8f IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000244221
0xab81484de527c95940df7be2fd0bbd647d8c14b3d25ce66c4309ff7ffc6bd097Execute Affirmat...252876612022-12-04 14:11:159 mins ago0x674c97db4ce6cac04a124d745979f3e4cba0e9f0 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000295521
0x35571a99ba00d84474dabc18bfb78b6a6c9996b2e672fb54c6241146b5d06d41Execute Affirmat...252876232022-12-04 14:07:3513 mins ago0xbdc141c8d2343f33f40cb9edd601ccf460cd0dde IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000215616
0xa40df14eb76c6ef7f82d9cacf5be127abcc2132b78e810b100bd51d1148e60daExecute Affirmat...252876232022-12-04 14:07:3513 mins ago0x258667e543c913264388b33328337257af208a8f IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000655581
0xe93f899156c6b08e6775299709f486818079d43d8dba56273b559b09465b080fExecute Affirmat...252876232022-12-04 14:07:3513 mins ago0x674c97db4ce6cac04a124d745979f3e4cba0e9f0 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000242385
0xc35fdf41947b925d7e3c8351ac49b7b5c10b40b71e60c1289b8210d68861975dExecute Affirmat...252876212022-12-04 14:07:2513 mins ago0x19ac7c69e5f1ac95b8d49b30cbb79e81f1ab0dba IN  Gnosis: AMB-ETH-XDAI0 xDAI0
0x943cf3397cde8e537886b9c7095bd9f939e1ef3b0276b1a244d4a8cd2a431acfExecute Affirmat...252876202022-12-04 14:07:2013 mins ago0x459a3bd49f1ff109bc90b76125533699aaaaf9a6 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000293685
0x68a8274add5f3d69c2247ca0e464345c277e391fcc552c12377d2baa66f43d05Execute Affirmat...252857222022-12-04 11:02:503 hrs 17 mins ago0xbdc141c8d2343f33f40cb9edd601ccf460cd0dde IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000217992
0x9d3cca39a30c6475105bf3a72c14cfbcf57036509e63ef5fc857582554baca50Execute Affirmat...252857212022-12-04 11:02:453 hrs 17 mins ago0x258667e543c913264388b33328337257af208a8f IN  Gnosis: AMB-ETH-XDAI0 xDAI0.001156341
0xa5b9d25444f71e9e162c27dc4bc9bec4c98abcc0c1594af8251122ccf3a728dbExecute Affirmat...252857212022-12-04 11:02:453 hrs 17 mins ago0x674c97db4ce6cac04a124d745979f3e4cba0e9f0 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000244761
0x786ed4077c5ed5b2ee5202551310666b8ed2bf9305dc97be49e9b42dbee12e3cExecute Affirmat...252857192022-12-04 11:02:353 hrs 18 mins ago0x19ac7c69e5f1ac95b8d49b30cbb79e81f1ab0dba IN  Gnosis: AMB-ETH-XDAI0 xDAI0
0xea076d239dac9835ce200295b2456e4c1ffa858abf3470b89cea9fa645b2243aExecute Affirmat...252857192022-12-04 11:02:353 hrs 18 mins ago0x459a3bd49f1ff109bc90b76125533699aaaaf9a6 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000296061
0x99678bc6a9078f38ba24d7482bbf54deb7fabde503298b389614fef473aeae91Submit Signature252845832022-12-04 9:12:055 hrs 8 mins ago0x459a3bd49f1ff109bc90b76125533699aaaaf9a6 IN  Gnosis: AMB-ETH-XDAI0 xDAI0.000174396
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EternalStorageProxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion
/**
 *Submitted for verification at 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.