Sepolia Testnet

Contract

0x8162d56A21D0ee799Eef055C3acC2b4F776f693a
Source Code

Overview

ETH Balance

0 ETH

Multi Chain

Multichain Addresses

0 address found via
Transaction Hash
Method
Block
From
To
Value
Publish43335552023-09-21 12:06:0080 days 7 hrs ago1695297960IN
0x8162d5...776f693a
0 ETH0.004283914.17959237
Publish43335112023-09-21 11:56:1280 days 7 hrs ago1695297372IN
0x8162d5...776f693a
0 ETH0.001723471.70991268
Publish43334712023-09-21 11:47:3680 days 8 hrs ago1695296856IN
0x8162d5...776f693a
0 ETH0.001265061.23421111
Publish43334472023-09-21 11:41:4880 days 8 hrs ago1695296508IN
0x8162d5...776f693a
0 ETH0.001044431.06665335
Publish43177092023-09-19 3:28:3682 days 16 hrs ago1695094116IN
0x8162d5...776f693a
0 ETH0.000983931.00000001
Publish43176992023-09-19 3:26:3682 days 16 hrs ago1695093996IN
0x8162d5...776f693a
0 ETH0.000979131.00000001
Publish43176712023-09-19 3:21:0082 days 16 hrs ago1695093660IN
0x8162d5...776f693a
0 ETH0.0010011.00000001
Publish43176372023-09-19 3:14:0082 days 16 hrs ago1695093240IN
0x8162d5...776f693a
0 ETH0.000979171.00000001
Publish43164782023-09-18 23:09:3682 days 20 hrs ago1695078576IN
0x8162d5...776f693a
0 ETH0.001024841.00000302
Publish43164232023-09-18 22:57:4882 days 20 hrs ago1695077868IN
0x8162d5...776f693a
0 ETH0.001007681.0000034
Publish43164032023-09-18 22:53:3682 days 21 hrs ago1695077616IN
0x8162d5...776f693a
0 ETH0.000979171.0000042
Publish43163362023-09-18 22:39:0082 days 21 hrs ago1695076740IN
0x8162d5...776f693a
0 ETH0.000979171.00001132
Publish43161532023-09-18 22:00:4882 days 21 hrs ago1695074448IN
0x8162d5...776f693a
0 ETH0.001025031.00002375
Publish43161372023-09-18 21:57:1282 days 21 hrs ago1695074232IN
0x8162d5...776f693a
0 ETH0.000979251.00004672
Publish43159422023-09-18 21:14:1282 days 22 hrs ago1695071652IN
0x8162d5...776f693a
0 ETH0.000983881.00481034
Publish43158452023-09-18 20:53:1282 days 23 hrs ago1695070392IN
0x8162d5...776f693a
0 ETH0.001014421.00665682
Publish43158342023-09-18 20:50:4882 days 23 hrs ago1695070248IN
0x8162d5...776f693a
0 ETH0.000983931.00487871
Publish43158182023-09-18 20:47:2482 days 23 hrs ago1695070044IN
0x8162d5...776f693a
0 ETH0.000982621.00350974
Publish43158082023-09-18 20:45:1282 days 23 hrs ago1695069912IN
0x8162d5...776f693a
0 ETH0.000981681.00250683
Publish43157442023-09-18 20:31:4882 days 23 hrs ago1695069108IN
0x8162d5...776f693a
0 ETH0.000986491.00282377
Publish43157182023-09-18 20:26:2482 days 23 hrs ago1695068784IN
0x8162d5...776f693a
0 ETH0.000984831.00578168
Publish43157092023-09-18 20:24:2482 days 23 hrs ago1695068664IN
0x8162d5...776f693a
0 ETH0.001000761.00448802
0x6080604043156842023-09-18 20:18:4882 days 23 hrs ago1695068328IN
 Create: TechnicalPreview
0 ETH0.002979352.50139561

Advanced mode:
Parent Txn Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TechnicalPreview

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-09-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;

interface IElasticERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    // Additional mint and burn functions
    function burn(address account, uint256 amount) external;
    function mint(address account, uint256 amount) external;

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

struct BatchPublicInputs {
   bytes32[16] tx_in;
   bytes32 current_root;
   bytes32 amount_public_in;
   bytes32 amount_public_out;
   bytes32[16] commitment_out;
   bytes32 recipient;
   bytes32 oracle;
   bytes32 old_root;
   bytes32 new_root;
   bytes32[16] nullifier_hashes;
}

interface IVerifier {
    function verify(
        bytes calldata,
        bytes32[] calldata
    ) external view returns (bool);
}

contract TechnicalPreview {
    IVerifier public verifier;
    IElasticERC20 token;
    bytes32[] public validRoots;

    uint256 public MAX_FIELD_SIZE = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000;

    mapping(bytes32 => bytes32) public utxoPrevRoots;
    mapping(bytes32 => bool) public nullifierHashes;
    mapping(bytes32 => bool) public commitments;
    mapping(bytes32 => bytes32[]) public utxo;
    
    
    bytes32 public merkleRoot =
        0x016a430aa58685aba1311244a973a3bc358859da86784be51094368e8fb6f720;

    constructor(IVerifier _verifier, address _token) {
        verifier = _verifier;
        token = IElasticERC20(_token);
        validRoots.push(merkleRoot);
    }

    function getSpentNullifiers(bytes32[] calldata _nullifierHashes) external view returns (bool[] memory spent) {
        uint256 nullifierHashesLength = _nullifierHashes.length;
        spent = new bool[](nullifierHashesLength);
        for (uint256 i; i < nullifierHashesLength; i++) {
            if (isSpent(_nullifierHashes[i])) { 
                spent[i] = true;
            }
        }
    }

    function getCommitment(bytes32 _commitment) public view returns (bool) {
        return commitments[_commitment];
    }

    function getUtxoFromRoot(bytes32 _root) public view returns (bytes32[] memory) {
        return utxo[_root];
    }

    function getRootFromUtxo(bytes32 _utxo) public view returns (bytes32) {
        return utxoPrevRoots[_utxo];
    }

    function getValidRoots() public view returns (bytes32[] memory) {
        return validRoots;
    }

    function publish(
        bytes calldata _proof,
        BatchPublicInputs calldata _batch
    ) public payable {
        require(uint256(_batch.old_root) == uint256(merkleRoot), "invalid root");

        for (uint256 i = 0; i < _batch.nullifier_hashes.length; i++) {
            if (_batch.nullifier_hashes[i] == 0) continue;
            require(!nullifierHashes[_batch.nullifier_hashes[i]], "nullifier spent");
            nullifierHashes[_batch.nullifier_hashes[i]] = true;
        }

        for (uint256 i = 0; i < _batch.commitment_out.length; i++) {
            require(!commitments[_batch.commitment_out[i]], "commitment exists");
            utxo[_batch.old_root].push(_batch.commitment_out[i]);
            utxoPrevRoots[_batch.commitment_out[i]] = _batch.old_root;
        }

        token.mint(address(uint160(uint256(_batch.recipient))), uint256(_batch.amount_public_out));

        validRoots.push(_batch.new_root);

        merkleRoot = _batch.new_root;

        require(verifier.verify(_proof, flattenBatchPublicInputs(_batch)), "invalid proof");
    }

    
    function isSpent(bytes32 _nullifierHash) public view returns (bool) {
        return nullifierHashes[_nullifierHash];
    }

    function verifyProof(
        bytes calldata _proof,
        bytes32[] memory _publicInputs
    ) public view returns (bool) {
        return verifier.verify(_proof, _publicInputs);
    }

    function flattenBatchPublicInputs(BatchPublicInputs memory input) public pure returns (bytes32[] memory) {
        bytes32[] memory flatArray = new bytes32[](55);
        uint256 idx = 0;
        for (uint i = 0; i < 16; i++) flatArray[idx++] = input.tx_in[i];
        flatArray[idx++] = input.current_root;
        flatArray[idx++] = input.amount_public_in;
        flatArray[idx++] = input.amount_public_out;
        for (uint i = 0; i < 16; i++) flatArray[idx++] = input.commitment_out[i];
        flatArray[idx++] = input.recipient;
        flatArray[idx++] = input.oracle;
        flatArray[idx++] = input.old_root;
        flatArray[idx++] = input.new_root;
        for (uint i = 0; i < 16; i++) flatArray[idx++] = input.nullifier_hashes[i];

        for (uint256 i = 0; i < flatArray.length; i++) {
            require(uint256(flatArray[i]) < 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000, "too large!");
        }
        
        return flatArray;
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract IVerifier","name":"_verifier","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MAX_FIELD_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32[16]","name":"tx_in","type":"bytes32[16]"},{"internalType":"bytes32","name":"current_root","type":"bytes32"},{"internalType":"bytes32","name":"amount_public_in","type":"bytes32"},{"internalType":"bytes32","name":"amount_public_out","type":"bytes32"},{"internalType":"bytes32[16]","name":"commitment_out","type":"bytes32[16]"},{"internalType":"bytes32","name":"recipient","type":"bytes32"},{"internalType":"bytes32","name":"oracle","type":"bytes32"},{"internalType":"bytes32","name":"old_root","type":"bytes32"},{"internalType":"bytes32","name":"new_root","type":"bytes32"},{"internalType":"bytes32[16]","name":"nullifier_hashes","type":"bytes32[16]"}],"internalType":"struct BatchPublicInputs","name":"input","type":"tuple"}],"name":"flattenBatchPublicInputs","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_commitment","type":"bytes32"}],"name":"getCommitment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_utxo","type":"bytes32"}],"name":"getRootFromUtxo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_nullifierHashes","type":"bytes32[]"}],"name":"getSpentNullifiers","outputs":[{"internalType":"bool[]","name":"spent","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"getUtxoFromRoot","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getValidRoots","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_nullifierHash","type":"bytes32"}],"name":"isSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nullifierHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_proof","type":"bytes"},{"components":[{"internalType":"bytes32[16]","name":"tx_in","type":"bytes32[16]"},{"internalType":"bytes32","name":"current_root","type":"bytes32"},{"internalType":"bytes32","name":"amount_public_in","type":"bytes32"},{"internalType":"bytes32","name":"amount_public_out","type":"bytes32"},{"internalType":"bytes32[16]","name":"commitment_out","type":"bytes32[16]"},{"internalType":"bytes32","name":"recipient","type":"bytes32"},{"internalType":"bytes32","name":"oracle","type":"bytes32"},{"internalType":"bytes32","name":"old_root","type":"bytes32"},{"internalType":"bytes32","name":"new_root","type":"bytes32"},{"internalType":"bytes32[16]","name":"nullifier_hashes","type":"bytes32[16]"}],"internalType":"struct BatchPublicInputs","name":"_batch","type":"tuple"}],"name":"publish","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"utxo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"utxoPrevRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"validRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"verifier","outputs":[{"internalType":"contract IVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"bytes32[]","name":"_publicInputs","type":"bytes32[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006003557f016a430aa58685aba1311244a973a3bc358859da86784be51094368e8fb6f72060085534801561005857600080fd5b50604051611353380380611353833981016040819052610077916100f6565b600080546001600160a01b039384166001600160a01b0319918216178255600180549390941692169190911782556008546002805493840181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910155610130565b6001600160a01b03811681146100f357600080fd5b50565b6000806040838503121561010957600080fd5b8251610114816100de565b6020840151909250610125816100de565b809150509250929050565b6112148061013f6000396000f3fe6080604052600436106100fe5760003560e01c80636d63376211610095578063afbd8bd311610064578063afbd8bd3146102de578063bbcb7c741461030b578063c1168c321461032b578063e39c9eb21461034b578063e5285dcc1461037857600080fd5b80636d633762146102485780637795820c1461025e578063839df9451461028e578063aa2d61db146102be57600080fd5b80632bda1479116100d15780632bda1479146101d05780632eb4a7ab146101fd5780634ef548f11461021357806358f8c8fc1461022857600080fd5b80630ab48bfb146101035780631704f6c61461011857806317cc915c146101585780632b7ac3f314610198575b600080fd5b610116610111366004610d3a565b6103a8565b005b34801561012457600080fd5b50610145610133366004610d9b565b60009081526004602052604090205490565b6040519081526020015b60405180910390f35b34801561016457600080fd5b50610188610173366004610d9b565b60056020526000908152604090205460ff1681565b604051901515815260200161014f565b3480156101a457600080fd5b506000546101b8906001600160a01b031681565b6040516001600160a01b03909116815260200161014f565b3480156101dc57600080fd5b506101f06101eb366004610e93565b610774565b60405161014f9190610f71565b34801561020957600080fd5b5061014560085481565b34801561021f57600080fd5b506101f0610a9f565b34801561023457600080fd5b506101f0610243366004610d9b565b610af7565b34801561025457600080fd5b5061014560035481565b34801561026a57600080fd5b50610188610279366004610d9b565b60009081526006602052604090205460ff1690565b34801561029a57600080fd5b506101886102a9366004610d9b565b60066020526000908152604090205460ff1681565b3480156102ca57600080fd5b506101456102d9366004610d9b565b610b59565b3480156102ea57600080fd5b506102fe6102f9366004610f8b565b610b7a565b60405161014f9190611000565b34801561031757600080fd5b50610188610326366004611046565b610c42565b34801561033757600080fd5b50610145610346366004611115565b610cc0565b34801561035757600080fd5b50610145610366366004610d9b565b60046020526000908152604090205481565b34801561038457600080fd5b50610188610393366004610d9b565b60009081526005602052604090205460ff1690565b6008546104a0820135146103f25760405162461bcd60e51b815260206004820152600c60248201526b1a5b9d985b1a59081c9bdbdd60a21b60448201526064015b60405180910390fd5b60005b60108110156104ec57816104e001816010811061041457610414611137565b6020020135156104da5760056000836104e001836010811061043857610438611137565b6020908102919091013582528101919091526040016000205460ff16156104935760405162461bcd60e51b815260206004820152600f60248201526e1b9d5b1b1a599a595c881cdc195b9d608a1b60448201526064016103e9565b600160056000846104e00184601081106104af576104af611137565b6020020135815260200190815260200160002060006101000a81548160ff0219169083151502179055505b806104e48161114d565b9150506103f5565b5060005b601081101561060057600660008361026001836010811061051357610513611137565b6020908102919091013582528101919091526040016000205460ff16156105705760405162461bcd60e51b8152602060048201526011602482015270636f6d6d69746d656e742065786973747360781b60448201526064016103e9565b6104a082013560009081526007602052604090206102608301826010811061059a5761059a611137565b825460018101845560009384526020808520920292909201359101556104a083013590600490610260850184601081106105d6576105d6611137565b602002013581526020019081526020016000208190555080806105f89061114d565b9150506104f0565b506001546040516340c10f1960e01b81526001600160a01b03610460840135811660048301526102408401356024830152909116906340c10f1990604401600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b50506002805460018101825560009182526104c08501357f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace909101819055600855546001600160a01b0316915063ea50d0e4905084846106d46101eb36879003870187610e93565b6040518463ffffffff1660e01b81526004016106f293929190611174565b602060405180830381865afa15801561070f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073391906111bc565b61076f5760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b60448201526064016103e9565b505050565b604080516037808252610700820190925260609160009190602082016106e0803683370190505090506000805b60108110156107fc57845181601081106107bd576107bd611137565b602002015183836107cd8161114d565b9450815181106107df576107df611137565b6020908102919091010152806107f48161114d565b9150506107a1565b506020840151828261080d8161114d565b93508151811061081f5761081f611137565b60209081029190910101526040840151828261083a8161114d565b93508151811061084c5761084c611137565b6020908102919091010152606084015182826108678161114d565b93508151811061087957610879611137565b60200260200101818152505060005b60108110156108e657846080015181601081106108a7576108a7611137565b602002015183836108b78161114d565b9450815181106108c9576108c9611137565b6020908102919091010152806108de8161114d565b915050610888565b5060a084015182826108f78161114d565b93508151811061090957610909611137565b602090810291909101015260c084015182826109248161114d565b93508151811061093657610936611137565b602090810291909101015260e084015182826109518161114d565b93508151811061096357610963611137565b6020908102919091010152610100840151828261097f8161114d565b93508151811061099157610991611137565b60200260200101818152505060005b60108110156109ff5784610120015181601081106109c0576109c0611137565b602002015183836109d08161114d565b9450815181106109e2576109e2611137565b6020908102919091010152806109f78161114d565b9150506109a0565b5060005b8251811015610a96577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000838281518110610a3f57610a3f611137565b602002602001015160001c10610a845760405162461bcd60e51b815260206004820152600a602482015269746f6f206c617267652160b01b60448201526064016103e9565b80610a8e8161114d565b915050610a03565b50909392505050565b60606002805480602002602001604051908101604052809291908181526020018280548015610aed57602002820191906000526020600020905b815481526020019060010190808311610ad9575b5050505050905090565b600081815260076020908152604091829020805483518184028101840190945280845260609392830182828015610b4d57602002820191906000526020600020905b815481526020019060010190808311610b39575b50505050509050919050565b60028181548110610b6957600080fd5b600091825260209091200154905081565b6060818067ffffffffffffffff811115610b9657610b96610db4565b604051908082528060200260200182016040528015610bbf578160200160208202803683370190505b50915060005b81811015610c3a57610bfe858583818110610be257610be2611137565b9050602002013560009081526005602052604090205460ff1690565b15610c28576001838281518110610c1757610c17611137565b911515602092830291909101909101525b80610c328161114d565b915050610bc5565b505092915050565b60008054604051633a94343960e21b81526001600160a01b039091169063ea50d0e490610c7790879087908790600401611174565b602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb891906111bc565b949350505050565b60076020528160005260406000208181548110610cdc57600080fd5b90600052602060002001600091509150505481565b60008083601f840112610d0357600080fd5b50813567ffffffffffffffff811115610d1b57600080fd5b602083019150836020828501011115610d3357600080fd5b9250929050565b6000806000838503610700811215610d5157600080fd5b843567ffffffffffffffff811115610d6857600080fd5b610d7487828801610cf1565b9095509350506106e0601f1982011215610d8d57600080fd5b506020840190509250925092565b600060208284031215610dad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610dee57610dee610db4565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e1d57610e1d610db4565b604052919050565b600082601f830112610e3657600080fd5b60405161020080820182811067ffffffffffffffff82111715610e5b57610e5b610db4565b60405283018185821115610e6e57600080fd5b845b82811015610e88578035825260209182019101610e70565b509195945050505050565b60006106e08284031215610ea657600080fd5b610eae610dca565b610eb88484610e25565b8152610200830135602082015261022083013560408201526102408301356060820152610ee9846102608501610e25565b608082015261046083013560a082015261048083013560c08201526104a083013560e08201526104c0830135610100820152610f29846104e08501610e25565b6101208201529392505050565b600081518084526020808501945080840160005b83811015610f6657815187529582019590820190600101610f4a565b509495945050505050565b602081526000610f846020830184610f36565b9392505050565b60008060208385031215610f9e57600080fd5b823567ffffffffffffffff80821115610fb657600080fd5b818501915085601f830112610fca57600080fd5b813581811115610fd957600080fd5b8660208260051b8501011115610fee57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561103a57835115158352928401929184019160010161101c565b50909695505050505050565b60008060006040848603121561105b57600080fd5b833567ffffffffffffffff8082111561107357600080fd5b61107f87838801610cf1565b909550935060209150858201358181111561109957600080fd5b8601601f810188136110aa57600080fd5b8035828111156110bc576110bc610db4565b8060051b92506110cd848401610df4565b818152928201840192848101908a8511156110e757600080fd5b928501925b84841015611105578335825292850192908501906110ec565b8096505050505050509250925092565b6000806040838503121561112857600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b60006001820161116d57634e487b7160e01b600052601160045260246000fd5b5060010190565b60408152826040820152828460608301376000606084830101526000601f19601f850116820160608382030160208401526111b26060820185610f36565b9695505050505050565b6000602082840312156111ce57600080fd5b81518015158114610f8457600080fdfea2646970667358221220da6d83d6b965356fc8112cb31a106c6d309eac51db0c288f97b453a6a6e739b864736f6c634300081200330000000000000000000000008b12bc2e5e30de6da2eb3960d65f3fac6d33f0260000000000000000000000005b602e1f00b7a50afb55ecc021323047d0a62f97

Deployed Bytecode

0x6080604052600436106100fe5760003560e01c80636d63376211610095578063afbd8bd311610064578063afbd8bd3146102de578063bbcb7c741461030b578063c1168c321461032b578063e39c9eb21461034b578063e5285dcc1461037857600080fd5b80636d633762146102485780637795820c1461025e578063839df9451461028e578063aa2d61db146102be57600080fd5b80632bda1479116100d15780632bda1479146101d05780632eb4a7ab146101fd5780634ef548f11461021357806358f8c8fc1461022857600080fd5b80630ab48bfb146101035780631704f6c61461011857806317cc915c146101585780632b7ac3f314610198575b600080fd5b610116610111366004610d3a565b6103a8565b005b34801561012457600080fd5b50610145610133366004610d9b565b60009081526004602052604090205490565b6040519081526020015b60405180910390f35b34801561016457600080fd5b50610188610173366004610d9b565b60056020526000908152604090205460ff1681565b604051901515815260200161014f565b3480156101a457600080fd5b506000546101b8906001600160a01b031681565b6040516001600160a01b03909116815260200161014f565b3480156101dc57600080fd5b506101f06101eb366004610e93565b610774565b60405161014f9190610f71565b34801561020957600080fd5b5061014560085481565b34801561021f57600080fd5b506101f0610a9f565b34801561023457600080fd5b506101f0610243366004610d9b565b610af7565b34801561025457600080fd5b5061014560035481565b34801561026a57600080fd5b50610188610279366004610d9b565b60009081526006602052604090205460ff1690565b34801561029a57600080fd5b506101886102a9366004610d9b565b60066020526000908152604090205460ff1681565b3480156102ca57600080fd5b506101456102d9366004610d9b565b610b59565b3480156102ea57600080fd5b506102fe6102f9366004610f8b565b610b7a565b60405161014f9190611000565b34801561031757600080fd5b50610188610326366004611046565b610c42565b34801561033757600080fd5b50610145610346366004611115565b610cc0565b34801561035757600080fd5b50610145610366366004610d9b565b60046020526000908152604090205481565b34801561038457600080fd5b50610188610393366004610d9b565b60009081526005602052604090205460ff1690565b6008546104a0820135146103f25760405162461bcd60e51b815260206004820152600c60248201526b1a5b9d985b1a59081c9bdbdd60a21b60448201526064015b60405180910390fd5b60005b60108110156104ec57816104e001816010811061041457610414611137565b6020020135156104da5760056000836104e001836010811061043857610438611137565b6020908102919091013582528101919091526040016000205460ff16156104935760405162461bcd60e51b815260206004820152600f60248201526e1b9d5b1b1a599a595c881cdc195b9d608a1b60448201526064016103e9565b600160056000846104e00184601081106104af576104af611137565b6020020135815260200190815260200160002060006101000a81548160ff0219169083151502179055505b806104e48161114d565b9150506103f5565b5060005b601081101561060057600660008361026001836010811061051357610513611137565b6020908102919091013582528101919091526040016000205460ff16156105705760405162461bcd60e51b8152602060048201526011602482015270636f6d6d69746d656e742065786973747360781b60448201526064016103e9565b6104a082013560009081526007602052604090206102608301826010811061059a5761059a611137565b825460018101845560009384526020808520920292909201359101556104a083013590600490610260850184601081106105d6576105d6611137565b602002013581526020019081526020016000208190555080806105f89061114d565b9150506104f0565b506001546040516340c10f1960e01b81526001600160a01b03610460840135811660048301526102408401356024830152909116906340c10f1990604401600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b50506002805460018101825560009182526104c08501357f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace909101819055600855546001600160a01b0316915063ea50d0e4905084846106d46101eb36879003870187610e93565b6040518463ffffffff1660e01b81526004016106f293929190611174565b602060405180830381865afa15801561070f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073391906111bc565b61076f5760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b60448201526064016103e9565b505050565b604080516037808252610700820190925260609160009190602082016106e0803683370190505090506000805b60108110156107fc57845181601081106107bd576107bd611137565b602002015183836107cd8161114d565b9450815181106107df576107df611137565b6020908102919091010152806107f48161114d565b9150506107a1565b506020840151828261080d8161114d565b93508151811061081f5761081f611137565b60209081029190910101526040840151828261083a8161114d565b93508151811061084c5761084c611137565b6020908102919091010152606084015182826108678161114d565b93508151811061087957610879611137565b60200260200101818152505060005b60108110156108e657846080015181601081106108a7576108a7611137565b602002015183836108b78161114d565b9450815181106108c9576108c9611137565b6020908102919091010152806108de8161114d565b915050610888565b5060a084015182826108f78161114d565b93508151811061090957610909611137565b602090810291909101015260c084015182826109248161114d565b93508151811061093657610936611137565b602090810291909101015260e084015182826109518161114d565b93508151811061096357610963611137565b6020908102919091010152610100840151828261097f8161114d565b93508151811061099157610991611137565b60200260200101818152505060005b60108110156109ff5784610120015181601081106109c0576109c0611137565b602002015183836109d08161114d565b9450815181106109e2576109e2611137565b6020908102919091010152806109f78161114d565b9150506109a0565b5060005b8251811015610a96577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000838281518110610a3f57610a3f611137565b602002602001015160001c10610a845760405162461bcd60e51b815260206004820152600a602482015269746f6f206c617267652160b01b60448201526064016103e9565b80610a8e8161114d565b915050610a03565b50909392505050565b60606002805480602002602001604051908101604052809291908181526020018280548015610aed57602002820191906000526020600020905b815481526020019060010190808311610ad9575b5050505050905090565b600081815260076020908152604091829020805483518184028101840190945280845260609392830182828015610b4d57602002820191906000526020600020905b815481526020019060010190808311610b39575b50505050509050919050565b60028181548110610b6957600080fd5b600091825260209091200154905081565b6060818067ffffffffffffffff811115610b9657610b96610db4565b604051908082528060200260200182016040528015610bbf578160200160208202803683370190505b50915060005b81811015610c3a57610bfe858583818110610be257610be2611137565b9050602002013560009081526005602052604090205460ff1690565b15610c28576001838281518110610c1757610c17611137565b911515602092830291909101909101525b80610c328161114d565b915050610bc5565b505092915050565b60008054604051633a94343960e21b81526001600160a01b039091169063ea50d0e490610c7790879087908790600401611174565b602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb891906111bc565b949350505050565b60076020528160005260406000208181548110610cdc57600080fd5b90600052602060002001600091509150505481565b60008083601f840112610d0357600080fd5b50813567ffffffffffffffff811115610d1b57600080fd5b602083019150836020828501011115610d3357600080fd5b9250929050565b6000806000838503610700811215610d5157600080fd5b843567ffffffffffffffff811115610d6857600080fd5b610d7487828801610cf1565b9095509350506106e0601f1982011215610d8d57600080fd5b506020840190509250925092565b600060208284031215610dad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610dee57610dee610db4565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e1d57610e1d610db4565b604052919050565b600082601f830112610e3657600080fd5b60405161020080820182811067ffffffffffffffff82111715610e5b57610e5b610db4565b60405283018185821115610e6e57600080fd5b845b82811015610e88578035825260209182019101610e70565b509195945050505050565b60006106e08284031215610ea657600080fd5b610eae610dca565b610eb88484610e25565b8152610200830135602082015261022083013560408201526102408301356060820152610ee9846102608501610e25565b608082015261046083013560a082015261048083013560c08201526104a083013560e08201526104c0830135610100820152610f29846104e08501610e25565b6101208201529392505050565b600081518084526020808501945080840160005b83811015610f6657815187529582019590820190600101610f4a565b509495945050505050565b602081526000610f846020830184610f36565b9392505050565b60008060208385031215610f9e57600080fd5b823567ffffffffffffffff80821115610fb657600080fd5b818501915085601f830112610fca57600080fd5b813581811115610fd957600080fd5b8660208260051b8501011115610fee57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561103a57835115158352928401929184019160010161101c565b50909695505050505050565b60008060006040848603121561105b57600080fd5b833567ffffffffffffffff8082111561107357600080fd5b61107f87838801610cf1565b909550935060209150858201358181111561109957600080fd5b8601601f810188136110aa57600080fd5b8035828111156110bc576110bc610db4565b8060051b92506110cd848401610df4565b818152928201840192848101908a8511156110e757600080fd5b928501925b84841015611105578335825292850192908501906110ec565b8096505050505050509250925092565b6000806040838503121561112857600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b60006001820161116d57634e487b7160e01b600052601160045260246000fd5b5060010190565b60408152826040820152828460608301376000606084830101526000601f19601f850116820160608382030160208401526111b26060820185610f36565b9695505050505050565b6000602082840312156111ce57600080fd5b81518015158114610f8457600080fdfea2646970667358221220da6d83d6b965356fc8112cb31a106c6d309eac51db0c288f97b453a6a6e739b864736f6c63430008120033

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

0000000000000000000000008b12bc2e5e30de6da2eb3960d65f3fac6d33f0260000000000000000000000005b602e1f00b7a50afb55ecc021323047d0a62f97

-----Decoded View---------------
Arg [0] : _verifier (address): 0x8B12bC2e5E30DE6Da2eb3960D65F3FAC6d33f026
Arg [1] : _token (address): 0x5B602e1f00B7A50aFb55ecc021323047d0A62f97

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008b12bc2e5e30de6da2eb3960d65f3fac6d33f026
Arg [1] : 0000000000000000000000005b602e1f00b7a50afb55ecc021323047d0a62f97


Deployed Bytecode Sourcemap

3348:4081:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4984:1093;;;;;;:::i;:::-;;:::i;:::-;;4752:116;;;;;;;;;;-1:-1:-1;4752:116:0;;;;;:::i;:::-;4813:7;4840:20;;;:13;:20;;;;;;;4752:116;;;;1280:25:1;;;1268:2;1253:18;4752:116:0;;;;;;;;3637:47;;;;;;;;;;-1:-1:-1;3637:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1481:14:1;;1474:22;1456:41;;1444:2;1429:18;3637:47:0;1316:187:1;3381:25:0;;;;;;;;;;-1:-1:-1;3381:25:0;;;;-1:-1:-1;;;;;3381:25:0;;;;;;-1:-1:-1;;;;;1689:32:1;;;1671:51;;1659:2;1644:18;3381:25:0;1508:220:1;6424:1002:0;;;;;;;;;;-1:-1:-1;6424:1002:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3801:103::-;;;;;;;;;;;;;;;;4876:100;;;;;;;;;;;;;:::i;4628:116::-;;;;;;;;;;-1:-1:-1;4628:116:0;;;;;:::i;:::-;;:::i;3475:98::-;;;;;;;;;;;;;;;;4499:121;;;;;;;;;;-1:-1:-1;4499:121:0;;;;;:::i;:::-;4564:4;4588:24;;;:11;:24;;;;;;;;;4499:121;3691:43;;;;;;;;;;-1:-1:-1;3691:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3439:27;;;;;;;;;;-1:-1:-1;3439:27:0;;;;;:::i;:::-;;:::i;4087:404::-;;;;;;;;;;-1:-1:-1;4087:404:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6224:192::-;;;;;;;;;;-1:-1:-1;6224:192:0;;;;;:::i;:::-;;:::i;3741:41::-;;;;;;;;;;-1:-1:-1;3741:41:0;;;;;:::i;:::-;;:::i;3582:48::-;;;;;;;;;;-1:-1:-1;3582:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;6091:125;;;;;;;;;;-1:-1:-1;6091:125:0;;;;;:::i;:::-;6153:4;6177:31;;;:15;:31;;;;;;;;;6091:125;4984:1093;5154:10;;5126:15;;;;5118:47;5110:72;;;;-1:-1:-1;;;5110:72:0;;8089:2:1;5110:72:0;;;8071:21:1;8128:2;8108:18;;;8101:30;-1:-1:-1;;;8147:18:1;;;8140:42;8199:18;;5110:72:0;;;;;;;;;5200:9;5195:285;5219:30;5215:1;:34;5195:285;;;5275:6;:23;;5299:1;5275:26;;;;;;;:::i;:::-;;;;;5271:45;5308:8;5271:45;5340:15;:43;5356:6;:23;;5380:1;5356:26;;;;;;;:::i;:::-;;;;;;;;;;5340:43;;;;;;;;;;-1:-1:-1;5340:43:0;;;;5339:44;5331:72;;;;-1:-1:-1;;;5331:72:0;;8562:2:1;5331:72:0;;;8544:21:1;8601:2;8581:18;;;8574:30;-1:-1:-1;;;8620:18:1;;;8613:45;8675:18;;5331:72:0;8360:339:1;5331:72:0;5464:4;5418:15;:43;5434:6;:23;;5458:1;5434:26;;;;;;;:::i;:::-;;;;;5418:43;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;5195:285;5251:3;;;;:::i;:::-;;;;5195:285;;;;5497:9;5492:293;5516:28;5512:1;:32;5492:293;;;5575:11;:37;5587:6;:21;;5609:1;5587:24;;;;;;;:::i;:::-;;;;;;;;;;5575:37;;;;;;;;;;-1:-1:-1;5575:37:0;;;;5574:38;5566:68;;;;-1:-1:-1;;;5566:68:0;;9143:2:1;5566:68:0;;;9125:21:1;9182:2;9162:18;;;9155:30;-1:-1:-1;;;9201:18:1;;;9194:47;9258:18;;5566:68:0;8941:341:1;5566:68:0;5654:15;;;;5649:21;;;;:4;:21;;;;;5676;;;5698:1;5676:24;;;;;;;:::i;:::-;5649:52;;;;;;;-1:-1:-1;5649:52:0;;;5676:24;5649:52;;;5676:24;;;;;;;5649:52;;;5758:15;;;;;5716:13;;5730:21;;;5752:1;5730:24;;;;;;;:::i;:::-;;;;;5716:39;;;;;;;;;;;:57;;;;5546:3;;;;;:::i;:::-;;;;5492:293;;;-1:-1:-1;5797:5:0;;:90;;-1:-1:-1;;;5797:90:0;;-1:-1:-1;;;;;5832:16:0;;;;9479:32:1;;5797:90:0;;;9461:51:1;5861:24:0;;;;9528:18:1;;;9521:34;5797:5:0;;;;:10;;9434:18:1;;5797:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5900:10:0;:32;;;;;;;-1:-1:-1;5900:32:0;;;5916:15;;;;5900:32;;;;;;;5945:10;:28;5994:8;-1:-1:-1;;;;;5994:8:0;;-1:-1:-1;5994:15:0;;-1:-1:-1;6010:6:0;;6018:32;;;;;;;;5916:6;6018:32;:::i;:::-;5994:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5986:83;;;;-1:-1:-1;;;5986:83:0;;10646:2:1;5986:83:0;;;10628:21:1;10685:2;10665:18;;;10658:30;-1:-1:-1;;;10704:18:1;;;10697:43;10757:18;;5986:83:0;10444:337:1;5986:83:0;4984:1093;;;:::o;6424:1002::-;6569:17;;;6583:2;6569:17;;;;;;;;;6511:16;;6540:26;;6569:17;;;;;;;;;;;-1:-1:-1;6569:17:0;6540:46;;6597:11;6628:6;6623:63;6644:2;6640:1;:6;6623:63;;;6672:11;;6684:1;6672:14;;;;;;;:::i;:::-;;;;;6653:9;6663:5;;;;:::i;:::-;;;6653:16;;;;;;;;:::i;:::-;;;;;;;;;;:33;6648:3;;;;:::i;:::-;;;;6623:63;;;-1:-1:-1;6716:18:0;;;;6697:9;6707:5;;;;:::i;:::-;;;6697:16;;;;;;;;:::i;:::-;;;;;;;;;;:37;6764:22;;;;6745:9;6755:5;;;;:::i;:::-;;;6745:16;;;;;;;;:::i;:::-;;;;;;;;;;:41;6816:23;;;;6797:9;6807:5;;;;:::i;:::-;;;6797:16;;;;;;;;:::i;:::-;;;;;;:42;;;;;6855:6;6850:72;6871:2;6867:1;:6;6850:72;;;6899:5;:20;;;6920:1;6899:23;;;;;;;:::i;:::-;;;;;6880:9;6890:5;;;;:::i;:::-;;;6880:16;;;;;;;;:::i;:::-;;;;;;;;;;:42;6875:3;;;;:::i;:::-;;;;6850:72;;;-1:-1:-1;6952:15:0;;;;6933:9;6943:5;;;;:::i;:::-;;;6933:16;;;;;;;;:::i;:::-;;;;;;;;;;:34;6997:12;;;;6978:9;6988:5;;;;:::i;:::-;;;6978:16;;;;;;;;:::i;:::-;;;;;;;;;;:31;7039:14;;;;7020:9;7030:5;;;;:::i;:::-;;;7020:16;;;;;;;;:::i;:::-;;;;;;;;;;:33;7083:14;;;;7064:9;7074:5;;;;:::i;:::-;;;7064:16;;;;;;;;:::i;:::-;;;;;;:33;;;;;7113:6;7108:74;7129:2;7125:1;:6;7108:74;;;7157:5;:22;;;7180:1;7157:25;;;;;;;:::i;:::-;;;;;7138:9;7148:5;;;;:::i;:::-;;;7138:16;;;;;;;;:::i;:::-;;;;;;;;;;:44;7133:3;;;;:::i;:::-;;;;7108:74;;;;7200:9;7195:187;7219:9;:16;7215:1;:20;7195:187;;;7289:66;7273:9;7283:1;7273:12;;;;;;;;:::i;:::-;;;;;;;7265:21;;:90;7257:113;;;;-1:-1:-1;;;7257:113:0;;10988:2:1;7257:113:0;;;10970:21:1;11027:2;11007:18;;;11000:30;-1:-1:-1;;;11046:18:1;;;11039:40;11096:18;;7257:113:0;10786:334:1;7257:113:0;7237:3;;;;:::i;:::-;;;;7195:187;;;-1:-1:-1;7409:9:0;;6424:1002;-1:-1:-1;;;6424:1002:0:o;4876:100::-;4922:16;4958:10;4951:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4876:100;:::o;4628:116::-;4725:11;;;;:4;:11;;;;;;;;;4718:18;;;;;;;;;;;;;;;;;4689:16;;4718:18;;;4725:11;4718:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4628:116;;;:::o;3439:27::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3439:27:0;:::o;4087:404::-;4175:19;4239:16;;4281:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4281:33:0;;4273:41;;4330:9;4325:159;4345:21;4341:1;:25;4325:159;;;4392:28;4400:16;;4417:1;4400:19;;;;;;;:::i;:::-;;;;;;;6153:4;6177:31;;;:15;:31;;;;;;;;;6091:125;4392:28;4388:85;;;4453:4;4442:5;4448:1;4442:8;;;;;;;;:::i;:::-;:15;;;:8;;;;;;;;;;;:15;4388:85;4368:3;;;;:::i;:::-;;;;4325:159;;;;4196:295;4087:404;;;;:::o;6224:192::-;6346:4;6370:8;;:38;;-1:-1:-1;;;6370:38:0;;-1:-1:-1;;;;;6370:8:0;;;;:15;;:38;;6386:6;;;;6394:13;;6370:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6363:45;6224:192;-1:-1:-1;;;;6224:192:0:o;3741:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:347:1:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:1;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:578::-;481:6;489;497;541:9;532:7;528:23;571:4;567:2;563:13;560:33;;;589:1;586;579:12;560:33;629:9;616:23;662:18;654:6;651:30;648:50;;;694:1;691;684:12;648:50;733:58;783:7;774:6;763:9;759:22;733:58;:::i;:::-;810:8;;-1:-1:-1;707:84:1;-1:-1:-1;;879:4:1;-1:-1:-1;;861:16:1;;857:27;854:47;;;897:1;894;887:12;854:47;;935:2;924:9;920:18;910:28;;366:578;;;;;:::o;949:180::-;1008:6;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;-1:-1:-1;1100:23:1;;949:180;-1:-1:-1;949:180:1:o;1733:127::-;1794:10;1789:3;1785:20;1782:1;1775:31;1825:4;1822:1;1815:15;1849:4;1846:1;1839:15;1865:255;1937:2;1931:9;1979:6;1967:19;;2016:18;2001:34;;2037:22;;;1998:62;1995:88;;;2063:18;;:::i;:::-;2099:2;2092:22;1865:255;:::o;2125:275::-;2196:2;2190:9;2261:2;2242:13;;-1:-1:-1;;2238:27:1;2226:40;;2296:18;2281:34;;2317:22;;;2278:62;2275:88;;;2343:18;;:::i;:::-;2379:2;2372:22;2125:275;;-1:-1:-1;2125:275:1:o;2405:668::-;2455:5;2508:3;2501:4;2493:6;2489:17;2485:27;2475:55;;2526:1;2523;2516:12;2475:55;2559:2;2553:9;2581:3;2623:2;2615:6;2611:15;2692:6;2680:10;2677:22;2656:18;2644:10;2641:34;2638:62;2635:88;;;2703:18;;:::i;:::-;2739:2;2732:22;2803:15;;2774:6;2830:15;;;2827:35;;;2858:1;2855;2848:12;2827:35;2882:6;2897:146;2913:6;2908:3;2905:15;2897:146;;;2981:17;;2969:30;;3028:4;3019:14;;;;2930;2897:146;;;-1:-1:-1;3061:6:1;;2405:668;-1:-1:-1;;;;;2405:668:1:o;3078:973::-;3171:6;3224:4;3212:9;3203:7;3199:23;3195:34;3192:54;;;3242:1;3239;3232:12;3192:54;3268:22;;:::i;:::-;3313:44;3349:7;3338:9;3313:44;:::i;:::-;3306:5;3299:59;3420:3;3409:9;3405:19;3392:33;3385:4;3378:5;3374:16;3367:59;3488:3;3477:9;3473:19;3460:33;3453:4;3446:5;3442:16;3435:59;3556:3;3545:9;3541:19;3528:33;3521:4;3514:5;3510:16;3503:59;3596:54;3642:7;3636:3;3625:9;3621:19;3596:54;:::i;:::-;3589:4;3582:5;3578:16;3571:80;3713:4;3702:9;3698:20;3685:34;3678:4;3671:5;3667:16;3660:60;3782:4;3771:9;3767:20;3754:34;3747:4;3740:5;3736:16;3729:60;3851:4;3840:9;3836:20;3823:34;3816:4;3809:5;3805:16;3798:60;3922:4;3911:9;3907:20;3894:34;3885:6;3878:5;3874:18;3867:62;3965:55;4012:7;4005:4;3994:9;3990:20;3965:55;:::i;:::-;3956:6;3945:18;;3938:83;3949:5;3078:973;-1:-1:-1;;;3078:973:1:o;4056:435::-;4109:3;4147:5;4141:12;4174:6;4169:3;4162:19;4200:4;4229:2;4224:3;4220:12;4213:19;;4266:2;4259:5;4255:14;4287:1;4297:169;4311:6;4308:1;4305:13;4297:169;;;4372:13;;4360:26;;4406:12;;;;4441:15;;;;4333:1;4326:9;4297:169;;;-1:-1:-1;4482:3:1;;4056:435;-1:-1:-1;;;;;4056:435:1:o;4496:261::-;4675:2;4664:9;4657:21;4638:4;4695:56;4747:2;4736:9;4732:18;4724:6;4695:56;:::i;:::-;4687:64;4496:261;-1:-1:-1;;;4496:261:1:o;5129:615::-;5215:6;5223;5276:2;5264:9;5255:7;5251:23;5247:32;5244:52;;;5292:1;5289;5282:12;5244:52;5332:9;5319:23;5361:18;5402:2;5394:6;5391:14;5388:34;;;5418:1;5415;5408:12;5388:34;5456:6;5445:9;5441:22;5431:32;;5501:7;5494:4;5490:2;5486:13;5482:27;5472:55;;5523:1;5520;5513:12;5472:55;5563:2;5550:16;5589:2;5581:6;5578:14;5575:34;;;5605:1;5602;5595:12;5575:34;5658:7;5653:2;5643:6;5640:1;5636:14;5632:2;5628:23;5624:32;5621:45;5618:65;;;5679:1;5676;5669:12;5618:65;5710:2;5702:11;;;;;5732:6;;-1:-1:-1;5129:615:1;;-1:-1:-1;;;;5129:615:1:o;5749:642::-;5914:2;5966:21;;;6036:13;;5939:18;;;6058:22;;;5885:4;;5914:2;6137:15;;;;6111:2;6096:18;;;5885:4;6180:185;6194:6;6191:1;6188:13;6180:185;;;6269:13;;6262:21;6255:29;6243:42;;6340:15;;;;6305:12;;;;6216:1;6209:9;6180:185;;;-1:-1:-1;6382:3:1;;5749:642;-1:-1:-1;;;;;;5749:642:1:o;6396:1233::-;6500:6;6508;6516;6569:2;6557:9;6548:7;6544:23;6540:32;6537:52;;;6585:1;6582;6575:12;6537:52;6625:9;6612:23;6654:18;6695:2;6687:6;6684:14;6681:34;;;6711:1;6708;6701:12;6681:34;6750:58;6800:7;6791:6;6780:9;6776:22;6750:58;:::i;:::-;6827:8;;-1:-1:-1;6724:84:1;-1:-1:-1;6881:2:1;;-1:-1:-1;6921:18:1;;;6908:32;6952:16;;;6949:36;;;6981:1;6978;6971:12;6949:36;7004:24;;7059:4;7051:13;;7047:27;-1:-1:-1;7037:55:1;;7088:1;7085;7078:12;7037:55;7124:2;7111:16;7146:2;7142;7139:10;7136:36;;;7152:18;;:::i;:::-;7198:2;7195:1;7191:10;7181:20;;7221:28;7245:2;7241;7237:11;7221:28;:::i;:::-;7283:15;;;7353:11;;;7349:20;;;7314:12;;;;7381:19;;;7378:39;;;7413:1;7410;7403:12;7378:39;7437:11;;;;7457:142;7473:6;7468:3;7465:15;7457:142;;;7539:17;;7527:30;;7490:12;;;;7577;;;;7457:142;;;7618:5;7608:15;;;;;;;;6396:1233;;;;;:::o;7634:248::-;7702:6;7710;7763:2;7751:9;7742:7;7738:23;7734:32;7731:52;;;7779:1;7776;7769:12;7731:52;-1:-1:-1;;7802:23:1;;;7872:2;7857:18;;;7844:32;;-1:-1:-1;7634:248:1:o;8228:127::-;8289:10;8284:3;8280:20;8277:1;8270:31;8320:4;8317:1;8310:15;8344:4;8341:1;8334:15;8704:232;8743:3;8764:17;;;8761:140;;8823:10;8818:3;8814:20;8811:1;8804:31;8858:4;8855:1;8848:15;8886:4;8883:1;8876:15;8761:140;-1:-1:-1;8928:1:1;8917:13;;8704:232::o;9566:591::-;9801:2;9790:9;9783:21;9840:6;9835:2;9824:9;9820:18;9813:34;9897:6;9889;9884:2;9873:9;9869:18;9856:48;9953:1;9948:2;9939:6;9928:9;9924:22;9920:31;9913:42;9764:4;10014:2;10010:7;10005:2;9997:6;9993:15;9989:29;9978:9;9974:45;10081:2;10069:9;10065:2;10061:18;10057:27;10050:4;10039:9;10035:20;10028:57;10102:49;10147:2;10143;10139:11;10131:6;10102:49;:::i;:::-;10094:57;9566:591;-1:-1:-1;;;;;;9566:591:1:o;10162:277::-;10229:6;10282:2;10270:9;10261:7;10257:23;10253:32;10250:52;;;10298:1;10295;10288:12;10250:52;10330:9;10324:16;10383:5;10376:13;10369:21;10362:5;10359:32;10349:60;;10405:1;10402;10395:12

Swarm Source

ipfs://da6d83d6b965356fc8112cb31a106c6d309eac51db0c288f97b453a6a6e739b8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.