Contract 0xa3db33ccfe990fdf89ff311754391b5c3af4ef04

 

TxHash Block Age From To Value [TxFee]
0x91edb394344351ba5867ac44ea0b27af8241ed8f1fbfc4ec96ac39f095bc2bb472318771 hr 3 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.000683395895
0xb738290a25af83f7b0917b32342fde3d8cc6d91ee3460cdca5b85954f41a4d6672318761 hr 3 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.00204829352
0xa45f92148666845d833d001374070aeed92216707fbf2ae7918c1478901f393072318621 hr 6 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.000683395895
0x0154254c5f9f66601de14f3df501496354a1f22030d6aea18e088c3554e5e93d72318601 hr 7 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.00204829352
0x19f6d8f67f71a46adad5054d0d468cb28014fadf943d2cd1cf809dc603b0f97272316892 hrs 10 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.000533198995
0xed63c57bde3fd35a59e35128adb3916668f6fceeacdbea043750189ec9b8622172316872 hrs 11 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.00159811912
0x5aff50cb01d945d15f3bb4a8b5cad07cf911de664851844d1d24ff133fffd8e272316432 hrs 24 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.000683395895
0xc13dcb35c9787e4a0df81402d6f151e972526a9e84f54b05d6446b1b6d9d92d272316412 hrs 24 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.00204829352
0x71e79b38b3a2ff5a5f67a04a8a65fc0e9b5cc8a87bc2aa4edabad93c5f4bb4d472316332 hrs 27 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0006007876
0x490394d7f3be7fac3ff95931287ecc750754bae8556fa0428085c5def2fd2aa872316312 hrs 27 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0018006976
0x5cc5006b301c8df04a0ae277dbf4a2fc6200b25a17200c3b2c7c2c0be0c19ce372316202 hrs 31 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0006007876
0xf4919632e791ea078c69bad0bde74c4b3e4112c7c054d9609f5118ccb574d3ce72316152 hrs 33 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0018006976
0x61e86522d2959cdf0c56f7d5917f099100a9ce4a55d8ed0511deeec36d31a99b72316062 hrs 34 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0006007876
0x8485362c65ee41a0de6d16bfaa7cdd9e82c730771456b05b64827c9f254dd06172316042 hrs 35 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0018006976
0xd78d989d288f0ea24033dc7b24d0b96903268cbda2d1b1c774e317e0354714c672315732 hrs 49 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0004505907
0x7366b9ce7683dc093ac1b1f608b50c8b32bbd1217a214a83fd2c822afe98192972315712 hrs 50 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0013505232
0x7ad852ccd35b5218c75c1d45b8418a5996e1d0ed647e356780a3e40ab61c1e8e72315712 hrs 50 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0004505907
0xe5bbf74cfbe117e5d836f9b203dee4c3faa178f7f35dd12be991204ab4e59e3772315662 hrs 51 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0013505232
0x4b6c0572c9c6d1e3e4763c712dd17c0587f8173c7589a6e42188c78cbe71425e72315253 hrs 6 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.000413041475
0x9c593bc9babaa2fa6dbfec781a441fcbc271c2b87caa9fe9c5388d1a336bb9f172315233 hrs 6 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0012379796
0x612dde7d11873ff39200971f14c776ec48e52e14bda718cda6980fd94af9708b72312544 hrs 42 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0004505907
0xa27a473cfb997a1a953c7de5c3e3ce31d5c5df0d53c27999c9443598b93e71e572312524 hrs 44 mins ago0x3674b37078db3c35721f5d1d4349a583eabea539  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0013505232
0x704ad665e48328204ed06c808dadc9e67e29bd8fa6ecf66a6ab256371eb4afaa72312454 hrs 45 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0004505907
0x3b2692d3bc8d7322ee06538e7a1d29cf32426e56ca389828d5dfd915602b909172312454 hrs 45 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0004497075
0x831e6dfbcedbd5c55bc1f1d5ce623eae031cff0e3760e479d150fa885e9b49f872312454 hrs 45 mins ago0x870eac2766e2b051d739fc4b258069e0fb6372ed  IN   0xa3db33ccfe990fdf89ff311754391b5c3af4ef040 Ether0.0004505907
[ Download CSV Export 

Latest 1 Internal Transaction Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x9ab48ee549cb8cfbf06ddd52a6dd0d62b8b0baff253899cddb4432112b4840ff6484638130 days 17 hrs ago0xbf95d4957d481473e39c70d3bc08896740e3ca96  Contract Creation0 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: CvcProxy
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.24;

// File: contracts/upgradeability/ImplementationStorage.sol

/**
 * @title ImplementationStorage
 * @dev This contract stores proxy implementation address.
 */
contract ImplementationStorage {

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "cvc.proxy.implementation", and is validated in the constructor.
     */
    bytes32 internal constant IMPLEMENTATION_SLOT = 0xa490aab0d89837371982f93f57ffd20c47991f88066ef92475bc8233036969bb;

    /**
    * @dev Constructor
    */
    constructor() public {
        assert(IMPLEMENTATION_SLOT == keccak256("cvc.proxy.implementation"));
    }

    /**
     * @dev Returns the current implementation.
     * @return Address of the current implementation
     */
    function implementation() public view returns (address impl) {
        bytes32 slot = IMPLEMENTATION_SLOT;
        assembly {
            impl := sload(slot)
        }
    }
}

// File: openzeppelin-solidity/contracts/AddressUtils.sol

/**
 * 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/CvcProxy.sol

/**
 * @title CvcProxy
 * @dev Transparent proxy with upgradeability functions and authorization control.
 */
contract CvcProxy is ImplementationStorage {

    /**
     * @dev Emitted when the implementation is upgraded.
     * @param implementation Address of the new implementation.
     */
    event Upgraded(address implementation);

    /**
     * @dev Emitted when the administration has been transferred.
     * @param previousAdmin Address of the previous admin.
     * @param newAdmin Address of the new admin.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "cvc.proxy.admin", and is validated in the constructor.
     */
    bytes32 private constant ADMIN_SLOT = 0x2bbac3e52eee27be250d682577104e2abe776c40160cd3167b24633933100433;

    /**
     * @dev Modifier to check whether the `msg.sender` is the admin.
     * It executes the function if called by admin. Otherwise, it will delegate the call to the implementation.
     */
    modifier ifAdmin() {
        if (msg.sender == currentAdmin()) {
            _;
        } else {
            delegate(implementation());
        }
    }

    /**
     * Contract constructor.
     * It sets the `msg.sender` as the proxy admin.
     */
    constructor() public {
        assert(ADMIN_SLOT == keccak256("cvc.proxy.admin"));
        setAdmin(msg.sender);
    }

    /**
     * @dev Fallback function.
     */
    function() external payable {
        require(msg.sender != currentAdmin(), "Message sender is not contract admin");
        delegate(implementation());
    }

    /**
     * @dev Changes the admin of the proxy.
     * Only the current admin can call this function.
     * @param _newAdmin Address to transfer proxy administration to.
     */
    function changeAdmin(address _newAdmin) external ifAdmin {
        require(_newAdmin != address(0), "Cannot change contract admin to zero address");
        emit AdminChanged(currentAdmin(), _newAdmin);
        setAdmin(_newAdmin);
    }

    /**
     * @dev Allows the proxy owner to upgrade the current version of the proxy.
     * @param _implementation the address of the new implementation to be set.
     */
    function upgradeTo(address _implementation) external ifAdmin {
        upgradeImplementation(_implementation);
    }

    /**
     * @dev Allows the proxy owner to upgrade and call the new implementation
     * to initialize whatever is needed through a low level call.
     * @param _implementation the address of the new implementation to be set.
     * @param _data 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(address _implementation, bytes _data) external payable ifAdmin {
        upgradeImplementation(_implementation);
        //solium-disable-next-line security/no-call-value
        require(address(this).call.value(msg.value)(_data), "Upgrade error: initialization method call failed");
    }

    /**
     * @dev Returns the Address of the proxy admin.
     * @return address
     */
    function admin() external view ifAdmin returns (address) {
        return currentAdmin();
    }

    /**
     * @dev Upgrades the implementation address.
     * @param _newImplementation the address of the new implementation to be set
     */
    function upgradeImplementation(address _newImplementation) private {
        address currentImplementation = implementation();
        require(currentImplementation != _newImplementation, "Upgrade error: proxy contract already uses specified implementation");
        setImplementation(_newImplementation);
        emit Upgraded(_newImplementation);
    }

    /**
     * @dev Delegates execution to an implementation contract.
     * This is a low level function that doesn't return to its internal call site.
     * It will return to the external caller whatever the implementation returns.
     * @param _implementation Address to delegate.
     */
    function delegate(address _implementation) private {
        assembly {
            // Copy msg.data.
            calldatacopy(0, 0, calldatasize)

            // Call current implementation passing proxy calldata.
            let result := delegatecall(gas, _implementation, 0, calldatasize, 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize)

            // Propagate result (delegatecall returns 0 on error).
            switch result
            case 0 {revert(0, returndatasize)}
            default {return (0, returndatasize)}
        }
    }

    /**
     * @return The admin slot.
     */
    function currentAdmin() private view returns (address proxyAdmin) {
        bytes32 slot = ADMIN_SLOT;
        assembly {
            proxyAdmin := sload(slot)
        }
    }

    /**
     * @dev Sets the address of the proxy admin.
     * @param _newAdmin Address of the new proxy admin.
     */
    function setAdmin(address _newAdmin) private {
        bytes32 slot = ADMIN_SLOT;
        assembly {
            sstore(slot, _newAdmin)
        }
    }

    /**
     * @dev Sets the implementation address of the proxy.
     * @param _newImplementation Address of the new implementation.
     */
    function setImplementation(address _newImplementation) private {
        require(
            AddressUtils.isContract(_newImplementation),
            "Cannot set new implementation: no contract code at contract address"
        );
        bytes32 slot = IMPLEMENTATION_SLOT;
        assembly {
            sstore(slot, _newImplementation)
        }
    }

}

Contract ABI
[{"constant":false,"inputs":[{"name":"_implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_implementation","type":"address"},{"name":"_data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousAdmin","type":"address"},{"indexed":false,"name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"}]

Contract Creation Code
608060405234801561001057600080fd5b5060405180807f6376632e70726f78792e696d706c656d656e746174696f6e000000000000000081525060180190506040518091039020600019167fa490aab0d89837371982f93f57ffd20c47991f88066ef92475bc8233036969bb6001026000191614151561007c57fe5b60405180807f6376632e70726f78792e61646d696e0000000000000000000000000000000000815250600f0190506040518091039020600019167f2bbac3e52eee27be250d682577104e2abe776c40160cd3167b24633933100433600102600019161415156100e757fe5b6100ff33610104640100000000026401000000009004565b610133565b60007f2bbac3e52eee27be250d682577104e2abe776c40160cd3167b2463393310043360010290508181555050565b6109e6806101426000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633659cfe6146101505780634f1ef286146101935780635c60da1b146101e15780638f28397014610238578063f851a4401461027b575b6100756102d2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561013e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4d6573736167652073656e646572206973206e6f7420636f6e7472616374206181526020017f646d696e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61014e610149610303565b610334565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061035a565b005b6101df600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019082018035906020019190919293919293905050506103b7565b005b3480156101ed57600080fd5b506101f6610303565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024457600080fd5b50610279600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104ee565b005b34801561028757600080fd5b506102906106b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000807f2bbac3e52eee27be250d682577104e2abe776c40160cd3167b246339331004336001029050805491505090565b6000807fa490aab0d89837371982f93f57ffd20c47991f88066ef92475bc8233036969bb6001029050805491505090565b3660008037600080366000845af43d6000803e8060008114610355573d6000f35b3d6000fd5b6103626102d2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103a35761039e81610714565b6103b4565b6103b36103ae610303565b610334565b5b50565b6103bf6102d2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156104d8576103fb83610714565b3073ffffffffffffffffffffffffffffffffffffffff163483836040518083838082843782019150509250505060006040518083038185875af19250505015156104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f55706772616465206572726f723a20696e697469616c697a6174696f6e206d6581526020017f74686f642063616c6c206661696c65640000000000000000000000000000000081525060400191505060405180910390fd5b6104e9565b6104e86104e3610303565b610334565b5b505050565b6104f66102d2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156106a057600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f43616e6e6f74206368616e676520636f6e74726163742061646d696e20746f2081526020017f7a65726f2061646472657373000000000000000000000000000000000000000081525060400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61061d6102d2565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161069b81610880565b6106b1565b6106b06106ab610303565b610334565b5b50565b60006106be6102d2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610700576106f96102d2565b9050610711565b61071061070b610303565b610334565b5b90565b600061071e610303565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610810576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001807f55706772616465206572726f723a2070726f787920636f6e747261637420616c81526020017f726561647920757365732073706563696669656420696d706c656d656e74617481526020017f696f6e000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b610819826108af565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b60007f2bbac3e52eee27be250d682577104e2abe776c40160cd3167b2463393310043360010290508181555050565b60006108ba826109a7565b151561097a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001807f43616e6e6f7420736574206e657720696d706c656d656e746174696f6e3a206e81526020017f6f20636f6e747261637420636f646520617420636f6e7472616374206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b7fa490aab0d89837371982f93f57ffd20c47991f88066ef92475bc8233036969bb60010290508181555050565b600080823b9050600081119150509190505600a165627a7a72305820217a0189de99c2ae3f5c53cbbfaa4b7eab27fae03ef8b58703719d284bb86dcc0029


   Swarm Source:
bzzr://217a0189de99c2ae3f5c53cbbfaa4b7eab27fae03ef8b58703719d284bb86dcc
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.