Contract 0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a 1

Contract Overview

Balance:
0 xDAI

xDAI Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x993793b2e0da9779e4a7aeac320980a9f85eb509c09bef7d160ae3c0e7088dddSubmit Signature243252622022-09-24 19:54:551 hr 50 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x6a8d98b8ad31392a4a43317f366b928a7e3b3dd49b65031be85c08bea448567eSubmit Signature243252622022-09-24 19:54:551 hr 50 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x5d4ed07cabed11c5add64690954a180b9af7c269515cc55c82354c790af865fbSubmit Signature243252622022-09-24 19:54:551 hr 50 mins ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x70ba55e78f18e395d3a5cd8daa2d442d613bf532531641af10a2aff51da2a478Execute Affirmat...243191232022-09-24 9:24:5012 hrs 20 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x8ef55eba60c59946a19443cba574a6e3585d4ba7512a443199cee9a7191791a9Execute Affirmat...243191232022-09-24 9:24:5012 hrs 20 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0xb82cd47ee86811920d2ba202c2980106514ecc0a60ad0e74f1640c69e07160e3Execute Affirmat...243191212022-09-24 9:24:3512 hrs 20 mins ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x3490cbaad3ff887ad0c7331fdb55153dbc1fdda9b7ebb5274ab51d057b15af87Execute Affirmat...243189672022-09-24 9:08:5012 hrs 36 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x6a3d6fbb612749f9bf7b58b29aa80b52c1e2c84836de4027729c7ba082450d1aExecute Affirmat...243189672022-09-24 9:08:5012 hrs 36 mins ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0xbb4b0e8adb4ba20c0c368373cf8aea8c33a3e2f449dd339083e327226ae650e0Execute Affirmat...243189632022-09-24 9:08:2512 hrs 36 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x00664bc1e7b9258a202525ac29c50b42645c61493fe973e70949e5d7d1e98c5bExecute Affirmat...243189612022-09-24 9:08:1512 hrs 37 mins ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x4ae06aa5a06f5761e82e51bf7a97739b30049aec83d4c6acb35f0d7b4562699bExecute Affirmat...243189612022-09-24 9:08:1512 hrs 37 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0xc1597285820d985fbf899db62389c0bd908dea9afed1953bd6acaa4feba6d8f4Execute Affirmat...243189612022-09-24 9:08:1512 hrs 37 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x7d80f8e82ca54b2a3b96fe47a5be2e901def1938849b33f6065d3b656f235e1eExecute Affirmat...243189512022-09-24 9:07:1012 hrs 38 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x91a575991761f85a28fdbed263cfc3b0a6e97747ac9a824eef6db40e5e1e1e08Execute Affirmat...243189512022-09-24 9:07:1012 hrs 38 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x952f38e82d20b1c3fa2d5d3dd17f00df46d0e405db4d9f4edaab06ed14dbff14Execute Affirmat...243189482022-09-24 9:06:5512 hrs 38 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0xcab2e5c8311c8dc2c09d234f92cf459e11ca98a1928c82a802136f95a81d8b12Execute Affirmat...243189482022-09-24 9:06:5512 hrs 38 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x85f82f82ce993bd5fdc0690fa19c4df60aa937da01be30723c474a9bf3723187Execute Affirmat...243189432022-09-24 9:06:2012 hrs 38 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x9365c0861eb41c3fc6b4d5a4c413bc9cd12b407226da87b5fe6991c754549f21Execute Affirmat...243189432022-09-24 9:06:2012 hrs 38 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x78b8424bc10d1115d56d7a4b38bc7afb5b3f9d834ffcce449f2eef4c8de72e95Execute Affirmat...243189412022-09-24 9:06:1012 hrs 39 mins ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x83a80aedd05b906ea15c0d10204c4cb86b79a1cb4d977a54d14d014721d3c549Execute Affirmat...243189392022-09-24 9:05:5512 hrs 39 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0xdf67fe470321f8bf3f6b4a665428cbe5dc30c0c76ec0d9b8b46fce23998f4335Execute Affirmat...243189392022-09-24 9:05:5512 hrs 39 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0xa3c08fd5434cb08b75141ed60791d624d9d2a44d092c6c69ff8f15d66a25535eExecute Affirmat...243189372022-09-24 9:05:4512 hrs 39 mins ago0xf38f1a8e0dab6a8df95a29135796ae39137b9cee IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0xbdb0ec5d8d75aedd9a24b8c2dc14a86080708f28c34da82e56a4c99dd8e5c5a6Execute Affirmat...243189312022-09-24 9:05:1012 hrs 40 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x24ec78ac53645168a68d0012905860952412f0b5c63a234b7687a9074b77536bExecute Affirmat...243189312022-09-24 9:05:1012 hrs 40 mins ago0x0681f11412c27035f694d7bd6691bf03fb413ff3 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
0x468b26740d0d4f626a440fbbd3c8d827671e8ec24adc7a982bd656fbe6d10133Execute Affirmat...243189282022-09-24 9:04:5012 hrs 40 mins ago0xcbfe6a67319d85b0ad56fd4d7d6d13c26e141904 IN  0xc38d4991c951fe8bce1a12beef2046ef36b0fa4a0 xDAI0
[ 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.