Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 671 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Batch Deposit | 3302896 | 2 days ago | IN | 32 ETH | 0.00000007 | ||||
Batch Deposit | 3294783 | 3 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3292536 | 3 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3284454 | 4 days ago | IN | 32 ETH | 0.00005887 | ||||
Batch Deposit | 3283902 | 4 days ago | IN | 32 ETH | 0.00005887 | ||||
Batch Deposit | 3277747 | 5 days ago | IN | 32 ETH | 0.00006708 | ||||
Batch Deposit | 3277714 | 5 days ago | IN | 32 ETH | 0.00005989 | ||||
Batch Deposit | 3277708 | 5 days ago | IN | 32 ETH | 0.00005629 | ||||
Batch Deposit | 3249478 | 10 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3249473 | 10 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3249468 | 10 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3200879 | 17 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3163375 | 23 days ago | IN | 32 ETH | 0.00006892 | ||||
Batch Deposit | 3162450 | 23 days ago | IN | 32 ETH | 0.0000235 | ||||
Batch Deposit | 3157888 | 23 days ago | IN | 32 ETH | 0.00003224 | ||||
Batch Deposit | 3157477 | 23 days ago | IN | 32 ETH | 0.00008654 | ||||
Batch Deposit | 3157323 | 23 days ago | IN | 32 ETH | 0.0000698 | ||||
Batch Deposit | 3157230 | 23 days ago | IN | 32 ETH | 0.00005573 | ||||
Batch Deposit | 3151277 | 24 days ago | IN | 32 ETH | 0.00009476 | ||||
Batch Deposit | 3144613 | 25 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3144605 | 25 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3144601 | 25 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3144594 | 25 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3144569 | 25 days ago | IN | 32 ETH | 0.00000006 | ||||
Batch Deposit | 3143940 | 25 days ago | IN | 32 ETH | 0.00000006 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
3302896 | 2 days ago | 32 ETH | ||||
3294783 | 3 days ago | 32 ETH | ||||
3292536 | 3 days ago | 32 ETH | ||||
3284454 | 4 days ago | 32 ETH | ||||
3283902 | 4 days ago | 32 ETH | ||||
3277747 | 5 days ago | 32 ETH | ||||
3277714 | 5 days ago | 32 ETH | ||||
3277708 | 5 days ago | 32 ETH | ||||
3249478 | 10 days ago | 32 ETH | ||||
3249473 | 10 days ago | 32 ETH | ||||
3249468 | 10 days ago | 32 ETH | ||||
3234979 | 12 days ago | 32 ETH | ||||
3234979 | 12 days ago | 32 ETH | ||||
3229146 | 13 days ago | 32 ETH | ||||
3229146 | 13 days ago | 32 ETH | ||||
3229146 | 13 days ago | 64 ETH | ||||
3228663 | 13 days ago | 32 ETH | ||||
3228663 | 13 days ago | 32 ETH | ||||
3228663 | 13 days ago | 32 ETH | ||||
3228663 | 13 days ago | 32 ETH | ||||
3228663 | 13 days ago | 32 ETH | ||||
3228663 | 13 days ago | 160 ETH | ||||
3228134 | 13 days ago | 32 ETH | ||||
3228134 | 13 days ago | 32 ETH | ||||
3210900 | 15 days ago | 32 ETH |
Loading...
Loading
Contract Name:
BatchDeposit
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: CC0-1.0 pragma solidity 0.8.9; import {IDepositContract} from "./eth2-official-deposit-contract.sol"; interface IBatchDeposit { function batchDeposit(uint validUntil, bytes calldata args) external payable; } contract BatchDeposit is IBatchDeposit { IDepositContract public immutable depositContract; uint constant private pubkeyLength = 48; uint constant private withdrawalCredentialsLength = 32; uint constant private signatureLength = 96; uint constant private depositDataRootLength = 32; uint constant private depositArgsLength = pubkeyLength + withdrawalCredentialsLength + signatureLength + depositDataRootLength; constructor(IDepositContract _depositContract) { require(address(_depositContract) != address(0), "Please specify the correct deposit contract"); depositContract = _depositContract; } function batchDeposit(uint validUntil, bytes calldata args) external payable { require( block.timestamp < validUntil, "Transaction submitted after agreed upon deadline"); require( args.length % depositArgsLength == 0, "Input data length must be multiple of depositArgsLength" ); uint count = args.length / depositArgsLength; require(msg.value % 32 ether == 0, "msg.value must be multiple of 32 ETH"); require(msg.value / 32 ether == count, "msg.value must be 32 ETH * count"); uint withdrawalCredentialsStart; uint signatureStart; uint depositDataRootStart; for (uint pubkeyStart = 0; pubkeyStart < args.length; ) { unchecked { withdrawalCredentialsStart = pubkeyStart + pubkeyLength; signatureStart = withdrawalCredentialsStart + withdrawalCredentialsLength; depositDataRootStart = signatureStart + signatureLength; } uint depositDataRootEnd; unchecked { depositDataRootEnd = depositDataRootStart + depositDataRootLength; } bytes32 depositDataRoot = bytes32(args[depositDataRootStart : depositDataRootEnd]); depositContract.deposit{value: 32 ether}( args[pubkeyStart : withdrawalCredentialsStart], args[withdrawalCredentialsStart : signatureStart], args[signatureStart : depositDataRootStart], depositDataRoot ); pubkeyStart = depositDataRootEnd; } } }
// ┏━━━┓━┏┓━┏┓━━┏━━━┓━━┏━━━┓━━━━┏━━━┓━━━━━━━━━━━━━━━━━━━┏┓━━━━━┏━━━┓━━━━━━━━━┏┓━━━━━━━━━━━━━━┏┓━ // ┃┏━━┛┏┛┗┓┃┃━━┃┏━┓┃━━┃┏━┓┃━━━━┗┓┏┓┃━━━━━━━━━━━━━━━━━━┏┛┗┓━━━━┃┏━┓┃━━━━━━━━┏┛┗┓━━━━━━━━━━━━┏┛┗┓ // ┃┗━━┓┗┓┏┛┃┗━┓┗┛┏┛┃━━┃┃━┃┃━━━━━┃┃┃┃┏━━┓┏━━┓┏━━┓┏━━┓┏┓┗┓┏┛━━━━┃┃━┗┛┏━━┓┏━┓━┗┓┏┛┏━┓┏━━┓━┏━━┓┗┓┏┛ // ┃┏━━┛━┃┃━┃┏┓┃┏━┛┏┛━━┃┃━┃┃━━━━━┃┃┃┃┃┏┓┃┃┏┓┃┃┏┓┃┃━━┫┣┫━┃┃━━━━━┃┃━┏┓┃┏┓┃┃┏┓┓━┃┃━┃┏┛┗━┓┃━┃┏━┛━┃┃━ // ┃┗━━┓━┃┗┓┃┃┃┃┃┃┗━┓┏┓┃┗━┛┃━━━━┏┛┗┛┃┃┃━┫┃┗┛┃┃┗┛┃┣━━┃┃┃━┃┗┓━━━━┃┗━┛┃┃┗┛┃┃┃┃┃━┃┗┓┃┃━┃┗┛┗┓┃┗━┓━┃┗┓ // ┗━━━┛━┗━┛┗┛┗┛┗━━━┛┗┛┗━━━┛━━━━┗━━━┛┗━━┛┃┏━┛┗━━┛┗━━┛┗┛━┗━┛━━━━┗━━━┛┗━━┛┗┛┗┛━┗━┛┗┛━┗━━━┛┗━━┛━┗━┛ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┃┃━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┗┛━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // SPDX-License-Identifier: CC0-1.0 pragma solidity 0.8.9; // This interface is designed to be compatible with the Vyper version. /// @notice This is the Ethereum 2.0 deposit contract interface. /// For more information see the Phase 0 specification under https://github.com/ethereum/eth2.0-specs interface IDepositContract { /// @notice A processed deposit event. event DepositEvent( bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index ); /// @notice Submit a Phase 0 DepositData object. /// @param pubkey A BLS12-381 public key. /// @param withdrawal_credentials Commitment to a public key for withdrawals. /// @param signature A BLS12-381 signature. /// @param deposit_data_root The SHA-256 hash of the SSZ-encoded DepositData object. /// Used as a protection against malformed input. function deposit( bytes calldata pubkey, bytes calldata withdrawal_credentials, bytes calldata signature, bytes32 deposit_data_root ) external payable; /// @notice Query the current deposit root hash. /// @return The deposit root hash. function get_deposit_root() external view returns (bytes32); /// @notice Query the current deposit count. /// @return The deposit count encoded as a little endian 64-bit number. function get_deposit_count() external view returns (bytes memory); } // Based on official specification in https://eips.ethereum.org/EIPS/eip-165 interface ERC165 { /// @notice Query if a contract implements an interface /// @param interfaceId The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceId` and /// `interfaceId` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceId) external pure returns (bool); } // This is a rewrite of the Vyper Eth2.0 deposit contract in Solidity. // It tries to stay as close as possible to the original source code. /// @notice This is the Ethereum 2.0 deposit contract interface. /// For more information see the Phase 0 specification under https://github.com/ethereum/eth2.0-specs contract DepositContract is IDepositContract, ERC165 { uint constant DEPOSIT_CONTRACT_TREE_DEPTH = 32; // NOTE: this also ensures `deposit_count` will fit into 64-bits uint constant MAX_DEPOSIT_COUNT = 2**DEPOSIT_CONTRACT_TREE_DEPTH - 1; bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] branch; uint256 deposit_count; bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] zero_hashes; constructor() { // Compute hashes in empty sparse Merkle tree for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH - 1; height++) zero_hashes[height + 1] = sha256(abi.encodePacked(zero_hashes[height], zero_hashes[height])); } function get_deposit_root() override external view returns (bytes32) { bytes32 node; uint size = deposit_count; for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) { if ((size & 1) == 1) node = sha256(abi.encodePacked(branch[height], node)); else node = sha256(abi.encodePacked(node, zero_hashes[height])); size /= 2; } return sha256(abi.encodePacked( node, to_little_endian_64(uint64(deposit_count)), bytes24(0) )); } function get_deposit_count() override external view returns (bytes memory) { return to_little_endian_64(uint64(deposit_count)); } function deposit( bytes calldata pubkey, bytes calldata withdrawal_credentials, bytes calldata signature, bytes32 deposit_data_root ) override external payable { // Extended ABI length checks since dynamic types are used. require(pubkey.length == 48, "DepositContract: invalid pubkey length"); require(withdrawal_credentials.length == 32, "DepositContract: invalid withdrawal_credentials length"); require(signature.length == 96, "DepositContract: invalid signature length"); // Check deposit amount require(msg.value >= 1 ether, "DepositContract: deposit value too low"); require(msg.value % 1 gwei == 0, "DepositContract: deposit value not multiple of gwei"); uint deposit_amount = msg.value / 1 gwei; require(deposit_amount <= type(uint64).max, "DepositContract: deposit value too high"); // Emit `DepositEvent` log bytes memory amount = to_little_endian_64(uint64(deposit_amount)); emit DepositEvent( pubkey, withdrawal_credentials, amount, signature, to_little_endian_64(uint64(deposit_count)) ); // Compute deposit data root (`DepositData` hash tree root) bytes32 pubkey_root = sha256(abi.encodePacked(pubkey, bytes16(0))); bytes32 signature_root = sha256(abi.encodePacked( sha256(abi.encodePacked(signature[:64])), sha256(abi.encodePacked(signature[64:], bytes32(0))) )); bytes32 node = sha256(abi.encodePacked( sha256(abi.encodePacked(pubkey_root, withdrawal_credentials)), sha256(abi.encodePacked(amount, bytes24(0), signature_root)) )); // Verify computed and expected deposit data roots match require(node == deposit_data_root, "DepositContract: reconstructed DepositData does not match supplied deposit_data_root"); // Avoid overflowing the Merkle tree (and prevent edge case in computing `branch`) require(deposit_count < MAX_DEPOSIT_COUNT, "DepositContract: merkle tree full"); // Add deposit data root to Merkle tree (update a single `branch` node) deposit_count += 1; uint size = deposit_count; for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) { if ((size & 1) == 1) { branch[height] = node; return; } node = sha256(abi.encodePacked(branch[height], node)); size /= 2; } // As the loop should always end prematurely with the `return` statement, // this code should be unreachable. We assert `false` just to be safe. assert(false); } function supportsInterface(bytes4 interfaceId) override external pure returns (bool) { return interfaceId == type(ERC165).interfaceId || interfaceId == type(IDepositContract).interfaceId; } function to_little_endian_64(uint64 value) internal pure returns (bytes memory ret) { ret = new bytes(8); bytes8 bytesValue = bytes8(value); // Byteswapping during copying to bytes. ret[0] = bytesValue[7]; ret[1] = bytesValue[6]; ret[2] = bytesValue[5]; ret[3] = bytesValue[4]; ret[4] = bytesValue[3]; ret[5] = bytesValue[2]; ret[6] = bytesValue[1]; ret[7] = bytesValue[0]; } }
[{"inputs":[{"internalType":"contract IDepositContract","name":"_depositContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"validUntil","type":"uint256"},{"internalType":"bytes","name":"args","type":"bytes"}],"name":"batchDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"depositContract","outputs":[{"internalType":"contract IDepositContract","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5060405161079d38038061079d83398101604081905261002f916100ae565b6001600160a01b03811661009d5760405162461bcd60e51b815260206004820152602b60248201527f506c6561736520737065636966792074686520636f7272656374206465706f7360448201526a1a5d0818dbdb9d1c9858dd60aa1b606482015260840160405180910390fd5b6001600160a01b03166080526100de565b6000602082840312156100c057600080fd5b81516001600160a01b03811681146100d757600080fd5b9392505050565b60805161069e6100ff600039600081816055015261038d015261069e6000f3fe6080604052600436106100295760003560e01c8063592c0b7d1461002e578063e94ad65b14610043575b600080fd5b61004161003c366004610455565b6100a0565b005b34801561004f57600080fd5b506100777f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b824210610134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f5472616e73616374696f6e207375626d6974746564206166746572206167726560448201527f65642075706f6e20646561646c696e650000000000000000000000000000000060648201526084015b60405180910390fd5b602060606101438260306104d1565b61014d91906104d1565b61015791906104d1565b610161908261053f565b156101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f496e7075742064617461206c656e677468206d757374206265206d756c74697060448201527f6c65206f66206465706f736974417267734c656e677468000000000000000000606482015260840161012b565b6000602060606101ff8260306104d1565b61020991906104d1565b61021391906104d1565b61021d9083610553565b90506102326801bc16d674ec8000003461053f565b156102be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6d73672e76616c7565206d757374206265206d756c7469706c65206f6620333260448201527f2045544800000000000000000000000000000000000000000000000000000000606482015260840161012b565b806102d26801bc16d674ec80000034610553565b14610339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6d73672e76616c7565206d75737420626520333220455448202a20636f756e74604482015260640161012b565b60008080805b8581101561044b5760308101935060508101925060b08101915060d08101600061036b82858a8c610567565b61037491610591565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663228951186801bc16d674ec8000006103c889878d8f610567565b8d8d8c908c926103da93929190610567565b8f8f8d908d926103ec93929190610567565b896040518963ffffffff1660e01b815260040161040f9796959493929190610617565b6000604051808303818588803b15801561042857600080fd5b505af115801561043c573d6000803e3d6000fd5b5050505050819250505061033f565b5050505050505050565b60008060006040848603121561046a57600080fd5b83359250602084013567ffffffffffffffff8082111561048957600080fd5b818601915086601f83011261049d57600080fd5b8135818111156104ac57600080fd5b8760208285010111156104be57600080fd5b6020830194508093505050509250925092565b6000821982111561050b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261054e5761054e610510565b500690565b60008261056257610562610510565b500490565b6000808585111561057757600080fd5b8386111561058457600080fd5b5050820193919092039150565b803560208310156105c8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b165b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600061062b60808301898b6105ce565b828103602084015261063e81888a6105ce565b905082810360408401526106538186886105ce565b9150508260608301529897505050505050505056fea2646970667358221220074b09d874e02c55c037e2f92c03ac96e1141c8f0575df39a6b7c7521d62a68664736f6c634300080900330000000000000000000000004242424242424242424242424242424242424242
Deployed Bytecode
0x6080604052600436106100295760003560e01c8063592c0b7d1461002e578063e94ad65b14610043575b600080fd5b61004161003c366004610455565b6100a0565b005b34801561004f57600080fd5b506100777f000000000000000000000000424242424242424242424242424242424242424281565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b824210610134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f5472616e73616374696f6e207375626d6974746564206166746572206167726560448201527f65642075706f6e20646561646c696e650000000000000000000000000000000060648201526084015b60405180910390fd5b602060606101438260306104d1565b61014d91906104d1565b61015791906104d1565b610161908261053f565b156101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f496e7075742064617461206c656e677468206d757374206265206d756c74697060448201527f6c65206f66206465706f736974417267734c656e677468000000000000000000606482015260840161012b565b6000602060606101ff8260306104d1565b61020991906104d1565b61021391906104d1565b61021d9083610553565b90506102326801bc16d674ec8000003461053f565b156102be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6d73672e76616c7565206d757374206265206d756c7469706c65206f6620333260448201527f2045544800000000000000000000000000000000000000000000000000000000606482015260840161012b565b806102d26801bc16d674ec80000034610553565b14610339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6d73672e76616c7565206d75737420626520333220455448202a20636f756e74604482015260640161012b565b60008080805b8581101561044b5760308101935060508101925060b08101915060d08101600061036b82858a8c610567565b61037491610591565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042424242424242424242424242424242424242421663228951186801bc16d674ec8000006103c889878d8f610567565b8d8d8c908c926103da93929190610567565b8f8f8d908d926103ec93929190610567565b896040518963ffffffff1660e01b815260040161040f9796959493929190610617565b6000604051808303818588803b15801561042857600080fd5b505af115801561043c573d6000803e3d6000fd5b5050505050819250505061033f565b5050505050505050565b60008060006040848603121561046a57600080fd5b83359250602084013567ffffffffffffffff8082111561048957600080fd5b818601915086601f83011261049d57600080fd5b8135818111156104ac57600080fd5b8760208285010111156104be57600080fd5b6020830194508093505050509250925092565b6000821982111561050b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261054e5761054e610510565b500690565b60008261056257610562610510565b500490565b6000808585111561057757600080fd5b8386111561058457600080fd5b5050820193919092039150565b803560208310156105c8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b165b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600061062b60808301898b6105ce565b828103602084015261063e81888a6105ce565b905082810360408401526106538186886105ce565b9150508260608301529897505050505050505056fea2646970667358221220074b09d874e02c55c037e2f92c03ac96e1141c8f0575df39a6b7c7521d62a68664736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004242424242424242424242424242424242424242
-----Decoded View---------------
Arg [0] : _depositContract (address): 0x4242424242424242424242424242424242424242
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004242424242424242424242424242424242424242
Deployed Bytecode Sourcemap
244:2315:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;942:1615;;;;;;:::i;:::-;;:::i;:::-;;289:49;;;;;;;;;;;;;;;;;;878:42:2;866:55;;;848:74;;836:2;821:18;289:49:0;;;;;;;942:1615;1068:10;1050:15;:28;1029:114;;;;;;;1135:2:2;1029:114:0;;;1117:21:2;1174:2;1154:18;;;1147:30;1213:34;1193:18;;;1186:62;1284:18;1264;;;1257:46;1320:19;;1029:114:0;;;;;;;;;544:2;490;602:50;544:2;382;602:50;:::i;:::-;:76;;;;:::i;:::-;:108;;;;:::i;:::-;1174:31;;:4;:31;:::i;:::-;:36;1153:138;;;;;;;2145:2:2;1153:138:0;;;2127:21:2;2184:2;2164:18;;;2157:30;2223:34;2203:18;;;2196:62;2294:25;2274:18;;;2267:53;2337:19;;1153:138:0;1943:419:2;1153:138:0;1301:10;544:2;490;602:50;544:2;382;602:50;:::i;:::-;:76;;;;:::i;:::-;:108;;;;:::i;:::-;1314:31;;:4;:31;:::i;:::-;1301:44;-1:-1:-1;1363:20:0;1375:8;1363:9;:20;:::i;:::-;:25;1355:74;;;;;;;2694:2:2;1355:74:0;;;2676:21:2;2733:2;2713:18;;;2706:30;2772:34;2752:18;;;2745:62;2843:6;2823:18;;;2816:34;2867:19;;1355:74:0;2492:400:2;1355:74:0;1471:5;1447:20;1459:8;1447:9;:20;:::i;:::-;:29;1439:74;;;;;;;3099:2:2;1439:74:0;;;3081:21:2;;;3118:18;;;3111:30;3177:34;3157:18;;;3150:62;3229:18;;1439:74:0;2897:356:2;1439:74:0;1524:31;;;;1630:921;1657:25;;;1630:921;;;382:2;1769:26;;;-1:-1:-1;1830:56:0;;;;-1:-1:-1;1927:32:0;;;;-1:-1:-1;2058:44:0;;;1988:23;2152:47;2058:44;1927:32;2152:4;;:47;:::i;:::-;2144:56;;;:::i;:::-;2118:82;-1:-1:-1;2215:23:0;:15;:23;;2246:8;2273:46;2292:26;2278:11;2273:4;;:46;:::i;:::-;2337:4;;2342:26;2337:49;2371:14;2337:49;;;;;;;:::i;:::-;2404:4;;2409:14;2404:43;2426:20;2404:43;;;;;;;:::i;:::-;2465:15;2215:279;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:18;2508:32;;1686:865;;1630:921;;;;1019:1538;;;;942:1615;;;:::o;14:659:2:-;93:6;101;109;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;214:9;201:23;191:33;;275:2;264:9;260:18;247:32;298:18;339:2;331:6;328:14;325:34;;;355:1;352;345:12;325:34;393:6;382:9;378:22;368:32;;438:7;431:4;427:2;423:13;419:27;409:55;;460:1;457;450:12;409:55;500:2;487:16;526:2;518:6;515:14;512:34;;;542:1;539;532:12;512:34;587:7;582:2;573:6;569:2;565:15;561:24;558:37;555:57;;;608:1;605;598:12;555:57;639:2;635;631:11;621:21;;661:6;651:16;;;;;14:659;;;;;:::o;1350:282::-;1390:3;1421:1;1417:6;1414:1;1411:13;1408:193;;;1457:77;1454:1;1447:88;1558:4;1555:1;1548:15;1586:4;1583:1;1576:15;1408:193;-1:-1:-1;1617:9:2;;1350:282::o;1637:184::-;1689:77;1686:1;1679:88;1786:4;1783:1;1776:15;1810:4;1807:1;1800:15;1826:112;1858:1;1884;1874:35;;1889:18;;:::i;:::-;-1:-1:-1;1923:9:2;;1826:112::o;2367:120::-;2407:1;2433;2423:35;;2438:18;;:::i;:::-;-1:-1:-1;2472:9:2;;2367:120::o;3258:331::-;3363:9;3374;3416:8;3404:10;3401:24;3398:44;;;3438:1;3435;3428:12;3398:44;3467:6;3457:8;3454:20;3451:40;;;3487:1;3484;3477:12;3451:40;-1:-1:-1;;3513:23:2;;;3558:25;;;;;-1:-1:-1;3258:331:2:o;3594:315::-;3714:19;;3753:2;3745:11;;3742:161;;;3825:66;3814:2;3810:12;;;3807:1;3803:20;3799:93;3788:105;3742:161;3594:315;;;;:::o;3914:325::-;4002:6;3997:3;3990:19;4054:6;4047:5;4040:4;4035:3;4031:14;4018:43;;4106:1;4099:4;4090:6;4085:3;4081:16;4077:27;4070:38;3972:3;4228:4;4158:66;4153:2;4145:6;4141:15;4137:88;4132:3;4128:98;4124:109;4117:116;;3914:325;;;;:::o;4244:709::-;4559:3;4548:9;4541:22;4522:4;4586:62;4643:3;4632:9;4628:19;4620:6;4612;4586:62;:::i;:::-;4696:9;4688:6;4684:22;4679:2;4668:9;4664:18;4657:50;4730:49;4772:6;4764;4756;4730:49;:::i;:::-;4716:63;;4827:9;4819:6;4815:22;4810:2;4799:9;4795:18;4788:50;4855:49;4897:6;4889;4881;4855:49;:::i;:::-;4847:57;;;4940:6;4935:2;4924:9;4920:18;4913:34;4244:709;;;;;;;;;;:::o
Swarm Source
ipfs://074b09d874e02c55c037e2f92c03ac96e1141c8f0575df39a6b7c7521d62a686
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.