ETH Price: $2,280.39 (-6.17%)

Contract

0x025B2D584404c5a3B65b01C12FCBD6cE08C53e62

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Post Root4277994192026-02-02 9:31:156 mins ago1770024675IN
0x025B2D58...E08C53e62
0 ETH0.000001080.020018
Post Root4277970182026-02-02 9:21:1516 mins ago1770024075IN
0x025B2D58...E08C53e62
0 ETH0.000001080.020052
Post Root4277929222026-02-02 9:04:1533 mins ago1770023055IN
0x025B2D58...E08C53e62
0 ETH0.000001070.02
Post Root4277907662026-02-02 8:55:1642 mins ago1770022516IN
0x025B2D58...E08C53e62
0 ETH0.000001080.020104
Post Root4277887812026-02-02 8:47:0350 mins ago1770022023IN
0x025B2D58...E08C53e62
0 ETH0.000001080.02005
Post Root4277869082026-02-02 8:39:1658 mins ago1770021556IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020224
Post Root4277820862026-02-02 8:19:151 hr ago1770020355IN
0x025B2D58...E08C53e62
0 ETH0.000001070.02
Post Root4277808362026-02-02 8:14:041 hr ago1770020044IN
0x025B2D58...E08C53e62
0 ETH0.000001080.020082
Post Root4277758712026-02-02 7:53:271 hr ago1770018807IN
0x025B2D58...E08C53e62
0 ETH0.000001070.02
Post Root4277731782026-02-02 7:42:161 hr ago1770018136IN
0x025B2D58...E08C53e62
0 ETH0.000001080.020076
Post Root4277698522026-02-02 7:28:272 hrs ago1770017307IN
0x025B2D58...E08C53e62
0 ETH0.000001080.02014
Post Root4277656172026-02-02 7:10:522 hrs ago1770016252IN
0x025B2D58...E08C53e62
0 ETH0.000001090.02025
Post Root4277635852026-02-02 7:02:272 hrs ago1770015747IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020366
Post Root4277580802026-02-02 6:39:412 hrs ago1770014381IN
0x025B2D58...E08C53e62
0 ETH0.000001150.02136
Post Root4277573182026-02-02 6:36:293 hrs ago1770014189IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020326
Post Root4277510952026-02-02 6:10:403 hrs ago1770012640IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020322
Post Root4277507632026-02-02 6:09:173 hrs ago1770012557IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020212
Post Root4277440022026-02-02 5:41:153 hrs ago1770010875IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020276
Post Root4277437652026-02-02 5:40:153 hrs ago1770010815IN
0x025B2D58...E08C53e62
0 ETH0.00000110.020386
Post Root4277392402026-02-02 5:21:284 hrs ago1770009688IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020344
Post Root4277383742026-02-02 5:17:514 hrs ago1770009471IN
0x025B2D58...E08C53e62
0 ETH0.000001090.020358
Post Root4277316422026-02-02 4:49:524 hrs ago1770007792IN
0x025B2D58...E08C53e62
0 ETH0.00000110.020554
Post Root4277313972026-02-02 4:48:514 hrs ago1770007731IN
0x025B2D58...E08C53e62
0 ETH0.000001110.020718
Post Root4277251342026-02-02 4:22:515 hrs ago1770006171IN
0x025B2D58...E08C53e62
0 ETH0.000001210.022524
Post Root4277241682026-02-02 4:18:525 hrs ago1770005932IN
0x025B2D58...E08C53e62
0 ETH0.00000120.022294
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SMT

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 800 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import "../light-client-eth/interfaces/IAnchorBlocks.sol";
import "../interfaces/ISMT.sol";
import "../safeguard/BrevisAccess.sol";

contract SMT is ISMT, BrevisAccess {
    event SmtRootUpdated(bytes32 smtRoot, uint64 endBlockNum, uint64 chainId);
    event AnchorProviderUpdated(uint64 chainId, address anchorProvider);
    event VerifierUpdated(uint64 chainId, address verifier);
    event CircuitDigestUpdated(uint64 chainId, bytes32 circuitDigest);
    event RootUpdaterUpdated(address account);

    mapping(uint64 => IAnchorBlocks) public anchorProviders;
    mapping(uint64 => IVerifier) public verifiers;

    mapping(uint64 => mapping(bytes32 => bool)) public smtRoots;
    mapping(uint64 => bytes32) public latestRoots;
    mapping(uint64 => bytes32) public circuitDigests;
    address public rootUpdater;

    modifier onlyRootUpdater() {
        require(msg.sender == rootUpdater, "invalid root updater");
        _;
    }

    constructor(
        uint64[] memory _chainIds,
        address[] memory _anchorProviders,
        address[] memory _verifiers,
        bytes32[] memory _initRoots
    ) {
        require(_chainIds.length == _anchorProviders.length, "len mismatch");
        require(_chainIds.length == _verifiers.length, "len mismatch");
        require(_chainIds.length == _initRoots.length, "len mismatch");
        for (uint256 i = 0; i < _chainIds.length; i++) {
            uint64 chid = _chainIds[i];
            anchorProviders[chid] = IAnchorBlocks(_anchorProviders[i]);
            verifiers[chid] = IVerifier(_verifiers[i]);
            smtRoots[chid][_initRoots[i]] = true;
            latestRoots[chid] = _initRoots[i];
        }
    }

    function getLatestRoot(uint64 chainId) public view returns (bytes32) {
        return latestRoots[chainId];
    }

    function isSmtRootValid(uint64 chainId, bytes32 smtRoot) public view returns (bool) {
        return smtRoots[chainId][smtRoot];
    }

    function updateRoot(uint64 chainId, SmtUpdate memory u) external onlyActiveProver {
        // If nextChunkMerkleRoot is empty, it means the zk proof bypasses checking if the updated chunk anchors to a known chunk.
        // Instead, the responsibility of checking the validity of endBlockHash is deferred to this contract.
        if (u.nextChunkMerkleRoot == 0) {
            IAnchorBlocks anchorProvider = anchorProviders[chainId];
            require(address(anchorProvider) != address(0), "unknown anchor provider");
            bytes32 anchorHash = anchorProvider.blocks(u.endBlockNum);
            require(anchorHash == u.endBlockHash, "anchor check failed");
        }
        bytes32 root = latestRoots[chainId];
        bool success = verifyProof(chainId, root, u);
        require(success, "invalid zk proof");

        smtRoots[chainId][u.newSmtRoot] = true;
        latestRoots[chainId] = u.newSmtRoot;
        emit SmtRootUpdated(u.newSmtRoot, u.endBlockNum, chainId);
    }

    function verifyProof(uint64 chainId, bytes32 oldSmtRoot, SmtUpdate memory u) private view returns (bool) {
        IVerifier verifier = verifiers[chainId];
        require(address(verifier) != address(0), "no verifier for chainId");
        require(circuitDigests[chainId] == u.circuitDigest, "not valid circuit digest");
        uint256[9] memory input;
        uint256 m = 1 << 128;
        input[0] = uint256(u.endBlockHash) >> 128;
        input[1] = uint256(u.endBlockHash) % m;
        input[2] = uint256(u.newSmtRoot) >> 128;
        input[3] = uint256(u.newSmtRoot) % m;
        input[4] = uint256(oldSmtRoot) >> 128;
        input[5] = uint256(oldSmtRoot) % m;
        input[6] = uint256(u.nextChunkMerkleRoot) >> 128;
        input[7] = uint256(u.nextChunkMerkleRoot) % m;
        input[8] = uint256(u.circuitDigest);

        return verifier.verifyProof(u.proof, u.commit, u.knowledgeProof, input);
    }

    function setAnchorProvider(uint64 chainId, address anchorProvider) external onlyOwner {
        anchorProviders[chainId] = IAnchorBlocks(anchorProvider);
        emit AnchorProviderUpdated(chainId, anchorProvider);
    }

    function setVerifier(uint64 chainId, address verifier) external onlyOwner {
        verifiers[chainId] = IVerifier(verifier);
        emit VerifierUpdated(chainId, verifier);
    }

    function setCircuitDigest(uint64 chainId, bytes32 _circuitDigest) external onlyOwner {
        circuitDigests[chainId] = _circuitDigest;
        emit CircuitDigestUpdated(chainId, _circuitDigest);
    }

    function setRootUpdater(address _rootUpdater) external onlyOwner {
        rootUpdater = _rootUpdater;
        emit RootUpdaterUpdated(_rootUpdater);
    }

    function postRoot(uint64 chainId, bytes32 newRoot, uint64 endBlockNum) external onlyRootUpdater {
        smtRoots[chainId][newRoot] = true;
        latestRoots[chainId] = newRoot;
        emit SmtRootUpdated(newRoot, endBlockNum, chainId);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import "../verifiers/zk-verifiers/common/IVerifier.sol";

interface ISMT {
    struct SmtUpdate {
        bytes32 newSmtRoot;
        uint64 endBlockNum;
        bytes32 endBlockHash;
        bytes32 nextChunkMerkleRoot;
        bytes32 circuitDigest;
        uint256[8] proof;
        uint256[2] commit;
        uint256[2] knowledgeProof;
    }

    function updateRoot(uint64 chainId, SmtUpdate memory u) external;

    function isSmtRootValid(uint64 chainId, bytes32 smtRoot) external view returns (bool);
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

interface IAnchorBlocks {
    function blocks(uint256 blockNum) external view returns (bytes32);
}

// SPDX-License-Identifier: GPL-3.0-only

pragma solidity ^0.8.18;

import "./Pauser.sol";

// prover and pauser access control using a single map lookup
abstract contract BrevisAccess is Pauser {
    enum ProverState {
        Null,
        Active,
        Paused
    }
    mapping(address => ProverState) public proverStates;
    address[] public provers;

    event ProverAdded(address account);
    event ProverRemoved(address account);

    modifier onlyProver() {
        require(proverStates[msg.sender] != ProverState.Null, "invalid prover");
        _;
    }

    modifier onlyActiveProver() {
        require(proverStates[msg.sender] == ProverState.Active, "invalid prover");
        _;
    }

    function addProvers(address[] memory _accounts) public onlyOwner {
        ProverState state = paused() ? ProverState.Paused : ProverState.Active;
        for (uint256 i = 0; i < _accounts.length; i++) {
            _addProver(_accounts[i], state);
        }
    }

    function removeProvers(address[] memory _accounts) public onlyOwner {
        for (uint256 i = 0; i < _accounts.length; i++) {
            _removeProver(_accounts[i]);
        }
    }

    function pause() public override onlyPauser {
        _pause();
        for (uint256 i = 0; i < provers.length; i++) {
            proverStates[provers[i]] = ProverState.Paused;
        }
    }

    function unpause() public override onlyPauser {
        _unpause();
        for (uint256 i = 0; i < provers.length; i++) {
            proverStates[provers[i]] = ProverState.Active;
        }
    }

    function numProvers() public view returns (uint256) {
        return provers.length;
    }

    function isActiveProver(address _account) public view returns (bool) {
        return proverStates[_account] == ProverState.Active;
    }

    function _addProver(address _account, ProverState _state) private {
        require(proverStates[_account] == ProverState.Null, "account is prover");
        provers.push(_account);
        proverStates[_account] = _state;
        emit ProverAdded(_account);
    }

    function _removeProver(address _account) private {
        require(proverStates[_account] != ProverState.Null, "account is not prover");
        uint256 lastIndex = provers.length - 1;
        for (uint256 i = 0; i < provers.length; i++) {
            if (provers[i] == _account) {
                if (i < lastIndex) {
                    provers[i] = provers[lastIndex];
                }
                provers.pop();
                delete proverStates[_account];
                emit ProverRemoved(_account);
                return;
            }
        }
        revert("prover not found"); // this should never happen
    }
}

// SPDX-License-Identifier: GPL-3.0-only

pragma solidity ^0.8.18;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 *
 * This adds a normal func that setOwner if _owner is address(0). So we can't allow
 * renounceOwnership. So we can support Proxy based upgradable contract
 */
abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(msg.sender);
    }

    /**
     * @dev Only to be called by inherit contracts, in their init func called by Proxy
     * we require _owner == address(0), which is only possible when it's a delegateCall
     * because constructor sets _owner in contract state.
     */
    function initOwner() internal {
        require(_owner == address(0), "owner already set");
        _setOwner(msg.sender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// SPDX-License-Identifier: GPL-3.0-only

pragma solidity ^0.8.18;

import "@openzeppelin/contracts/security/Pausable.sol";
import "./Ownable.sol";

abstract contract Pauser is Ownable, Pausable {
    mapping(address => bool) public pausers;
    address[] public pauserList;

    event PauserAdded(address account);
    event PauserRemoved(address account);

    constructor() {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender), "Caller is not pauser");
        _;
    }

    function pause() public virtual onlyPauser {
        _pause();
    }

    function unpause() public virtual onlyPauser {
        _unpause();
    }

    function isPauser(address account) public view returns (bool) {
        return pausers[account];
    }

    function addPauser(address account) public onlyOwner {
        _addPauser(account);
    }

    function addPausers(address[] memory accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _addPauser(accounts[i]);
        }
    }

    function removePauser(address account) public onlyOwner {
        _removePauser(account);
    }

    function removePausers(address[] memory accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _removePauser(accounts[i]);
        }
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function numPausers() public view returns (uint256) {
        return pauserList.length;
    }

    function _addPauser(address account) private {
        require(!isPauser(account), "Account is already pauser");
        pauserList.push(account);
        pausers[account] = true;
        emit PauserAdded(account);
    }

    function _removePauser(address account) private {
        require(isPauser(account), "Account is not pauser");
        uint256 lastIndex = pauserList.length - 1;
        for (uint256 i = 0; i < pauserList.length; i++) {
            if (pauserList[i] == account) {
                if (i < lastIndex) {
                    pauserList[i] = pauserList[lastIndex];
                }
                pauserList.pop();
                pausers[account] = false;
                emit PauserRemoved(account);
                return;
            }
        }
        revert("pauser not found"); // this should never happen
    }
}

File 9 of 9 : IVerifier.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

interface IVerifier {
    function verifyProof(
        uint256[8] calldata proof,
        uint256[2] calldata commit,
        uint256[2] calldata knowledgeProof,
        uint256[9] calldata input
    ) external view returns (bool r);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 800
  },
  "viaIR": true,
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint64[]","name":"_chainIds","type":"uint64[]"},{"internalType":"address[]","name":"_anchorProviders","type":"address[]"},{"internalType":"address[]","name":"_verifiers","type":"address[]"},{"internalType":"bytes32[]","name":"_initRoots","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"},{"indexed":false,"internalType":"address","name":"anchorProvider","type":"address"}],"name":"AnchorProviderUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"circuitDigest","type":"bytes32"}],"name":"CircuitDigestUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"ProverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"ProverRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RootUpdaterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"smtRoot","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"endBlockNum","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"SmtRootUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"},{"indexed":false,"internalType":"address","name":"verifier","type":"address"}],"name":"VerifierUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addPausers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"addProvers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"anchorProviders","outputs":[{"internalType":"contract IAnchorBlocks","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"circuitDigests","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"getLatestRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isActiveProver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"bytes32","name":"smtRoot","type":"bytes32"}],"name":"isSmtRootValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"latestRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numPausers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numProvers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pauserList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pausers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"bytes32","name":"newRoot","type":"bytes32"},{"internalType":"uint64","name":"endBlockNum","type":"uint64"}],"name":"postRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proverStates","outputs":[{"internalType":"enum BrevisAccess.ProverState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"provers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removePausers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"removeProvers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renouncePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootUpdater","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"address","name":"anchorProvider","type":"address"}],"name":"setAnchorProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"bytes32","name":"_circuitDigest","type":"bytes32"}],"name":"setCircuitDigest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rootUpdater","type":"address"}],"name":"setRootUpdater","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"address","name":"verifier","type":"address"}],"name":"setVerifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"smtRoots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"components":[{"internalType":"bytes32","name":"newSmtRoot","type":"bytes32"},{"internalType":"uint64","name":"endBlockNum","type":"uint64"},{"internalType":"bytes32","name":"endBlockHash","type":"bytes32"},{"internalType":"bytes32","name":"nextChunkMerkleRoot","type":"bytes32"},{"internalType":"bytes32","name":"circuitDigest","type":"bytes32"},{"internalType":"uint256[8]","name":"proof","type":"uint256[8]"},{"internalType":"uint256[2]","name":"commit","type":"uint256[2]"},{"internalType":"uint256[2]","name":"knowledgeProof","type":"uint256[2]"}],"internalType":"struct ISMT.SmtUpdate","name":"u","type":"tuple"}],"name":"updateRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"verifiers","outputs":[{"internalType":"contract IVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

604060808152346200039d576200217e90813803806200001f81620003bc565b93843982016080838203126200039d5782516001600160401b0391908281116200039d5784019381601f860112156200039d578451916200006a6200006484620003f8565b620003bc565b908196848352602080930183600596871b830101918383116200039d578401905b828210620003a257505050818301518581116200039d5781620000b091850162000410565b96868401518681116200039d5782620000cb91860162000410565b936060810151908782116200039d57019180601f840112156200039d578251620000f96200006482620003f8565b938580868481520192891b8201019283116200039d5785809101915b8383106200038c575050600080548a519891976001600160a01b0394509250338482167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08a80a36001600160a81b0319163360ff60a01b198116919091178855875260018087528a88205490989060ff166200034a57506002549a680100000000000000008c10156200033657888c01806002558c101562000322578a99899c957f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8898c9860028d52818d20019d60018060a01b03199e8f3390825416179055338d52898252808d2060ff199a8b82541617905551338152a16200021d81518451146200047e565b6200022c81518651146200047e565b6200023b81518951146200047e565b899d5b62000253575b8c51611c989081620004e68239f35b8d815111156200031c578d808e8e8c828f8c8c878d838e8e620002788f8690620004ba565b51169c6200028691620004ba565b5116908b865287528585209088825416179055620002a491620004ba565b51169287825260069052209182541617905560078c52818d8c83822092620002cc91620004ba565b5190528c528c208d8a825416179055620002e7908a620004ba565b51908b5260088a528d8b20556000198e1462000308579c8a019c8a6200023e565b634e487b7160e01b8a52601160045260248afd5b62000244565b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b88526041600452602488fd5b62461bcd60e51b815260048101879052601960248201527f4163636f756e7420697320616c726561647920706175736572000000000000006044820152606490fd5b825181529181019186910162000115565b600080fd5b815188811681036200039d5781529084019084016200008b565b6040519190601f01601f191682016001600160401b03811183821017620003e257604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111620003e25760051b60200190565b9080601f830112156200039d578151906200042f6200006483620003f8565b9182938184526020808095019260051b8201019283116200039d578301905b8282106200045d575050505090565b81516001600160a01b03811681036200039d5781529083019083016200044e565b156200048657565b60405162461bcd60e51b815260206004820152600c60248201526b0d8cadc40dad2e6dac2e8c6d60a31b6044820152606490fd5b8051821015620004cf5760209160051b010190565b634e487b7160e01b600052603260045260246000fdfe608080604052600436101561001357600080fd5b60003560e01c9081631019b616146114ec57508063158535ff146114bb578063387025321461146d5780633f4ba83a1461136557806346fbf68e1461098c578063479aa6da146110b85780634f4fef181461134757806358a16b44146113295780635c975abb146113035780635ca32bd814611250578063677625f2146110f35780636ae3e080146110b85780636af2a83b14610a8c5780636b2c0f5514610a555780636ef8d66d14610a3b5780637dd9dc55146109cb57806380f51c121461098c5780638195408d1461094857806382dc1ec4146109115780638456cb59146107f25780638d0ab3b4146107cb5780638da5cb5b146107a4578063930feddb146107275780639c8413c514610674578063a036e79914610624578063afe8154b146105e0578063c9d08880146105a5578063e6c6fcec14610555578063e79b7a511461046f578063ec64842e14610425578063f2fde38b14610347578063fabc74f5146102eb578063fd1190ea146102aa5763fec2fda71461019557600080fd5b346102a55760603660031901126102a5576101ae611535565b6024356101b961154c565b906001600160a01b03600a541633036102605761025b8367ffffffffffffffff7fe8e2da79405f6328030a49e89981740387fc8c731042ec804a6461e796ec6f0b95168060005260076020526040600020846000526020526040600020600160ff19825416179055600052600860205282604060002055604051938493849160409194936060840195845267ffffffffffffffff809216602085015216910152565b0390a1005b60405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6f7420757064617465720000000000000000000000006044820152606490fd5b600080fd5b346102a55760203660031901126102a5576004356004548110156102a5576001600160a01b036102db6020926115b0565b9190546040519260031b1c168152f35b346102a55760203660031901126102a5576001600160a01b0361030c6115e7565b16600052600360205260ff604060002054166040516003821015610331576020918152f35b634e487b7160e01b600052602160045260246000fd5b346102a55760203660031901126102a5576103606115e7565b600054906001600160a01b038083169161037b3384146116ee565b169182156103ba576001600160a01b0319839116176000557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608490fd5b346102a55760203660031901126102a5576001600160a01b036104466115e7565b16600052600360205260ff60406000205416600381101561033157602090600160405191148152f35b346102a5576020806003193601126102a55767ffffffffffffffff6004358181116102a557366023820112156102a557806004013591821161053f578160051b604051926104bf85830185611643565b8352602484840191830101913683116102a557602401905b82821061052857836001600160a01b03906104f7826000541633146116ee565b60005b8151811015610526578061051c84610515610521948661175e565b5116611996565b611739565b6104fa565b005b84809161053484611613565b8152019101906104d7565b634e487b7160e01b600052604160045260246000fd5b346102a55761056336611665565b6001600160a01b039061057b826000541633146116ee565b60005b8151811015610526578061051c846105996105a0948661175e565b51166117be565b61057e565b346102a55760203660031901126102a55767ffffffffffffffff6105c7611535565b1660005260096020526020604060002054604051908152f35b346102a55760203660031901126102a55767ffffffffffffffff610602611535565b16600052600560205260206001600160a01b0360406000205416604051908152f35b346102a55761063236611665565b6001600160a01b039061064a826000541633146116ee565b60005b8151811015610526578061051c8461066861066f948661175e565b5116611a7c565b61064d565b346102a55760403660031901126102a5577fb78ea0eaf11776732556ef6189312ceb60eab6b3177526b3a12d966e37be81626106ae611535565b6106b66115fd565b906001600160a01b036106ce816000541633146116ee565b67ffffffffffffffff8216600052600660205260406000209083166001600160a01b031982541617905561025b604051928392839092916001600160a01b0360209167ffffffffffffffff604085019616845216910152565b346102a55760403660031901126102a5577f3700cf839c32337bc733cb5ff719565d7b661f5e2424d2af4bc4332f56451a766040610763611535565b67ffffffffffffffff602435916107866001600160a01b036000541633146116ee565b169081600052600960205280836000205582519182526020820152a1005b346102a55760003660031901126102a55760206001600160a01b0360005416604051908152f35b346102a55760003660031901126102a55760206001600160a01b03600a5416604051908152f35b346102a55760003660031901126102a55733600052600160209080825261082060ff60406000205416611772565b60005460ff8160a01c166108cc5760ff60a01b19740100000000000000000000000000000000000000009116176000557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25882604051338152a16000815b61088357005b60045481101561052657806001600160a01b036108a26108c6936115b0565b919054600392831b1c1660005284526040600020600260ff19825416179055611739565b8161087d565b60405162461bcd60e51b815260048101849052601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606490fd5b346102a55760203660031901126102a55761052661092d6115e7565b6109436001600160a01b036000541633146116ee565b611996565b346102a55760203660031901126102a55767ffffffffffffffff61096a611535565b16600052600660205260206001600160a01b0360406000205416604051908152f35b346102a55760203660031901126102a5576001600160a01b036109ad6115e7565b166000526001602052602060ff604060002054166040519015158152f35b346102a55760203660031901126102a5577f80e49ace4205027ba0e838addddde0587d83686f5d55bcf78030c1c576b272d66020610a076115e7565b6001600160a01b0390610a1f826000541633146116ee565b16806001600160a01b0319600a541617600a55604051908152a1005b346102a55760003660031901126102a55761052633611a7c565b346102a55760203660031901126102a557610526610a716115e7565b610a876001600160a01b036000541633146116ee565b611a7c565b346102a5576102403660031901126102a557610aa6611535565b6102203660231901126102a55760405190610100820182811067ffffffffffffffff82111761053f576040526024358252610adf61154c565b60208301526064356040830152608435606083015260a43560808301523660e312156102a557604051610100810181811067ffffffffffffffff82111761053f57604052806101c4913683116102a55760c4905b8382106110a857505060a0840152366101e312156102a55760405190610b5882611627565b819036610204116102a557905b610204821061109857505060c08301523661022312156102a557604051610b8b81611627565b8036610244116102a557610204905b610244821061108857505060e083015233600052600360205260ff6040600020541660038110156103315760010361104357606082015115610f1b575b67ffffffffffffffff8116600052600860205260406000205460066020526001600160a01b03604060002054168015610ed65767ffffffffffffffff83166000526009602052604060002054608085015103610e9157604051918261012081011067ffffffffffffffff6101208501111761053f576101208301604052610120368437604085015160801c83526fffffffffffffffffffffffffffffffff8091816040880151166020860152865160801c60408601528187511660608601528060801c60808601521660a0840152606085015160801c60c084015260608501511660e0830152608084015161010083015260a084015160c08501519260e0860151604051948593633072c1a360e11b8552600485016000905b60088210610e775750505090610d0e610d1992610104860190611c3a565b610144840190611c3a565b600061018483015b60098210610e5d575050506102a4816020935afa908115610e5157600091610e16575b5015610dd15767ffffffffffffffff9081166000818152600760209081526040808320865184528252808320805460ff191660011790558551848452600883529281902092909255845194810151825195865290931692840192909252908201527fe8e2da79405f6328030a49e89981740387fc8c731042ec804a6461e796ec6f0b90806060810161025b565b60405162461bcd60e51b815260206004820152601060248201527f696e76616c6964207a6b2070726f6f66000000000000000000000000000000006044820152606490fd5b90506020813d602011610e49575b81610e3160209383611643565b810103126102a5575180151581036102a55783610d44565b3d9150610e24565b6040513d6000823e3d90fd5b829350602080916001939451815201930191018492610d21565b825181528896506020928301926001929092019101610cf0565b60405162461bcd60e51b815260206004820152601860248201527f6e6f742076616c696420636972637569742064696765737400000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f6e6f20766572696669657220666f7220636861696e49640000000000000000006044820152606490fd5b67ffffffffffffffff811660005260056020526001600160a01b03604060002054168015610ffe57602067ffffffffffffffff818501511660246040518094819363f25b3f9960e01b835260048301525afa908115610e5157600091610fcc575b50604083015114610bd75760405162461bcd60e51b815260206004820152601360248201527f616e63686f7220636865636b206661696c6564000000000000000000000000006044820152606490fd5b90506020813d602011610ff6575b81610fe760209383611643565b810103126102a5575183610f7c565b3d9150610fda565b60405162461bcd60e51b815260206004820152601760248201527f756e6b6e6f776e20616e63686f722070726f76696465720000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c69642070726f7665720000000000000000000000000000000000006044820152606490fd5b8135815260209182019101610b9a565b8135815260209182019101610b65565b8135815260209182019101610b33565b346102a55760203660031901126102a55767ffffffffffffffff6110da611535565b1660005260086020526020604060002054604051908152f35b346102a55761110136611665565b600054906001600160a01b039161111b33848316146116ee565b60ff9060a01c811615611248576002925b60005b83518110156105265781611143828661175e565b511690816000526003602081815285604060002054168281101561033157611204576004546801000000000000000081101561053f578461118d8260016111ad94016004556115b0565b90919082549060031b916001600160a01b03809116831b921b1916179055565b83600052818152604060002091881015610331576111ff937fef1fa0a4d797341645c201a742cf59be633da0589e0e3cda511cfc90cd0396849260ff19815416888b16179055604051908152a1611739565b61112f565b6064906040519062461bcd60e51b82526004820152601160248201527f6163636f756e742069732070726f7665720000000000000000000000000000006044820152fd5b60019261112c565b346102a55760403660031901126102a5577fd621c244f07f12e1f37bb9c40d61e278041fc4f2859a6736794b26f4297c809061128a611535565b6112926115fd565b906001600160a01b036112aa816000541633146116ee565b67ffffffffffffffff8216600052600560205260406000209083166001600160a01b031982541617905561025b604051928392839092916001600160a01b0360209167ffffffffffffffff604085019616845216910152565b346102a55760003660031901126102a557602060ff60005460a01c166040519015158152f35b346102a55760003660031901126102a5576020600254604051908152f35b346102a55760003660031901126102a5576020600454604051908152f35b346102a55760003660031901126102a55733600052600160209080825261139360ff60406000205416611772565b60005460ff8160a01c16156114285760ff60a01b19166000557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa82604051338152a16000815b6113df57005b60045481101561052657611422816001600160a01b036113ff85946115b0565b919054600392831b1c16600052855260406000208360ff19825416179055611739565b906113d9565b60405162461bcd60e51b815260048101849052601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606490fd5b346102a55760403660031901126102a55767ffffffffffffffff61148f611535565b1660005260076020526040600020602435600052602052602060ff604060002054166040519015158152f35b346102a55760203660031901126102a5576004356002548110156102a5576001600160a01b036102db602092611563565b346102a55760403660031901126102a55760209067ffffffffffffffff611511611535565b16600052600782526040600020602435600052825260ff6040600020541615158152f35b6004359067ffffffffffffffff821682036102a557565b6044359067ffffffffffffffff821682036102a557565b60025481101561159a5760026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190600090565b634e487b7160e01b600052603260045260246000fd5b60045481101561159a5760046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190600090565b600435906001600160a01b03821682036102a557565b602435906001600160a01b03821682036102a557565b35906001600160a01b03821682036102a557565b6040810190811067ffffffffffffffff82111761053f57604052565b90601f8019910116810190811067ffffffffffffffff82111761053f57604052565b6020806003198301126102a55767ffffffffffffffff916004358381116102a557816023820112156102a557806004013593841161053f578360051b90604051946116b285840187611643565b85526024848601928201019283116102a557602401905b8282106116d7575050505090565b8380916116e384611613565b8152019101906116c9565b156116f557565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60001981146117485760010190565b634e487b7160e01b600052601160045260246000fd5b805182101561159a5760209160051b010190565b1561177957565b60405162461bcd60e51b815260206004820152601460248201527f43616c6c6572206973206e6f74207061757365720000000000000000000000006044820152606490fd5b6001600160a01b0380911691600083815260039360209185835260409060ff828220541687811015611982571561193e576004968754966000199081890198891161192b57835b8a548110156118e8578682611819836115b0565b905490871b1c16146118335761182e90611739565b611805565b9091929394959697988082106118c3575b505050875480156118b05797849392917fd64d11086d859b73cf85a91ca06cbc484398acabe3d9a1b26d4366dff377d9859899019061189a611885836115b0565b6001600160a01b0382549160031b1b19169055565b55848252855220805460ff1916905551908152a1565b634e487b7160e01b845260318952602484fd5b6118e0926118d361118d926115b0565b905490871b1c16916115b0565b388080611844565b855162461bcd60e51b8152808c01899052601060248201527f70726f766572206e6f7420666f756e64000000000000000000000000000000006044820152606490fd5b634e487b7160e01b845260118a52602484fd5b815162461bcd60e51b815260048101859052601560248201527f6163636f756e74206973206e6f742070726f76657200000000000000000000006044820152606490fd5b634e487b7160e01b82526021600452602482fd5b6001600160a01b03811690600090828252600160205260ff604083205416611a375760025468010000000000000000811015611a2357602092611a077f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8959361118d84600160409601600255611563565b8281526001845220600160ff19825416179055604051908152a1565b634e487b7160e01b83526041600452602483fd5b60405162461bcd60e51b815260206004820152601960248201527f4163636f756e7420697320616c726561647920706175736572000000000000006044820152606490fd5b6001600160a01b038091169060009282845260019060209382855260409360ff858820541615611bf65760028054909160001991828101908111611be257908695949392918a975b611b0d575b885162461bcd60e51b8152600481018b9052601060248201527f706175736572206e6f7420666f756e64000000000000000000000000000000006044820152606490fd5b8399989799548a1015611bd9578185611b258c611563565b929054600393841b1c1614611b4e5750611b458798999a97959697611739565b97969594611ac4565b9293949796959991818310611bb4575b5050505081548015611ba057918493917fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e989993019061189a61188583611563565b634e487b7160e01b89526031600452602489fd5b611bd093611bc461118d93611563565b9054911b1c1691611563565b38808080611b5e565b87989950611ac9565b634e487b7160e01b8a52601160045260248afd5b845162461bcd60e51b815260048101879052601560248201527f4163636f756e74206973206e6f742070617573657200000000000000000000006044820152606490fd5b6000915b60028310611c4b57505050565b600190825181526020809101920192019190611c3e56fea2646970667358221220234cc67f58b0fb27f731e55388d883bb5fab7fe0a24a8ef2683e7b424212a18264736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000009569299a8877bc155232cf5aa50af42f9fc32c7c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c7a504c10a1fe213031a1872f0b6d53040217da00000000000000000000000000000000000000000000000000000000000000001754023de5458ebe80b59db8a8707d3317d7cbe19b8db8741fa06f531a69dc74a

Deployed Bytecode

0x608080604052600436101561001357600080fd5b60003560e01c9081631019b616146114ec57508063158535ff146114bb578063387025321461146d5780633f4ba83a1461136557806346fbf68e1461098c578063479aa6da146110b85780634f4fef181461134757806358a16b44146113295780635c975abb146113035780635ca32bd814611250578063677625f2146110f35780636ae3e080146110b85780636af2a83b14610a8c5780636b2c0f5514610a555780636ef8d66d14610a3b5780637dd9dc55146109cb57806380f51c121461098c5780638195408d1461094857806382dc1ec4146109115780638456cb59146107f25780638d0ab3b4146107cb5780638da5cb5b146107a4578063930feddb146107275780639c8413c514610674578063a036e79914610624578063afe8154b146105e0578063c9d08880146105a5578063e6c6fcec14610555578063e79b7a511461046f578063ec64842e14610425578063f2fde38b14610347578063fabc74f5146102eb578063fd1190ea146102aa5763fec2fda71461019557600080fd5b346102a55760603660031901126102a5576101ae611535565b6024356101b961154c565b906001600160a01b03600a541633036102605761025b8367ffffffffffffffff7fe8e2da79405f6328030a49e89981740387fc8c731042ec804a6461e796ec6f0b95168060005260076020526040600020846000526020526040600020600160ff19825416179055600052600860205282604060002055604051938493849160409194936060840195845267ffffffffffffffff809216602085015216910152565b0390a1005b60405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6f7420757064617465720000000000000000000000006044820152606490fd5b600080fd5b346102a55760203660031901126102a5576004356004548110156102a5576001600160a01b036102db6020926115b0565b9190546040519260031b1c168152f35b346102a55760203660031901126102a5576001600160a01b0361030c6115e7565b16600052600360205260ff604060002054166040516003821015610331576020918152f35b634e487b7160e01b600052602160045260246000fd5b346102a55760203660031901126102a5576103606115e7565b600054906001600160a01b038083169161037b3384146116ee565b169182156103ba576001600160a01b0319839116176000557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608490fd5b346102a55760203660031901126102a5576001600160a01b036104466115e7565b16600052600360205260ff60406000205416600381101561033157602090600160405191148152f35b346102a5576020806003193601126102a55767ffffffffffffffff6004358181116102a557366023820112156102a557806004013591821161053f578160051b604051926104bf85830185611643565b8352602484840191830101913683116102a557602401905b82821061052857836001600160a01b03906104f7826000541633146116ee565b60005b8151811015610526578061051c84610515610521948661175e565b5116611996565b611739565b6104fa565b005b84809161053484611613565b8152019101906104d7565b634e487b7160e01b600052604160045260246000fd5b346102a55761056336611665565b6001600160a01b039061057b826000541633146116ee565b60005b8151811015610526578061051c846105996105a0948661175e565b51166117be565b61057e565b346102a55760203660031901126102a55767ffffffffffffffff6105c7611535565b1660005260096020526020604060002054604051908152f35b346102a55760203660031901126102a55767ffffffffffffffff610602611535565b16600052600560205260206001600160a01b0360406000205416604051908152f35b346102a55761063236611665565b6001600160a01b039061064a826000541633146116ee565b60005b8151811015610526578061051c8461066861066f948661175e565b5116611a7c565b61064d565b346102a55760403660031901126102a5577fb78ea0eaf11776732556ef6189312ceb60eab6b3177526b3a12d966e37be81626106ae611535565b6106b66115fd565b906001600160a01b036106ce816000541633146116ee565b67ffffffffffffffff8216600052600660205260406000209083166001600160a01b031982541617905561025b604051928392839092916001600160a01b0360209167ffffffffffffffff604085019616845216910152565b346102a55760403660031901126102a5577f3700cf839c32337bc733cb5ff719565d7b661f5e2424d2af4bc4332f56451a766040610763611535565b67ffffffffffffffff602435916107866001600160a01b036000541633146116ee565b169081600052600960205280836000205582519182526020820152a1005b346102a55760003660031901126102a55760206001600160a01b0360005416604051908152f35b346102a55760003660031901126102a55760206001600160a01b03600a5416604051908152f35b346102a55760003660031901126102a55733600052600160209080825261082060ff60406000205416611772565b60005460ff8160a01c166108cc5760ff60a01b19740100000000000000000000000000000000000000009116176000557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25882604051338152a16000815b61088357005b60045481101561052657806001600160a01b036108a26108c6936115b0565b919054600392831b1c1660005284526040600020600260ff19825416179055611739565b8161087d565b60405162461bcd60e51b815260048101849052601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606490fd5b346102a55760203660031901126102a55761052661092d6115e7565b6109436001600160a01b036000541633146116ee565b611996565b346102a55760203660031901126102a55767ffffffffffffffff61096a611535565b16600052600660205260206001600160a01b0360406000205416604051908152f35b346102a55760203660031901126102a5576001600160a01b036109ad6115e7565b166000526001602052602060ff604060002054166040519015158152f35b346102a55760203660031901126102a5577f80e49ace4205027ba0e838addddde0587d83686f5d55bcf78030c1c576b272d66020610a076115e7565b6001600160a01b0390610a1f826000541633146116ee565b16806001600160a01b0319600a541617600a55604051908152a1005b346102a55760003660031901126102a55761052633611a7c565b346102a55760203660031901126102a557610526610a716115e7565b610a876001600160a01b036000541633146116ee565b611a7c565b346102a5576102403660031901126102a557610aa6611535565b6102203660231901126102a55760405190610100820182811067ffffffffffffffff82111761053f576040526024358252610adf61154c565b60208301526064356040830152608435606083015260a43560808301523660e312156102a557604051610100810181811067ffffffffffffffff82111761053f57604052806101c4913683116102a55760c4905b8382106110a857505060a0840152366101e312156102a55760405190610b5882611627565b819036610204116102a557905b610204821061109857505060c08301523661022312156102a557604051610b8b81611627565b8036610244116102a557610204905b610244821061108857505060e083015233600052600360205260ff6040600020541660038110156103315760010361104357606082015115610f1b575b67ffffffffffffffff8116600052600860205260406000205460066020526001600160a01b03604060002054168015610ed65767ffffffffffffffff83166000526009602052604060002054608085015103610e9157604051918261012081011067ffffffffffffffff6101208501111761053f576101208301604052610120368437604085015160801c83526fffffffffffffffffffffffffffffffff8091816040880151166020860152865160801c60408601528187511660608601528060801c60808601521660a0840152606085015160801c60c084015260608501511660e0830152608084015161010083015260a084015160c08501519260e0860151604051948593633072c1a360e11b8552600485016000905b60088210610e775750505090610d0e610d1992610104860190611c3a565b610144840190611c3a565b600061018483015b60098210610e5d575050506102a4816020935afa908115610e5157600091610e16575b5015610dd15767ffffffffffffffff9081166000818152600760209081526040808320865184528252808320805460ff191660011790558551848452600883529281902092909255845194810151825195865290931692840192909252908201527fe8e2da79405f6328030a49e89981740387fc8c731042ec804a6461e796ec6f0b90806060810161025b565b60405162461bcd60e51b815260206004820152601060248201527f696e76616c6964207a6b2070726f6f66000000000000000000000000000000006044820152606490fd5b90506020813d602011610e49575b81610e3160209383611643565b810103126102a5575180151581036102a55783610d44565b3d9150610e24565b6040513d6000823e3d90fd5b829350602080916001939451815201930191018492610d21565b825181528896506020928301926001929092019101610cf0565b60405162461bcd60e51b815260206004820152601860248201527f6e6f742076616c696420636972637569742064696765737400000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f6e6f20766572696669657220666f7220636861696e49640000000000000000006044820152606490fd5b67ffffffffffffffff811660005260056020526001600160a01b03604060002054168015610ffe57602067ffffffffffffffff818501511660246040518094819363f25b3f9960e01b835260048301525afa908115610e5157600091610fcc575b50604083015114610bd75760405162461bcd60e51b815260206004820152601360248201527f616e63686f7220636865636b206661696c6564000000000000000000000000006044820152606490fd5b90506020813d602011610ff6575b81610fe760209383611643565b810103126102a5575183610f7c565b3d9150610fda565b60405162461bcd60e51b815260206004820152601760248201527f756e6b6e6f776e20616e63686f722070726f76696465720000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c69642070726f7665720000000000000000000000000000000000006044820152606490fd5b8135815260209182019101610b9a565b8135815260209182019101610b65565b8135815260209182019101610b33565b346102a55760203660031901126102a55767ffffffffffffffff6110da611535565b1660005260086020526020604060002054604051908152f35b346102a55761110136611665565b600054906001600160a01b039161111b33848316146116ee565b60ff9060a01c811615611248576002925b60005b83518110156105265781611143828661175e565b511690816000526003602081815285604060002054168281101561033157611204576004546801000000000000000081101561053f578461118d8260016111ad94016004556115b0565b90919082549060031b916001600160a01b03809116831b921b1916179055565b83600052818152604060002091881015610331576111ff937fef1fa0a4d797341645c201a742cf59be633da0589e0e3cda511cfc90cd0396849260ff19815416888b16179055604051908152a1611739565b61112f565b6064906040519062461bcd60e51b82526004820152601160248201527f6163636f756e742069732070726f7665720000000000000000000000000000006044820152fd5b60019261112c565b346102a55760403660031901126102a5577fd621c244f07f12e1f37bb9c40d61e278041fc4f2859a6736794b26f4297c809061128a611535565b6112926115fd565b906001600160a01b036112aa816000541633146116ee565b67ffffffffffffffff8216600052600560205260406000209083166001600160a01b031982541617905561025b604051928392839092916001600160a01b0360209167ffffffffffffffff604085019616845216910152565b346102a55760003660031901126102a557602060ff60005460a01c166040519015158152f35b346102a55760003660031901126102a5576020600254604051908152f35b346102a55760003660031901126102a5576020600454604051908152f35b346102a55760003660031901126102a55733600052600160209080825261139360ff60406000205416611772565b60005460ff8160a01c16156114285760ff60a01b19166000557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa82604051338152a16000815b6113df57005b60045481101561052657611422816001600160a01b036113ff85946115b0565b919054600392831b1c16600052855260406000208360ff19825416179055611739565b906113d9565b60405162461bcd60e51b815260048101849052601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606490fd5b346102a55760403660031901126102a55767ffffffffffffffff61148f611535565b1660005260076020526040600020602435600052602052602060ff604060002054166040519015158152f35b346102a55760203660031901126102a5576004356002548110156102a5576001600160a01b036102db602092611563565b346102a55760403660031901126102a55760209067ffffffffffffffff611511611535565b16600052600782526040600020602435600052825260ff6040600020541615158152f35b6004359067ffffffffffffffff821682036102a557565b6044359067ffffffffffffffff821682036102a557565b60025481101561159a5760026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190600090565b634e487b7160e01b600052603260045260246000fd5b60045481101561159a5760046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190600090565b600435906001600160a01b03821682036102a557565b602435906001600160a01b03821682036102a557565b35906001600160a01b03821682036102a557565b6040810190811067ffffffffffffffff82111761053f57604052565b90601f8019910116810190811067ffffffffffffffff82111761053f57604052565b6020806003198301126102a55767ffffffffffffffff916004358381116102a557816023820112156102a557806004013593841161053f578360051b90604051946116b285840187611643565b85526024848601928201019283116102a557602401905b8282106116d7575050505090565b8380916116e384611613565b8152019101906116c9565b156116f557565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60001981146117485760010190565b634e487b7160e01b600052601160045260246000fd5b805182101561159a5760209160051b010190565b1561177957565b60405162461bcd60e51b815260206004820152601460248201527f43616c6c6572206973206e6f74207061757365720000000000000000000000006044820152606490fd5b6001600160a01b0380911691600083815260039360209185835260409060ff828220541687811015611982571561193e576004968754966000199081890198891161192b57835b8a548110156118e8578682611819836115b0565b905490871b1c16146118335761182e90611739565b611805565b9091929394959697988082106118c3575b505050875480156118b05797849392917fd64d11086d859b73cf85a91ca06cbc484398acabe3d9a1b26d4366dff377d9859899019061189a611885836115b0565b6001600160a01b0382549160031b1b19169055565b55848252855220805460ff1916905551908152a1565b634e487b7160e01b845260318952602484fd5b6118e0926118d361118d926115b0565b905490871b1c16916115b0565b388080611844565b855162461bcd60e51b8152808c01899052601060248201527f70726f766572206e6f7420666f756e64000000000000000000000000000000006044820152606490fd5b634e487b7160e01b845260118a52602484fd5b815162461bcd60e51b815260048101859052601560248201527f6163636f756e74206973206e6f742070726f76657200000000000000000000006044820152606490fd5b634e487b7160e01b82526021600452602482fd5b6001600160a01b03811690600090828252600160205260ff604083205416611a375760025468010000000000000000811015611a2357602092611a077f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8959361118d84600160409601600255611563565b8281526001845220600160ff19825416179055604051908152a1565b634e487b7160e01b83526041600452602483fd5b60405162461bcd60e51b815260206004820152601960248201527f4163636f756e7420697320616c726561647920706175736572000000000000006044820152606490fd5b6001600160a01b038091169060009282845260019060209382855260409360ff858820541615611bf65760028054909160001991828101908111611be257908695949392918a975b611b0d575b885162461bcd60e51b8152600481018b9052601060248201527f706175736572206e6f7420666f756e64000000000000000000000000000000006044820152606490fd5b8399989799548a1015611bd9578185611b258c611563565b929054600393841b1c1614611b4e5750611b458798999a97959697611739565b97969594611ac4565b9293949796959991818310611bb4575b5050505081548015611ba057918493917fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e989993019061189a61188583611563565b634e487b7160e01b89526031600452602489fd5b611bd093611bc461118d93611563565b9054911b1c1691611563565b38808080611b5e565b87989950611ac9565b634e487b7160e01b8a52601160045260248afd5b845162461bcd60e51b815260048101879052601560248201527f4163636f756e74206973206e6f742070617573657200000000000000000000006044820152606490fd5b6000915b60028310611c4b57505050565b600190825181526020809101920192019190611c3e56fea2646970667358221220234cc67f58b0fb27f731e55388d883bb5fab7fe0a24a8ef2683e7b424212a18264736f6c63430008140033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000009569299a8877bc155232cf5aa50af42f9fc32c7c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c7a504c10a1fe213031a1872f0b6d53040217da00000000000000000000000000000000000000000000000000000000000000001754023de5458ebe80b59db8a8707d3317d7cbe19b8db8741fa06f531a69dc74a

-----Decoded View---------------
Arg [0] : _chainIds (uint64[]): 1
Arg [1] : _anchorProviders (address[]): 0x9569299A8877Bc155232cF5Aa50AF42F9Fc32C7C
Arg [2] : _verifiers (address[]): 0xc7a504C10a1fe213031A1872F0b6d53040217Da0
Arg [3] : _initRoots (bytes32[]): System.Byte[]

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 0000000000000000000000009569299a8877bc155232cf5aa50af42f9fc32c7c
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [9] : 000000000000000000000000c7a504c10a1fe213031a1872f0b6d53040217da0
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [11] : 754023de5458ebe80b59db8a8707d3317d7cbe19b8db8741fa06f531a69dc74a


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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