Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00Latest 25 from a total of 73,894 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Post Root | 427799419 | 6 mins ago | IN | 0 ETH | 0.00000108 | ||||
| Post Root | 427797018 | 16 mins ago | IN | 0 ETH | 0.00000108 | ||||
| Post Root | 427792922 | 33 mins ago | IN | 0 ETH | 0.00000107 | ||||
| Post Root | 427790766 | 42 mins ago | IN | 0 ETH | 0.00000108 | ||||
| Post Root | 427788781 | 50 mins ago | IN | 0 ETH | 0.00000108 | ||||
| Post Root | 427786908 | 58 mins ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427782086 | 1 hr ago | IN | 0 ETH | 0.00000107 | ||||
| Post Root | 427780836 | 1 hr ago | IN | 0 ETH | 0.00000108 | ||||
| Post Root | 427775871 | 1 hr ago | IN | 0 ETH | 0.00000107 | ||||
| Post Root | 427773178 | 1 hr ago | IN | 0 ETH | 0.00000108 | ||||
| Post Root | 427769852 | 2 hrs ago | IN | 0 ETH | 0.00000108 | ||||
| Post Root | 427765617 | 2 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427763585 | 2 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427758080 | 2 hrs ago | IN | 0 ETH | 0.00000115 | ||||
| Post Root | 427757318 | 3 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427751095 | 3 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427750763 | 3 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427744002 | 3 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427743765 | 3 hrs ago | IN | 0 ETH | 0.0000011 | ||||
| Post Root | 427739240 | 4 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427738374 | 4 hrs ago | IN | 0 ETH | 0.00000109 | ||||
| Post Root | 427731642 | 4 hrs ago | IN | 0 ETH | 0.0000011 | ||||
| Post Root | 427731397 | 4 hrs ago | IN | 0 ETH | 0.00000111 | ||||
| Post Root | 427725134 | 5 hrs ago | IN | 0 ETH | 0.00000121 | ||||
| Post Root | 427724168 | 5 hrs ago | IN | 0 ETH | 0.0000012 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SMT
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 800 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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
}
}// 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);
}{
"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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.