Contract Overview
Balance:
0 Ether
EtherValue:
$0
Transactions:
4 txns
TxHash | Block | Age | From | To | Value | [TxFee] | |
---|---|---|---|---|---|---|---|
0x6f8f6a03fdc0850fdb11d2aa1bda0f022e9cb8e353320460c1369f2a43150b0f | 6302878 | 160 days 8 hrs ago | Gemini_1 | IN | 0x9a7b5f6e453d0cda978163cb4a9a88367250a52d | 0 Ether | 0.002819982 |
0x0dd7848e7548b127e1178406b00c3fac11c585da837122dc0b083e0cbcc122c3 | 6302877 | 160 days 8 hrs ago | Gemini_1 | IN | 0x9a7b5f6e453d0cda978163cb4a9a88367250a52d | 0 Ether | 0.002819982 |
0x7aed002d28fc62c4712edd0cc04eb27a5004dc04968a625a18b71d24345ddf6f | 6302607 | 160 days 9 hrs ago | Gemini_1 | IN | 0x9a7b5f6e453d0cda978163cb4a9a88367250a52d | 0 Ether | 0.002819982 |
0xd1c50cd9278220efee759802e50082a5efef59658165decbdf4243daa06dc323 | 6302603 | 160 days 9 hrs ago | Gemini_1 | IN | 0x9a7b5f6e453d0cda978163cb4a9a88367250a52d | 0 Ether | 0.003149982 |
0x536cad5dc484a0a2efaff4a60a4d2ed7038bbf6e17c846b95b37c6ddf3fe1b5f | 6301734 | 160 days 13 hrs ago | 0x4c2f150fc90fed3d8281114c2349f1906cde5346 | IN | Contract Creation | 0 Ether | 0.023871804 |
[ Download CSV Export ]
Internal Transactions as a result of Contract Execution
Parent TxHash | Block | Age | From | To | Value |
---|
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.
Contract Source Code Verified (Exact Match)
Contract Source Code Verified (Exact Match)
Contract Name: | Custodian |
Compiler Version: | v0.4.21+commit.dfe3193c |
Optimization Enabled: | Yes |
Runs (Optimizer): | 200 |
Contract Source Code
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
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
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.