Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 4 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x4c2f150fc90fed3d8281114c2349f1906cde5346at txn 0x536cad5dc484a0a2efaff4a60a4d2ed7038bbf6e17c846b95b37c6ddf3fe1b5f
 Latest 4 txns

TxHash Age From To Value [TxFee]
0x6f8f6a03fdc0850fdb11d2aa1bda0f022e9cb8e353320460c1369f2a43150b0f97 days 16 hrs agoGemini_1  IN   0x9a7b5f6e453d0cda978163cb4a9a88367250a52d0 Ether0.002819982
0x0dd7848e7548b127e1178406b00c3fac11c585da837122dc0b083e0cbcc122c397 days 16 hrs agoGemini_1  IN   0x9a7b5f6e453d0cda978163cb4a9a88367250a52d0 Ether0.002819982
0x7aed002d28fc62c4712edd0cc04eb27a5004dc04968a625a18b71d24345ddf6f97 days 17 hrs agoGemini_1  IN   0x9a7b5f6e453d0cda978163cb4a9a88367250a52d0 Ether0.002819982
0xd1c50cd9278220efee759802e50082a5efef59658165decbdf4243daa06dc32397 days 17 hrs agoGemini_1  IN   0x9a7b5f6e453d0cda978163cb4a9a88367250a52d0 Ether0.003149982
0x536cad5dc484a0a2efaff4a60a4d2ed7038bbf6e17c846b95b37c6ddf3fe1b5f97 days 20 hrs ago0x4c2f150fc90fed3d8281114c2349f1906cde5346  IN    Contract Creation0 Ether0.023871804
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Custodian
Compiler Text: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.21;

/** @title  A dual control contract.
  *
  * @notice  A general purpose contract that implements dual control over
  * co-operating contracts through a callback mechanism.
  *
  * @dev  This contract implements dual control through a 2-of-N
  * threshold multi-signature scheme. The contract recognizes a set of N signers,
  * and will unlock requests with signatures from any distinct pair of them.
  * This contract signals the unlocking through a co-operative callback
  * scheme.
  * This contract also provides time lock and revocation features.
  * Requests made by a 'primary' account have a default time lock applied.
  * All other request must pay a 1 ETH stake and have an extended time lock
  * applied.
  * A request that is completed will prevent all previous pending requests
  * that share the same callback from being completed: this is the
  * revocation feature.
  *
  * @author  Gemini Trust Company, LLC
  */
contract Custodian {

    // TYPES
    /** @dev  The `Request` struct stores a pending unlocking.
      * `callbackAddress` and `callbackSelector` are the data required to
      * make a callback. The custodian completes the process by
      * calling `callbackAddress.call(callbackSelector, lockId)`, which
      * signals to the contract co-operating with the Custodian that
      * the 2-of-N signatures have been provided and verified.
      */
    struct Request {
        bytes32 lockId;
        bytes4 callbackSelector; // bytes4 and address can be packed into 1 word
        address callbackAddress;
        uint256 idx;
        uint256 timestamp;
        bool extended;
    }

    // EVENTS
    /// @dev  Emitted by successful `requestUnlock` calls.
    event Requested(
        bytes32 _lockId,
        address _callbackAddress,
        bytes4  _callbackSelector,
        uint256 _nonce,
        address _whitelistedAddress,
        bytes32 _requestMsgHash,
        uint256 _timeLockExpiry
    );

    /// @dev  Emitted by `completeUnlock` calls on requests in the time-locked state.
    event TimeLocked(
        uint256 _timeLockExpiry,
        bytes32 _requestMsgHash
    );

    /// @dev  Emitted by successful `completeUnlock` calls.
    event Completed(
        bytes32 _lockId,
        bytes32 _requestMsgHash,
        address _signer1,
        address _signer2
    );

    /// @dev  Emitted by `completeUnlock` calls where the callback failed.
    event Failed(
        bytes32 _lockId,
        bytes32 _requestMsgHash,
        address _signer1,
        address _signer2
    );

    /// @dev  Emitted by successful `extendRequestTimeLock` calls.
    event TimeLockExtended(
        uint256 _timeLockExpiry,
        bytes32 _requestMsgHash
    );

    // MEMBERS
    /** @dev  The count of all requests.
      * This value is used as a nonce, incorporated into the request hash.
      */
    uint256 public requestCount;

    /// @dev  The set of signers: signatures from two signers unlock a pending request.
    mapping (address => bool) public signerSet;

    /// @dev  The map of request hashes to pending requests.
    mapping (bytes32 => Request) public requestMap;

    /// @dev  The map of callback addresses to callback selectors to request indexes.
    mapping (address => mapping (bytes4 => uint256)) public lastCompletedIdxs;

    /** @dev  The default period of time (in seconds) to time-lock requests.
      * All requests will be subject to this default time lock, and the duration
      * is fixed at contract creation.
      */
    uint256 public defaultTimeLock;

    /** @dev  The extended period of time (in seconds) to time-lock requests.
      * Requests not from the primary account are subject to this time lock.
      * The primary account may also elect to extend the time lock on requests
      * that originally received the default.
      */
    uint256 public extendedTimeLock;

    /// @dev  The primary account is the privileged account for making requests.
    address public primary;

    // CONSTRUCTOR
    function Custodian(
        address[] _signers,
        uint256 _defaultTimeLock,
        uint256 _extendedTimeLock,
        address _primary
    )
        public
    {
        // check for at least two `_signers`
        require(_signers.length >= 2);

        // validate time lock params
        require(_defaultTimeLock <= _extendedTimeLock);
        defaultTimeLock = _defaultTimeLock;
        extendedTimeLock = _extendedTimeLock;

        primary = _primary;

        // explicitly initialize `requestCount` to zero
        requestCount = 0;
        // turn the array into a set
        for (uint i = 0; i < _signers.length; i++) {
            // no zero addresses or duplicates
            require(_signers[i] != address(0) && !signerSet[_signers[i]]);
            signerSet[_signers[i]] = true;
        }
    }

    // MODIFIERS
    modifier onlyPrimary {
        require(msg.sender == primary);
        _;
    }

    // METHODS
    /** @notice  Requests an unlocking with a lock identifier and a callback.
      *
      * @dev  If called by an account other than the primary a 1 ETH stake
      * must be paid. This is an anti-spam measure. As well as the callback
      * and the lock identifier parameters a 'whitelisted address' is required
      * for compatibility with existing signature schemes.
      *
      * @param  _lockId  The identifier of a pending request in a co-operating contract.
      * @param  _callbackAddress  The address of a co-operating contract.
      * @param  _callbackSelector  The function selector of a function within
      * the co-operating contract at address `_callbackAddress`.
      * @param  _whitelistedAddress  An address whitelisted in existing
      * offline control protocols.
      *
      * @return  requestMsgHash  The hash of a request message to be signed.
      */
    function requestUnlock(
        bytes32 _lockId,
        address _callbackAddress,
        bytes4 _callbackSelector,
        address _whitelistedAddress
    )
        public
        payable
        returns (bytes32 requestMsgHash)
    {
        require(msg.sender == primary || msg.value >= 1 ether);

        // disallow using a zero value for the callback address
        require(_callbackAddress != address(0));

        uint256 requestIdx = ++requestCount;
        // compute a nonce value
        // - the blockhash prevents prediction of future nonces
        // - the address of this contract prevents conflicts with co-operating contracts using this scheme
        // - the counter prevents conflicts arising from multiple txs within the same block
        uint256 nonce = uint256(keccak256(block.blockhash(block.number - 1), address(this), requestIdx));

        requestMsgHash = keccak256(nonce, _whitelistedAddress, uint256(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF));

        requestMap[requestMsgHash] = Request({
            lockId: _lockId,
            callbackSelector: _callbackSelector,
            callbackAddress: _callbackAddress,
            idx: requestIdx,
            timestamp: block.timestamp,
            extended: false
        });

        // compute the expiry time
        uint256 timeLockExpiry = block.timestamp;
        if (msg.sender == primary) {
            timeLockExpiry += defaultTimeLock;
        } else {
            timeLockExpiry += extendedTimeLock;

            // any sender that is not the creator will get the extended time lock
            requestMap[requestMsgHash].extended = true;
        }

        emit Requested(_lockId, _callbackAddress, _callbackSelector, nonce, _whitelistedAddress, requestMsgHash, timeLockExpiry);
    }

    /** @notice  Completes a pending unlocking with two signatures.
      *
      * @dev  Given a request message hash as two signatures of it from
      * two distinct signers in the signer set, this function completes the
      * unlocking of the pending request by executing the callback.
      *
      * @param  _requestMsgHash  The request message hash of a pending request.
      * @param  _recoveryByte1  The public key recovery byte (27 or 28)
      * @param  _ecdsaR1  The R component of an ECDSA signature (R, S) pair
      * @param  _ecdsaS1  The S component of an ECDSA signature (R, S) pair
      * @param  _recoveryByte2  The public key recovery byte (27 or 28)
      * @param  _ecdsaR2  The R component of an ECDSA signature (R, S) pair
      * @param  _ecdsaS2  The S component of an ECDSA signature (R, S) pair
      *
      * @return  success  True if the callback successfully executed.
      */
    function completeUnlock(
        bytes32 _requestMsgHash,
        uint8 _recoveryByte1, bytes32 _ecdsaR1, bytes32 _ecdsaS1,
        uint8 _recoveryByte2, bytes32 _ecdsaR2, bytes32 _ecdsaS2
    )
        public
        returns (bool success)
    {
        Request storage request = requestMap[_requestMsgHash];

        // copy storage to locals before `delete`
        bytes32 lockId = request.lockId;
        address callbackAddress = request.callbackAddress;
        bytes4 callbackSelector = request.callbackSelector;

        // failing case of the lookup if the callback address is zero
        require(callbackAddress != address(0));

        // reject confirms of earlier withdrawals buried under later confirmed withdrawals
        require(request.idx > lastCompletedIdxs[callbackAddress][callbackSelector]);

        address signer1 = ecrecover(_requestMsgHash, _recoveryByte1, _ecdsaR1, _ecdsaS1);
        require(signerSet[signer1]);

        address signer2 = ecrecover(_requestMsgHash, _recoveryByte2, _ecdsaR2, _ecdsaS2);
        require(signerSet[signer2]);
        require(signer1 != signer2);

        if (request.extended && ((block.timestamp - request.timestamp) < extendedTimeLock)) {
            emit TimeLocked(request.timestamp + extendedTimeLock, _requestMsgHash);
            return false;
        } else if ((block.timestamp - request.timestamp) < defaultTimeLock) {
            emit TimeLocked(request.timestamp + defaultTimeLock, _requestMsgHash);
            return false;
        } else {
            if (address(this).balance > 0) {
                // reward sender with anti-spam payments
                // ignore send success (assign to `success` but this will be overwritten)
                success = msg.sender.send(address(this).balance);
            }

            // raise the waterline for the last completed unlocking
            lastCompletedIdxs[callbackAddress][callbackSelector] = request.idx;
            // and delete the request
            delete requestMap[_requestMsgHash];

            // invoke callback
            success = callbackAddress.call(callbackSelector, lockId);

            if (success) {
                emit Completed(lockId, _requestMsgHash, signer1, signer2);
            } else {
                emit Failed(lockId, _requestMsgHash, signer1, signer2);
            }
        }
    }

    /** @notice  Reclaim the storage of a pending request that is uncompleteable.
      *
      * @dev  If a pending request shares the callback (address and selector) of
      * a later request has has been completed, then the request can no longer
      * be completed. This function will reclaim the contract storage of the
      * pending request.
      *
      * @param  _requestMsgHash  The request message hash of a pending request.
      */
    function deleteUncompletableRequest(bytes32 _requestMsgHash) public {
        Request storage request = requestMap[_requestMsgHash];

        uint256 idx = request.idx;

        require(0 < idx && idx < lastCompletedIdxs[request.callbackAddress][request.callbackSelector]);

        delete requestMap[_requestMsgHash];
    }

    /** @notice  Extend the time lock of a pending request.
      *
      * @dev  Requests made by the primary account receive the default time lock.
      * This function allows the primary account to apply the extended time lock
      * to one its own requests.
      *
      * @param  _requestMsgHash  The request message hash of a pending request.
      */
    function extendRequestTimeLock(bytes32 _requestMsgHash) public onlyPrimary {
        Request storage request = requestMap[_requestMsgHash];

        // reject ‘null’ results from the map lookup
        // this can only be the case if an unknown `_requestMsgHash` is received
        require(request.callbackAddress != address(0));

        // `extendRequestTimeLock` must be idempotent
        require(request.extended != true);

        // set the `extended` flag; note that this is never unset
        request.extended = true;

        emit TimeLockExtended(request.timestamp + extendedTimeLock, _requestMsgHash);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"signerSet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_requestMsgHash","type":"bytes32"},{"name":"_recoveryByte1","type":"uint8"},{"name":"_ecdsaR1","type":"bytes32"},{"name":"_ecdsaS1","type":"bytes32"},{"name":"_recoveryByte2","type":"uint8"},{"name":"_ecdsaR2","type":"bytes32"},{"name":"_ecdsaS2","type":"bytes32"}],"name":"completeUnlock","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requestCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"defaultTimeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_requestMsgHash","type":"bytes32"}],"name":"extendRequestTimeLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_lockId","type":"bytes32"},{"name":"_callbackAddress","type":"address"},{"name":"_callbackSelector","type":"bytes4"},{"name":"_whitelistedAddress","type":"address"}],"name":"requestUnlock","outputs":[{"name":"requestMsgHash","type":"bytes32"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"primary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"extendedTimeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"requestMap","outputs":[{"name":"lockId","type":"bytes32"},{"name":"callbackSelector","type":"bytes4"},{"name":"callbackAddress","type":"address"},{"name":"idx","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"extended","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes4"}],"name":"lastCompletedIdxs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_requestMsgHash","type":"bytes32"}],"name":"deleteUncompletableRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_signers","type":"address[]"},{"name":"_defaultTimeLock","type":"uint256"},{"name":"_extendedTimeLock","type":"uint256"},{"name":"_primary","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_lockId","type":"bytes32"},{"indexed":false,"name":"_callbackAddress","type":"address"},{"indexed":false,"name":"_callbackSelector","type":"bytes4"},{"indexed":false,"name":"_nonce","type":"uint256"},{"indexed":false,"name":"_whitelistedAddress","type":"address"},{"indexed":false,"name":"_requestMsgHash","type":"bytes32"},{"indexed":false,"name":"_timeLockExpiry","type":"uint256"}],"name":"Requested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_timeLockExpiry","type":"uint256"},{"indexed":false,"name":"_requestMsgHash","type":"bytes32"}],"name":"TimeLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_lockId","type":"bytes32"},{"indexed":false,"name":"_requestMsgHash","type":"bytes32"},{"indexed":false,"name":"_signer1","type":"address"},{"indexed":false,"name":"_signer2","type":"address"}],"name":"Completed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_lockId","type":"bytes32"},{"indexed":false,"name":"_requestMsgHash","type":"bytes32"},{"indexed":false,"name":"_signer1","type":"address"},{"indexed":false,"name":"_signer2","type":"address"}],"name":"Failed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_timeLockExpiry","type":"uint256"},{"indexed":false,"name":"_requestMsgHash","type":"bytes32"}],"name":"TimeLockExtended","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b604051610d3d380380610d3d83398101604052808051820191906020018051919060200180519190602001805191506000905060028551101561005157600080fd5b8284111561005e57600080fd5b506004839055600582905560068054600160a060020a031916600160a060020a03831617905560008080555b845181101561014c5760008582815181106100a157fe5b90602001906020020151600160a060020a0316141580156100f65750600160008683815181106100cd57fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205460ff16155b151561010157600080fd5b600180600087848151811061011257fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010161008a565b5050505050610bdd806101606000396000f3006060604052600436106100955763ffffffff60e060020a6000350416631d972d41811461009a5780633b3d5b88146100cd5780635badbe4c146100fd5780639c36e14114610122578063a5ee79d314610135578063a706a2e21461014d578063c6dbdf6114610178578063c8ccaebc146101a7578063d4ecba4f146101ba578063da4b667214610220578063ea21d12d1461024c575b600080fd5b34156100a557600080fd5b6100b9600160a060020a0360043516610262565b604051901515815260200160405180910390f35b34156100d857600080fd5b6100b960043560ff60243581169060443590606435906084351660a43560c435610277565b341561010857600080fd5b610110610738565b60405190815260200160405180910390f35b341561012d57600080fd5b61011061073e565b341561014057600080fd5b61014b600435610744565b005b610110600435600160a060020a03602435811690600160e060020a03196044351690606435166107ff565b341561018357600080fd5b61018b610a74565b604051600160a060020a03909116815260200160405180910390f35b34156101b257600080fd5b610110610a83565b34156101c557600080fd5b6101d0600435610a89565b604051958652600160e060020a03199094166020860152600160a060020a039092166040808601919091526060850191909152608084019190915290151560a083015260c0909101905180910390f35b341561022b57600080fd5b610110600160a060020a0360043516600160e060020a031960243516610ad3565b341561025757600080fd5b61014b600435610af0565b60016020526000908152604090205460ff1681565b600087815260026020526040812080546001820154600160a060020a036401000000008204169060e060020a0284808315156102b257600080fd5b600160a060020a0384166000908152600360209081526040808320600160e060020a0319871684529091529020546002870154116102ef57600080fd5b60018e8e8e8e6040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af1151561034757600080fd5b505060206040510351600160a060020a03811660009081526001602052604090205490925060ff16151561037a57600080fd5b60018e8b8b8b6040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156103d257600080fd5b505060206040510351600160a060020a03811660009081526001602052604090205490915060ff16151561040557600080fd5b600160a060020a03828116908216141561041e57600080fd5b600486015460ff168015610439575060055486600301544203105b15610489577f3799203e067f005a6c8f34114ec2a3c13028f7059ad4e15694497a8428eddfc06005548760030154018f60405191825260208201526040908101905180910390a160009650610727565b6004548660030154420310156104e4577f3799203e067f005a6c8f34114ec2a3c13028f7059ad4e15694497a8428eddfc06004548760030154018f60405191825260208201526040908101905180910390a160009650610727565b600030600160a060020a031631111561052b5733600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19a50505050505b85600201546003600086600160a060020a0316600160a060020a031681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002081905550600260008f600019166000191681526020019081526020016000206000808201600090556001820160006101000a81549063ffffffff02191690556001820160046101000a815490600160a060020a030219169055600282016000905560038201600090556004820160006101000a81549060ff0219169055505083600160a060020a03168360e060020a90048660405160e060020a63ffffffff841602815260048101919091526024016000604051808303816000875af192505050965086156106cc577ffae6acb39f0117c0632c99c9482d4544ed4214f354d09c2956893a90860eb00a858f84846040519384526020840192909252600160a060020a03908116604080850191909152911660608301526080909101905180910390a1610727565b7f217d7e370a35a14c4eb12c5cc1c1505bf1ccd7eede103f3d249c0fabeabd7616858f84846040519384526020840192909252600160a060020a03908116604080850191909152911660608301526080909101905180910390a15b505050505050979650505050505050565b60005481565b60045481565b60065460009033600160a060020a0390811691161461076257600080fd5b50600081815260026020526040902060018101546401000000009004600160a060020a0316151561079257600080fd5b600481015460ff161515600114156107a957600080fd5b60048101805460ff1916600117905560055460038201547f2ffc130c50080124976e8b843579a923e16e0bef4c5adfda2dde3e94c288ba2c91018360405191825260208201526040908101905180910390a15050565b60065460009081908190819033600160a060020a039081169116148061082d5750670de0b6b3a76400003410155b151561083857600080fd5b600160a060020a038716151561084d57600080fd5b600080546001019081905592506000194301403084604051928352600160a060020a03919091166c01000000000000000000000000026020830152603482015260540160405190819003902091508185600019604051928352600160a060020a03919091166c0100000000000000000000000002602083015260348201526054016040518091039020935060c06040519081016040908152898252600160e060020a03198816602080840191909152600160a060020a038a168284015260608301869052426080840152600060a0840181905287815260029091522081518155602082015160018201805463ffffffff191660e060020a90920491909117905560408201518160010160046101000a815481600160a060020a030219169083600160a060020a03160217905550606082015181600201556080820151816003015560a08201516004909101805491151560ff199092169190911790555050600654429033600160a060020a03908116911614156109cd57600454016109ee565b6005546000858152600260205260409020600401805460ff19166001179055015b7fdb7266ce4b13a685194a86c2cb74e34d93b88ba3a4966cf3efdf1abc8ad1cbec88888885898987604051968752600160a060020a039586166020880152600160e060020a031990941660408088019190915260608701939093529316608085015260a084019290925260c083015260e0909101905180910390a1505050949350505050565b600654600160a060020a031681565b60055481565b600260208190526000918252604090912080546001820154928201546003830154600490930154919360e060020a810293640100000000909104600160a060020a03169260ff1686565b600360209081526000928352604080842090915290825290205481565b600081815260026020819052604082209081015490918190108015610b53575060018201546401000000008104600160a060020a0316600090815260036020908152604080832060e060020a909402600160e060020a0319168352929052205481105b1515610b5e57600080fd5b50506000908152600260208190526040822082815560018101805477ffffffffffffffffffffffffffffffffffffffffffffffff191690559081018290556003810191909155600401805460ff191690555600a165627a7a723058201be4a89ad3cec2a64b2153abde14cbc54ea2d2e1e5972b730610435d6d246ef500290000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002a3000000000000000000000000000000000000000000000000000000000000093a80000000000000000000000000d24400ae8bfebb18ca49be86258a3c749cf468530000000000000000000000000000000000000000000000000000000000000006000000000000000000000000d7c14ebd217ce757041dab619a99d740cda02dc500000000000000000000000035d13b3e90ea179cf572945e36aab8b5443bfc69000000000000000000000000cf269986da781407b0eeeac3ea79ac1c9d857d380000000000000000000000003dfa83b9cb39d88c6dace9744d0f709532082296000000000000000000000000ec426164c0a2f89fa70942ca2499decff306ac5a000000000000000000000000f43c8e5ca6072505e4cc8f74228e4d37740d2221

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002a3000000000000000000000000000000000000000000000000000000000000093a80000000000000000000000000d24400ae8bfebb18ca49be86258a3c749cf468530000000000000000000000000000000000000000000000000000000000000006000000000000000000000000d7c14ebd217ce757041dab619a99d740cda02dc500000000000000000000000035d13b3e90ea179cf572945e36aab8b5443bfc69000000000000000000000000cf269986da781407b0eeeac3ea79ac1c9d857d380000000000000000000000003dfa83b9cb39d88c6dace9744d0f709532082296000000000000000000000000ec426164c0a2f89fa70942ca2499decff306ac5a000000000000000000000000f43c8e5ca6072505e4cc8f74228e4d37740d2221

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 000000000000000000000000000000000000000000000000000000000002a300
Arg [2] : 0000000000000000000000000000000000000000000000000000000000093a80
Arg [3] : 000000000000000000000000d24400ae8bfebb18ca49be86258a3c749cf46853
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 000000000000000000000000d7c14ebd217ce757041dab619a99d740cda02dc5
Arg [6] : 00000000000000000000000035d13b3e90ea179cf572945e36aab8b5443bfc69
Arg [7] : 000000000000000000000000cf269986da781407b0eeeac3ea79ac1c9d857d38
Arg [8] : 0000000000000000000000003dfa83b9cb39d88c6dace9744d0f709532082296
Arg [9] : 000000000000000000000000ec426164c0a2f89fa70942ca2499decff306ac5a
Arg [10] : 000000000000000000000000f43c8e5ca6072505e4cc8f74228e4d37740d2221


   Swarm Source:
bzzr://1be4a89ad3cec2a64b2153abde14cbc54ea2d2e1e5972b730610435d6d246ef5

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.