diff --git a/.gitignore b/.gitignore index 1607b87..9b41a2f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ b2-committer test-docker/mysql1 test-docker/mysql2 +test-docker/postgres1 +wallet +batchFile diff --git a/README.md b/README.md index 157b78f..634eea5 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,55 @@ # b2-committer -## Introduction - -![img.png](img.png) -## Details -https://github.com/b2network/b2-node/issues/93 - -## Description - -Step1:Rollup Aggregator invoke method verifyBatchesTrustedAggregator in PolygonZkEVM.sol -Step2: b2-committer listen for events (verifyBatchesTrustedAggregator) and store data in Mysql -Step3: b2-committer submit proposal to b2-node (send a transaction) -``` -transaction { - "proposalId": getLastProposalId() from b2-node api, - "stateRoot": rootHash from a merkle tree which contains all the stateRoots of the batch, which are range of startBatchNum and endBatchNum, - "rootHash" from a merkle tree which contains all the proofs of the batch, which are range of startBatchNum and endBatchNum, - "startBatchNum": getFinalBatch() from b2-node rpc or rest interface, - "endBatchNum": startBatchNum + 10 (defined a constant) -``` - -Generate a proposal in b2-node depends on this transaction. -``` -proposal { - "transaction": transaction from above describe, - "currentBlockNum": the current b2-node block number, - "voteMax": how many b2-committer node need to vote, - "txVoteNum": voteNums Step3, - "resultVoteNum": voteNums Step8, - "winAddress": which address has the entitlement to execute submitter to submit data(stateRoot and proof) to btc network - "btcTxId": btc tx id which contains the stateRoot and proof - "voteAdressList": already vote address list, - "state": (PENDING, SUCCESS, TIMEOUT), -} -``` -simple algorithm about winAddressIndex -``` - winAddressIndex = tx_id% voteAdressList - winAddress = voteAdressList[winAddressIndex] -``` -you can get winAddress using api of b2-node. - -after generated a proposal, put proposalId to channel[proposalId] - -Step4: get proposalId from channel[proposalId]] and search proposal state from b2-node api. -if state is PENDING, and check winAddress equal local b2-committer address, then execute submitter to submit data(stateRoot and proof) to btc network -Step5: get the btcTxId from Step4, and put it in channel[btcTxId], and then update finalBatchNum in b2-node -Step6: go service loop channel[btcTxId] and get the btcTxId, and query the blockNum of btc network by btcTxId. If blockNum is confirmed, then execute Step7. -Step7: the b2-committer which execute btc transaction and get the btcTxId update the proposal btcTxId. -Step8: every b2-committer node loop their channel[proposalId] to check btcTxId is null or not. If not, then check the btcTxId blockHeight and submit a transaction to b2-node to vote. -resultVoteNum++. if resultVoteNum > 50%, then update state to SUCCESS. -Step9: loop check proposal by proposalId from channel[proposalId]. if the state of proposal is still PENDING and (currentBlockNum - proposal.currentBlockNum)> 10000, than update state to TIMEOUT and go to Step 3 again. - +# Introduce +Submit op txs to decentralized store(e.g arweave) +![img_1.png](img_1.png) +Submit op l2 state roots to decentralized store(e.g arweave) +![img_2.png](img_2.png) ## environment Variables -| env | value | description | remarks | -|------------|----------------------------------------------------------------------------------------------------------|------------------------|--------------------| -| LOG_LEVEL | info | | warn、error、panic、fatal | -| LOG_FORMAT | text | | options: text、json | -| MYSQL_DATA_SOURCE | root:root@tcp(127.0.0.1:3306)/b2_committer?charset=utf8mb4&parseTime=True&loc=Local&multiStatements=true | | | -| MYSQL_MAX_IDLE_CONNS | 10 | | | -| MYSQL_MAX_OPEN_CONNS | 20 | | | -| MYSQL_CONN_MAX_LIFETIME | 3600 | | | -| RPC_URL | https://b2-nodes.bsquared.network | B2NODE-RPC | | -| BLOCKCHAIN | B2-NODE | | | -| INIT_BLOCK_NUMBER | 0 | block-height | | -| INIT_BLOCK_HASH | 0xfbecff3c9ca93f097d243d01d027d28f9bdcdebfb3208977246504ef4dddfc08 | block-hash | | | -| POLYGON_ZKEVM_ADDRESS | 0x67d269191c92Caf3cD7723F116c85e6E9bf55933 | | | -| NETWORK_NAME | testnet3 | btc-network type | | -| BITCOIN_PRIVATE_KEY | | privateKey | | -| COMMITTER_DESTINATION_ADDRESS | 0xB50109D57ae713388dc404eb2e8311bd9A8125a9 | btc commit destination | | | - +| env | value | description | remarks | +| ---------------------------------- | ------------------------------------------------------------ | ---------------------------------------- | ------------------------- | +| LOG_LEVEL | info | | warn、error、panic、fatal | +| LOG_FORMAT | text | | options: text、json | +| MYSQL_DATA_SOURCE | root:root@tcp(127.0.0.1:3306)/b2_committer?charset=utf8mb4&parseTime=True&loc=Local&multiStatements=true | | | +| MYSQL_MAX_IDLE_CONNS | 10 | | | +| MYSQL_MAX_OPEN_CONNS | 20 | | | +| MYSQL_CONN_MAX_LIFETIME | 3600 | | | +| RPC_URL | https://b2-nodes.bsquared.network | B2NODE-RPC | | +| BEACON_CHAIN_ID | 11155111 | | | +| BEACON_CHAIN_RPC_URL | 3600 | | | +| BLOCKCHAIN | B2-NODE | | | +| INIT_BLOCK_NUMBER | 0 | for begainning to sync block to local db | | +| INIT_BLOCK_HASH | 0x9612534dc810c9c51211c77def2db781d7cc7979b0cb076a47c9fc6fb6dc475c | Init block hash | | +| INIT_BLOB_BLOCK_NUMBER | 5687501 | | | +| INIT_BLOB_BLOCK_HASH | 0x6218666b40fce4153e8f5349ab2f9d2590a601e5a178e4b6d4580094d5c0c2ee | | | +| BLOB_INTERVAL_TIME | 3600 | btc-network type | | +| OUTPUT_INTERVAL_TIME | 3600 | btc-network type | | +| L2_OUTPUT_ORACLE_PROXY_CONTRACT | 0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F | btc-network type | | +| BATCHER_INBOX | 0xff00000000000000000000000000000011155420 (op batcher inbox) | btc-network type | | +| BATCHER_SENDER | 0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c (op batcher inbox) | btc-network type | | +| DSTYPE | arweave (DecentralizedStore type) | btc-network type | | +| B2NODE_ARWEAVE_WALLET | /tmp/wallet/account.json | btc-network type | | +| B2NODE_ARWEAVE_RPC | https://arweave.net | btc-network type | | +| UNISAT_URL | https://open-api-testnet.unisat.io/ | privateKey | | +| UNISAT_PRIVATE_KEY | | btc commit destination | | +| B2NODE_CHAIN_ID | 11155111 | btc commit destination | | +| B2NODE_RPC_URL | 11155111 | btc commit destination | | +| B2NODE_OP_COMMITTER_ADDRESS | 0x270794Fc3ca753CDE033D2AeF9D00EAf71EbC386 | btc commit destination | | +| B2NODE_OP_PROPOSERS_ADDRESS | 0x837596C1Aa783E3B06C7Efb10a51Fe6699208D1D | btc commit destination | | +| B2NODE_OP_PROPOSAL_MANAGER_ADDRESS | 0x837596C1Aa783E3B06C7Efb10a51Fe6699208D1D | btc commit destination | | +| B2NODE_CREATOR_ADDRESS | 0xb634434CA448c39b05b460dEC51f458EaC1e2759 | btc commit destination | | +| B2NODE_CREATOR_PRIVATE_KEY | 0a81baab0ca0b65d406d68c79945054b092cbe77499ca55c57b3ecfd33f1d551 | btc commit destination | | +| BITCOIN_NETWORK_NAME | testnet3 | btc commit destination | | +| BITCOIN_PRIVATE_KEY | | btc commit destination | | +| COMMITTER_DESTINATION_ADDRESS | tb1q6t5py7fqml8patll2jzfc26q7987xqthslyvj4 | btc commit destination | | + +Reference environment params + +`B2NODE_CHAIN_ID=11155111;B2NODE_OP_COMMITTER_ADDRESS=0xE3DA42426AdEABC1c8d1ac28e79ef0bccbb6311e;B2NODE_OP_PROPOSAL_MANAGER_ADDRESS=0x16Bb9b79187B8d6C6Ad3ADe6dfA650070AA831c7;B2NODE_OP_PROPOSERS_ADDRESS=0x53bf2212Df41130F68Dfdf3f985105534C37e3E2;B2NODE_RPC_URL=https://quaint-white-season.ethereum-sepolia.quiknode.pro/b5c30cbb548d8743f08dd175fe50e3e923259d30;BATCHER_INBOX=0xfF000000000000000000000000000000000000FF;BATCHER_SENDER=0x4D0ca19b3c317DdB3c67FCC2C033ff0c25787BEe;BEACON_CHAIN_ID=213;BEACON_CHAIN_RPC_URL=https://hub-cl-rpc.bsquared.network;INIT_BLOB_BLOCK_HASH=0x35db0d9c50e33120690f50d2a50001be60c8c6b6871e03c2b8a1d39235b52d2d;INIT_BLOB_BLOCK_NUMBER=124543;INIT_BLOCK_HASH=0x0ade6a25acf1c5fa0f2b683584a2ea12a4913751b306549f5a740a39e2e38ec1;INIT_BLOCK_NUMBER=0;L2_OUTPUT_ORACLE_PROXY_CONTRACT=0x7893392346c2D73730733002718F278b4301dF83;RPC_URL=https://hub-rpc.bsquared.network` ### Run diff --git a/abi/Committer.json b/abi/Committer.json new file mode 100644 index 0000000..8cc2c11 --- /dev/null +++ b/abi/Committer.json @@ -0,0 +1 @@ +[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ProposalIsNotExist","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"chainID","type":"uint64"},{"indexed":true,"internalType":"uint64","name":"proposalID","type":"uint64"},{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"string","name":"proofHash","type":"string"},{"indexed":false,"internalType":"string","name":"stateRootHash","type":"string"},{"indexed":true,"internalType":"uint256","name":"startIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"ProposalSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"chainID","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"ProposalTimedOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"chainID","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"proposalID","type":"uint64"},{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint8","name":"phase","type":"uint8"}],"name":"VoteProposal","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"}],"name":"addChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"proposer","type":"address"}],"name":"addProposer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allChains","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allProposers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"allSubmitBitcoinTxVotes","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"allSubmitProofVotes","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"}],"name":"arweaveTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"}],"name":"bitcoinTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"chains","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chainsList","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"a","type":"string"},{"internalType":"string","name":"b","type":"string"}],"name":"compareStrings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"}],"name":"getLastProposal","outputs":[{"components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"startIndex","type":"uint64"},{"internalType":"uint64","name":"endIndex","type":"uint64"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"string","name":"proofHash","type":"string"},{"internalType":"string","name":"stateRootHash","type":"string"},{"internalType":"string","name":"btcTxHash","type":"string"},{"internalType":"string","name":"arweaveTxHash","type":"string"}],"internalType":"struct Committer.Proposal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"isProposalTimeout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"isProposer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"}],"name":"isSupportedChain","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"address","name":"voter","type":"address"}],"name":"isVotedOnBitcoinTxPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"address","name":"voter","type":"address"}],"name":"isVotedOnSubmitProofPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"lastProposal","outputs":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"startIndex","type":"uint64"},{"internalType":"uint64","name":"endIndex","type":"uint64"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"string","name":"proofHash","type":"string"},{"internalType":"string","name":"stateRootHash","type":"string"},{"internalType":"string","name":"btcTxHash","type":"string"},{"internalType":"string","name":"arweaveTxHash","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"proposal","outputs":[{"components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"startIndex","type":"uint64"},{"internalType":"uint64","name":"endIndex","type":"uint64"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"string","name":"proofHash","type":"string"},{"internalType":"string","name":"stateRootHash","type":"string"},{"internalType":"string","name":"btcTxHash","type":"string"},{"internalType":"string","name":"arweaveTxHash","type":"string"}],"internalType":"struct Committer.Proposal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"}],"name":"proposals","outputs":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"startIndex","type":"uint64"},{"internalType":"uint64","name":"endIndex","type":"uint64"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"string","name":"proofHash","type":"string"},{"internalType":"string","name":"stateRootHash","type":"string"},{"internalType":"string","name":"btcTxHash","type":"string"},{"internalType":"string","name":"arweaveTxHash","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proposers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposersList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"}],"name":"removeChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"proposer","type":"address"}],"name":"removeProposer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"period","type":"uint256"}],"name":"setTimeoutPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"submitBitcoinTxPhaseVotes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"proofHash","type":"string"},{"internalType":"string","name":"stateRootHash","type":"string"},{"internalType":"uint64","name":"startIndex","type":"uint64"},{"internalType":"uint64","name":"endIndex","type":"uint64"}],"name":"submitProof","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"submitProofPhaseVotes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeoutPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainID","type":"uint64"},{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"timeoutProposal","outputs":[],"stateMutability":"nonpayable","type":"function"}] diff --git a/abi/OpCommitter.json b/abi/OpCommitter.json new file mode 100644 index 0000000..41c041b --- /dev/null +++ b/abi/OpCommitter.json @@ -0,0 +1 @@ +[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":true,"internalType":"uint64","name":"proposalID","type":"uint64"},{"indexed":false,"internalType":"string","name":"outputRoot","type":"string"},{"indexed":false,"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"outputEndIndex","type":"uint64"}],"name":"StateRootSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":true,"internalType":"uint64","name":"proposalID","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"indexed":false,"internalType":"string","name":"txsRoot","type":"string"}],"name":"TxsRootSubmitted","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"}],"name":"bitcoinTxHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"proposalType","type":"uint64"},{"internalType":"uint64","name":"dsType","type":"uint64"},{"internalType":"string","name":"txHash","type":"string"}],"name":"dsTxHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_proposer","type":"address"},{"internalType":"address","name":"_proposalManager","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalManager","outputs":[{"internalType":"contract IOpProposalManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposer","outputs":[{"internalType":"contract IProposer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proposalManager","type":"address"}],"name":"setProposalManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proposer","type":"address"}],"name":"setProposer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"period","type":"uint256"}],"name":"setStateRootTimeoutPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"period","type":"uint256"}],"name":"setTxsRootTimeoutPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stateRootTimeoutPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"outputRoot","type":"string"},{"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"internalType":"uint64","name":"outputEndIndex","type":"uint64"}],"name":"submitStateRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"internalType":"string","name":"txsRoot","type":"string"},{"internalType":"uint64[]","name":"blockList","type":"uint64[]"}],"name":"submitTxsRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"proposalType","type":"uint64"}],"name":"timeoutProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txsRootTimeoutPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}] diff --git a/abi/OpProposalManager.json b/abi/OpProposalManager.json new file mode 100644 index 0000000..6ed4b8b --- /dev/null +++ b/abi/OpProposalManager.json @@ -0,0 +1 @@ +[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"allBitcoinTxVotes","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"proposalType","type":"uint64"}],"name":"allDSTxVotes","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint8","name":"proposalType","type":"uint8"}],"name":"allProposalVotes","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint8","name":"proposalType","type":"uint8"}],"name":"cleanVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLastStateRootProposal","outputs":[{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"outputRoot","type":"string"},{"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"internalType":"uint64","name":"outputEndIndex","type":"uint64"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"string","name":"bitcoinTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"internalType":"struct OpProposal.StateRootProposal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastTxsRootProposal","outputs":[{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"internalType":"string","name":"txsRoot","type":"string"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"uint64[]","name":"blockList","type":"uint64[]"}],"internalType":"struct OpProposal.TxsRootProposal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"getStateRootProposal","outputs":[{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"outputRoot","type":"string"},{"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"internalType":"uint64","name":"outputEndIndex","type":"uint64"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"string","name":"bitcoinTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"internalType":"struct OpProposal.StateRootProposal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"}],"name":"getTxsRootProposal","outputs":[{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"internalType":"string","name":"txsRoot","type":"string"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"uint64[]","name":"blockList","type":"uint64[]"}],"internalType":"struct OpProposal.TxsRootProposal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"address","name":"voter","type":"address"}],"name":"isVotedOnStateRootDSTxPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"address","name":"voter","type":"address"}],"name":"isVotedOnStateRootProposalPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"address","name":"voter","type":"address"}],"name":"isVotedOnSubmitBitcoinTxPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"address","name":"voter","type":"address"}],"name":"isVotedOnTxsRootProposalPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"address","name":"voter","type":"address"}],"name":"isVotedOntxsRootDSTxPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastStateRootProposal","outputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"outputRoot","type":"string"},{"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"internalType":"uint64","name":"outputEndIndex","type":"uint64"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"string","name":"bitcoinTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTxsRootProposal","outputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"internalType":"string","name":"txsRoot","type":"string"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opCommitter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"committer","type":"address"}],"name":"setCommitter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"outputRoot","type":"string"},{"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"internalType":"uint64","name":"outputEndIndex","type":"uint64"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"string","name":"bitcoinTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"internalType":"struct OpProposal.StateRootProposal","name":"proposal","type":"tuple"}],"name":"setLastStateRootProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"internalType":"string","name":"txsRoot","type":"string"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"uint64[]","name":"blockList","type":"uint64[]"}],"internalType":"struct OpProposal.TxsRootProposal","name":"proposal","type":"tuple"}],"name":"setLastTxsRootProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"outputRoot","type":"string"},{"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"internalType":"uint64","name":"outputEndIndex","type":"uint64"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"string","name":"bitcoinTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"internalType":"struct OpProposal.StateRootProposal","name":"proposal","type":"tuple"}],"name":"setStateRootProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"components":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"internalType":"string","name":"txsRoot","type":"string"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"uint64[]","name":"blockList","type":"uint64[]"}],"internalType":"struct OpProposal.TxsRootProposal","name":"proposal","type":"tuple"}],"name":"setTxsRootProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stateBitcoinTxVotes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stateDSTxVotes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stateRootProposalVotes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"stateRootProposals","outputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"string","name":"outputRoot","type":"string"},{"internalType":"uint64","name":"startL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"endL1Timestamp","type":"uint64"},{"internalType":"uint64","name":"startL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"endL2BlockNumber","type":"uint64"},{"internalType":"uint64","name":"outputStartIndex","type":"uint64"},{"internalType":"uint64","name":"outputEndIndex","type":"uint64"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"string","name":"bitcoinTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"txsDSTxVotes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"txsRootProposalVotes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"txsRootProposals","outputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"endTimestamp","type":"uint64"},{"internalType":"uint64","name":"startBlockNumber","type":"uint64"},{"internalType":"uint64","name":"endBlockNumber","type":"uint64"},{"internalType":"string","name":"txsRoot","type":"string"},{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"dsType","type":"uint8"},{"internalType":"string","name":"dsTxHash","type":"string"},{"internalType":"address","name":"winner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"proposalID","type":"uint64"},{"internalType":"uint8","name":"proposalType","type":"uint8"},{"internalType":"address","name":"voter","type":"address"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"uint8","name":"phase","type":"uint8"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"voteAndUpdateStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}] diff --git a/abi/PolygonSequence.json b/abi/PolygonSequence.json new file mode 100644 index 0000000..c2da512 --- /dev/null +++ b/abi/PolygonSequence.json @@ -0,0 +1,1352 @@ +[ + { + "inputs": [ + { + "internalType": "contract IPolygonZkEVMGlobalExitRootV2", + "name": "_globalExitRootManager", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "_pol", + "type": "address" + }, + { + "internalType": "contract IPolygonZkEVMBridgeV2", + "name": "_bridgeAddress", + "type": "address" + }, + { + "internalType": "contract PolygonRollupManager", + "name": "_rollupManager", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + + ], + "name": "BatchAlreadyVerified", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "BatchNotSequencedOrNotSequenceEnd", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ExceedMaxVerifyBatches", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "FinalNumBatchBelowLastVerifiedBatch", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "FinalNumBatchDoesNotMatchPendingState", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "FinalPendingStateNumInvalid", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ForceBatchNotAllowed", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ForceBatchTimeoutNotExpired", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ForceBatchesAlreadyActive", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ForceBatchesDecentralized", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ForceBatchesNotAllowedOnEmergencyState", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ForceBatchesOverflow", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ForcedDataDoesNotMatch", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "GasTokenNetworkMustBeZeroOnEther", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "GlobalExitRootNotExist", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "HaltTimeoutNotExpired", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "HaltTimeoutNotExpiredAfterEmergencyState", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "HugeTokenMetadataNotSupported", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InitNumBatchAboveLastVerifiedBatch", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InitNumBatchDoesNotMatchPendingState", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InitSequencedBatchDoesNotMatch", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InvalidInitializeTransaction", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InvalidProof", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InvalidRangeBatchTimeTarget", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InvalidRangeForceBatchTimeout", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "InvalidRangeMultiplierBatchFee", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "MaxTimestampSequenceInvalid", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "NewAccInputHashDoesNotExist", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "NewPendingStateTimeoutMustBeLower", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "NewStateRootNotInsidePrime", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "NewTrustedAggregatorTimeoutMustBeLower", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "NotEnoughMaticAmount", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "NotEnoughPOLAmount", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "OldAccInputHashDoesNotExist", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "OldStateRootDoesNotExist", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "OnlyAdmin", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "OnlyPendingAdmin", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "OnlyRollupManager", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "OnlyTrustedAggregator", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "OnlyTrustedSequencer", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "PendingStateDoesNotExist", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "PendingStateInvalid", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "PendingStateNotConsolidable", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "PendingStateTimeoutExceedHaltAggregationTimeout", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "SequenceZeroBatches", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "SequencedTimestampBelowForcedTimestamp", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "SequencedTimestampInvalid", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "StoredRootMustBeDifferentThanNewRoot", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "TransactionsLengthAboveMax", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "TrustedAggregatorTimeoutExceedHaltAggregationTimeout", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "TrustedAggregatorTimeoutNotExpired", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AcceptAdminRole", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "forceBatchNum", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "lastGlobalExitRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "sequencer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + } + ], + "name": "ForceBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "lastGlobalExitRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "sequencer", + "type": "address" + } + ], + "name": "InitialSequenceBatches", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "numBatch", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "l1InfoRoot", + "type": "bytes32" + } + ], + "name": "SequenceBatches", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "numBatch", + "type": "uint64" + } + ], + "name": "SequenceForceBatches", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newForceBatchAddress", + "type": "address" + } + ], + "name": "SetForceBatchAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "newforceBatchTimeout", + "type": "uint64" + } + ], + "name": "SetForceBatchTimeout", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newTrustedSequencer", + "type": "address" + } + ], + "name": "SetTrustedSequencer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "newTrustedSequencerURL", + "type": "string" + } + ], + "name": "SetTrustedSequencerURL", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "TransferAdminRole", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "numBatch", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "aggregator", + "type": "address" + } + ], + "name": "VerifyBatches", + "type": "event" + }, + { + "inputs": [ + + ], + "name": "GLOBAL_EXIT_ROOT_MANAGER_L2", + "outputs": [ + { + "internalType": "contract IBasePolygonZkEVMGlobalExitRoot", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_BRIDGE_LIST_LEN_LEN", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_BRIDGE_PARAMS", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_CONSTANT_BYTES", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_DATA_LEN_EMPTY_METADATA", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "INITIALIZE_TX_EFFECTIVE_PERCENTAGE", + "outputs": [ + { + "internalType": "bytes1", + "name": "", + "type": "bytes1" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "SIGNATURE_INITIALIZE_TX_R", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "SIGNATURE_INITIALIZE_TX_S", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "SIGNATURE_INITIALIZE_TX_V", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "TIMESTAMP_RANGE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "acceptAdminRole", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "bridgeAddress", + "outputs": [ + { + "internalType": "contract IPolygonZkEVMBridgeV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "calculatePolPerForceBatch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "polAmount", + "type": "uint256" + } + ], + "name": "forceBatch", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "forceBatchAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "forceBatchTimeout", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "forcedBatches", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "gasTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "gasTokenNetwork", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "networkID", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_gasTokenAddress", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_gasTokenNetwork", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_gasTokenMetadata", + "type": "bytes" + } + ], + "name": "generateInitializeTransaction", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "globalExitRootManager", + "outputs": [ + { + "internalType": "contract IPolygonZkEVMGlobalExitRootV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "address", + "name": "sequencer", + "type": "address" + }, + { + "internalType": "uint32", + "name": "networkID", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_gasTokenAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "sequencerURL", + "type": "string" + }, + { + "internalType": "string", + "name": "_networkName", + "type": "string" + } + ], + "name": "initialize", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "lastAccInputHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "lastForceBatch", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "lastForceBatchSequenced", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "networkName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "lastVerifiedBatch", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "newStateRoot", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "aggregator", + "type": "address" + } + ], + "name": "onVerifyBatches", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "pendingAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "pol", + "outputs": [ + { + "internalType": "contract IERC20Upgradeable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "rollupManager", + "outputs": [ + { + "internalType": "contract PolygonRollupManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "forcedGlobalExitRoot", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "forcedTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "forcedBlockHashL1", + "type": "bytes32" + } + ], + "internalType": "struct PolygonRollupBaseEtrog.BatchData[]", + "name": "batches", + "type": "tuple[]" + }, + { + "internalType": "uint64", + "name": "maxSequenceTimestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "initSequencedBatch", + "type": "uint64" + }, + { + "internalType": "address", + "name": "l2Coinbase", + "type": "address" + } + ], + "name": "sequenceBatches", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "forcedGlobalExitRoot", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "forcedTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "forcedBlockHashL1", + "type": "bytes32" + } + ], + "internalType": "struct PolygonRollupBaseEtrog.BatchData[]", + "name": "batches", + "type": "tuple[]" + } + ], + "name": "sequenceForceBatches", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newForceBatchAddress", + "type": "address" + } + ], + "name": "setForceBatchAddress", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "newforceBatchTimeout", + "type": "uint64" + } + ], + "name": "setForceBatchTimeout", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newTrustedSequencer", + "type": "address" + } + ], + "name": "setTrustedSequencer", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newTrustedSequencerURL", + "type": "string" + } + ], + "name": "setTrustedSequencerURL", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "transferAdminRole", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "trustedSequencer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "trustedSequencerURL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/abi/PolygonZkEVM.json b/abi/PolygonVerify.json similarity index 54% rename from abi/PolygonZkEVM.json rename to abi/PolygonVerify.json index ed26822..f24bdaa 100644 --- a/abi/PolygonZkEVM.json +++ b/abi/PolygonVerify.json @@ -1,103 +1,75 @@ -[ - { - "inputs": [ - { - "internalType": "contract IPolygonZkEVMGlobalExitRoot", - "name": "_globalExitRootManager", - "type": "address" - }, - { - "internalType": "contract IERC20Upgradeable", - "name": "_matic", - "type": "address" - }, - { - "internalType": "contract IVerifierRollup", - "name": "_rollupVerifier", - "type": "address" - }, - { - "internalType": "contract IPolygonZkEVMBridge", - "name": "_bridgeAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_chainID", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_forkID", - "type": "uint64" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "BatchAlreadyVerified", +[{ + "inputs": [{ + "internalType": "contract IPolygonZkEVMGlobalExitRootV2", + "name": "_globalExitRootManager", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "_pol", + "type": "address" + }, + { + "internalType": "contract IPolygonZkEVMBridge", + "name": "_bridgeAddress", + "type": "address" + }], + "stateMutability": "nonpayable", + "type": "constructor" +}, + { + "inputs": [], + "name": "AccessControlOnlyCanRenounceRolesForSelf", "type": "error" }, { "inputs": [], - "name": "BatchNotSequencedOrNotSequenceEnd", + "name": "AddressDoNotHaveRequiredRole", "type": "error" }, { "inputs": [], - "name": "ExceedMaxVerifyBatches", + "name": "AllzkEVMSequencedBatchesMustBeVerified", "type": "error" }, { "inputs": [], - "name": "FinalNumBatchBelowLastVerifiedBatch", + "name": "BatchFeeOutOfRange", "type": "error" }, { "inputs": [], - "name": "FinalNumBatchDoesNotMatchPendingState", + "name": "ChainIDAlreadyExist", "type": "error" }, { "inputs": [], - "name": "FinalPendingStateNumInvalid", - "type": "error" - }, - { - "inputs": [], - "name": "ForceBatchNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ForceBatchTimeoutNotExpired", + "name": "ExceedMaxVerifyBatches", "type": "error" }, { "inputs": [], - "name": "ForceBatchesAlreadyActive", + "name": "FinalNumBatchBelowLastVerifiedBatch", "type": "error" }, { "inputs": [], - "name": "ForceBatchesOverflow", + "name": "FinalNumBatchDoesNotMatchPendingState", "type": "error" }, { "inputs": [], - "name": "ForcedDataDoesNotMatch", + "name": "FinalPendingStateNumInvalid", "type": "error" }, { "inputs": [], - "name": "GlobalExitRootNotExist", + "name": "HaltTimeoutNotExpired", "type": "error" }, { "inputs": [], - "name": "HaltTimeoutNotExpired", + "name": "InitBatchMustMatchCurrentForkID", "type": "error" }, { @@ -122,12 +94,12 @@ }, { "inputs": [], - "name": "InvalidRangeForceBatchTimeout", + "name": "InvalidRangeMultiplierBatchFee", "type": "error" }, { "inputs": [], - "name": "InvalidRangeMultiplierBatchFee", + "name": "MustSequenceSomeBatch", "type": "error" }, { @@ -150,11 +122,6 @@ "name": "NewTrustedAggregatorTimeoutMustBeLower", "type": "error" }, - { - "inputs": [], - "name": "NotEnoughMaticAmount", - "type": "error" - }, { "inputs": [], "name": "OldAccInputHashDoesNotExist", @@ -165,11 +132,6 @@ "name": "OldStateRootDoesNotExist", "type": "error" }, - { - "inputs": [], - "name": "OnlyAdmin", - "type": "error" - }, { "inputs": [], "name": "OnlyEmergencyState", @@ -182,52 +144,42 @@ }, { "inputs": [], - "name": "OnlyPendingAdmin", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyTrustedAggregator", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyTrustedSequencer", + "name": "PendingStateDoesNotExist", "type": "error" }, { "inputs": [], - "name": "PendingStateDoesNotExist", + "name": "PendingStateInvalid", "type": "error" }, { "inputs": [], - "name": "PendingStateInvalid", + "name": "PendingStateNotConsolidable", "type": "error" }, { "inputs": [], - "name": "PendingStateNotConsolidable", + "name": "RollupAddressAlreadyExist", "type": "error" }, { "inputs": [], - "name": "PendingStateTimeoutExceedHaltAggregationTimeout", + "name": "RollupMustExist", "type": "error" }, { "inputs": [], - "name": "SequenceZeroBatches", + "name": "RollupTypeDoesNotExist", "type": "error" }, { "inputs": [], - "name": "SequencedTimestampBelowForcedTimestamp", + "name": "RollupTypeObsolete", "type": "error" }, { "inputs": [], - "name": "SequencedTimestampInvalid", + "name": "SenderMustBeRollup", "type": "error" }, { @@ -237,43 +189,117 @@ }, { "inputs": [], - "name": "TransactionsLengthAboveMax", + "name": "TrustedAggregatorTimeoutNotExpired", "type": "error" }, { "inputs": [], - "name": "TrustedAggregatorTimeoutExceedHaltAggregationTimeout", + "name": "UpdateNotCompatible", "type": "error" }, { "inputs": [], - "name": "TrustedAggregatorTimeoutNotExpired", + "name": "UpdateToSameRollupTypeID", "type": "error" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "forkID", + "type": "uint64" + }, { "indexed": false, "internalType": "address", - "name": "newAdmin", + "name": "rollupAddress", "type": "address" - } - ], - "name": "AcceptAdminRole", + }, + { + "indexed": false, + "internalType": "uint64", + "name": "chainID", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "rollupCompatibilityID", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "lastVerifiedBatchBeforeUpgrade", + "type": "uint64" + }], + "name": "AddExistingRollup", "type": "event" }, { "anonymous": false, - "inputs": [], - "name": "ActivateForceBatches", + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupTypeID", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address", + "name": "consensusImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "verifier", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "forkID", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "rollupCompatibilityID", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "genesis", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }], + "name": "AddNewRollupType", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { - "indexed": true, + "indexed": false, "internalType": "uint64", "name": "numBatch", "type": "uint64" @@ -285,15 +311,55 @@ "type": "bytes32" }, { - "indexed": true, + "indexed": false, + "internalType": "bytes32", + "name": "exitRoot", + "type": "bytes32" + }, + { + "indexed": false, "internalType": "uint64", "name": "pendingStateNum", "type": "uint64" - } - ], + }], "name": "ConsolidatePendingState", "type": "event" }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "rollupTypeID", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address", + "name": "rollupAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "chainID", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "address", + "name": "gasTokenAddress", + "type": "address" + }], + "name": "CreateNewRollup", + "type": "event" + }, { "anonymous": false, "inputs": [], @@ -308,53 +374,53 @@ }, { "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "forceBatchNum", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "lastGlobalExitRoot", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "sequencer", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "transactions", - "type": "bytes" - } - ], - "name": "ForceBatch", + "inputs": [{ + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + }], + "name": "Initialized", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupTypeID", + "type": "uint32" + }], + "name": "ObsoleteRollupType", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", + "internalType": "uint64", + "name": "lastBatchSequenced", + "type": "uint64" + }], + "name": "OnSequenceBatches", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { - "indexed": true, + "indexed": false, "internalType": "uint64", "name": "numBatch", "type": "uint64" @@ -366,199 +432,203 @@ "type": "bytes32" }, { - "indexed": true, + "indexed": false, + "internalType": "bytes32", + "name": "exitRoot", + "type": "bytes32" + }, + { + "indexed": false, "internalType": "address", "name": "aggregator", "type": "address" - } - ], + }], "name": "OverridePendingState", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, + "inputs": [{ + "indexed": false, + "internalType": "bytes32", + "name": "storedStateRoot", + "type": "bytes32" + }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", + "indexed": false, + "internalType": "bytes32", + "name": "provedStateRoot", + "type": "bytes32" + }], + "name": "ProveNonDeterministicPendingState", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, { - "indexed": false, + "indexed": true, "internalType": "bytes32", - "name": "storedStateRoot", + "name": "previousAdminRole", "type": "bytes32" }, { - "indexed": false, + "indexed": true, "internalType": "bytes32", - "name": "provedStateRoot", + "name": "newAdminRole", "type": "bytes32" - } - ], - "name": "ProveNonDeterministicPendingState", + }], + "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, { "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - } - ], - "name": "SequenceBatches", + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }], + "name": "RoleGranted", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, { "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - } - ], - "name": "SequenceForceBatches", + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }], + "name": "RoleRevoked", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "newforceBatchTimeout", - "type": "uint64" - } - ], - "name": "SetForceBatchTimeout", + "inputs": [{ + "indexed": false, + "internalType": "uint256", + "name": "newBatchFee", + "type": "uint256" + }], + "name": "SetBatchFee", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "newMultiplierBatchFee", - "type": "uint16" - } - ], + "inputs": [{ + "indexed": false, + "internalType": "uint16", + "name": "newMultiplierBatchFee", + "type": "uint16" + }], "name": "SetMultiplierBatchFee", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "newPendingStateTimeout", - "type": "uint64" - } - ], + "inputs": [{ + "indexed": false, + "internalType": "uint64", + "name": "newPendingStateTimeout", + "type": "uint64" + }], "name": "SetPendingStateTimeout", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newTrustedAggregator", - "type": "address" - } - ], + "inputs": [{ + "indexed": false, + "internalType": "address", + "name": "newTrustedAggregator", + "type": "address" + }], "name": "SetTrustedAggregator", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "newTrustedAggregatorTimeout", - "type": "uint64" - } - ], + "inputs": [{ + "indexed": false, + "internalType": "uint64", + "name": "newTrustedAggregatorTimeout", + "type": "uint64" + }], "name": "SetTrustedAggregatorTimeout", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newTrustedSequencer", - "type": "address" - } - ], - "name": "SetTrustedSequencer", + "inputs": [{ + "indexed": false, + "internalType": "uint64", + "name": "newVerifyBatchTimeTarget", + "type": "uint64" + }], + "name": "SetVerifyBatchTimeTarget", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "indexed": false, - "internalType": "string", - "name": "newTrustedSequencerURL", - "type": "string" - } - ], - "name": "SetTrustedSequencerURL", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "internalType": "uint32", + "name": "newRollupTypeID", + "type": "uint32" + }, { "indexed": false, "internalType": "uint64", - "name": "newVerifyBatchTimeTarget", + "name": "lastVerifiedBatchBeforeUpgrade", "type": "uint64" - } - ], - "name": "SetVerifyBatchTimeTarget", + }], + "name": "UpdateRollup", "type": "event" }, { "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "TransferAdminRole", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "indexed": false, "internalType": "uint64", @@ -567,33 +637,14 @@ }, { "indexed": false, - "internalType": "uint64", - "name": "forkID", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "string", - "name": "version", - "type": "string" - } - ], - "name": "UpdateZkEVMVersion", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", - "name": "stateRoot", + "name": "exitRoot", "type": "bytes32" }, { @@ -601,16 +652,20 @@ "internalType": "address", "name": "aggregator", "type": "address" - } - ], + }], "name": "VerifyBatches", "type": "event" }, { "anonymous": false, - "inputs": [ + "inputs": [{ + "indexed": true, + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { - "indexed": true, + "indexed": false, "internalType": "uint64", "name": "numBatch", "type": "uint64" @@ -621,244 +676,240 @@ "name": "stateRoot", "type": "bytes32" }, + { + "indexed": false, + "internalType": "bytes32", + "name": "exitRoot", + "type": "bytes32" + }, { "indexed": true, "internalType": "address", "name": "aggregator", "type": "address" - } - ], + }], "name": "VerifyBatchesTrustedAggregator", "type": "event" }, { "inputs": [], - "name": "acceptAdminRole", - "outputs": [], - "stateMutability": "nonpayable", + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [{ + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }], + "stateMutability": "view", "type": "function" }, { - "inputs": [ - { - "internalType": "uint64", - "name": "sequencedBatchNum", - "type": "uint64" - } - ], + "inputs": [], "name": "activateEmergencyState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "activateForceBatches", + "inputs": [{ + "internalType": "contract IPolygonRollupBase", + "name": "rollupAddress", + "type": "address" + }, + { + "internalType": "contract IVerifierRollup", + "name": "verifier", + "type": "address" + }, + { + "internalType": "uint64", + "name": "forkID", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "chainID", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "genesis", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "rollupCompatibilityID", + "type": "uint8" + }], + "name": "addExistingRollup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "admin", - "outputs": [ + "inputs": [{ + "internalType": "address", + "name": "consensusImplementation", + "type": "address" + }, { - "internalType": "address", - "name": "", + "internalType": "contract IVerifierRollup", + "name": "verifier", "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "batchFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ + }, { "internalType": "uint64", - "name": "", + "name": "forkID", "type": "uint64" - } - ], - "name": "batchNumToStateRoot", - "outputs": [ + }, + { + "internalType": "uint8", + "name": "rollupCompatibilityID", + "type": "uint8" + }, { "internalType": "bytes32", - "name": "", + "name": "genesis", "type": "bytes32" - } - ], - "stateMutability": "view", + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }], + "name": "addNewRollupType", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "bridgeAddress", - "outputs": [ - { - "internalType": "contract IPolygonZkEVMBridge", - "name": "", - "type": "address" - } - ], + "outputs": [{ + "internalType": "contract IPolygonZkEVMBridge", + "name": "", + "type": "address" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "calculateRewardPerBatch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "chainID", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "inputs": [{ + "internalType": "uint64", + "name": "chainID", + "type": "uint64" + }], + "name": "chainIDToRollupID", + "outputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [ - { - "internalType": "uint256", - "name": "newStateRoot", - "type": "uint256" - } - ], - "name": "checkStateRootInsidePrime", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", "name": "pendingStateNum", "type": "uint64" - } - ], + }], "name": "consolidatePendingState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "deactivateEmergencyState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupTypeID", + "type": "uint32" + }, { - "internalType": "bytes", - "name": "transactions", - "type": "bytes" + "internalType": "uint64", + "name": "chainID", + "type": "uint64" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "sequencer", + "type": "address" + }, + { + "internalType": "address", + "name": "gasTokenAddress", + "type": "address" }, { - "internalType": "uint256", - "name": "maticAmount", - "type": "uint256" - } - ], - "name": "forceBatch", + "internalType": "string", + "name": "sequencerURL", + "type": "string" + }, + { + "internalType": "string", + "name": "networkName", + "type": "string" + }], + "name": "createNewRollup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], - "name": "forceBatchTimeout", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "forcedBatches", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", + "name": "deactivateEmergencyState", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], - "name": "forkID", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "name": "getBatchFee", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getForcedBatchFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", "name": "initNumBatch", @@ -883,282 +934,356 @@ "internalType": "bytes32", "name": "newStateRoot", "type": "bytes32" - } - ], + }], "name": "getInputSnarkBytes", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], + "outputs": [{ + "internalType": "bytes", + "name": "", + "type": "bytes" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [], + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }], "name": "getLastVerifiedBatch", - "outputs": [ + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }], + "name": "getRoleAdmin", + "outputs": [{ + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", - "name": "", + "name": "batchNum", "type": "uint64" - } - ], + }], + "name": "getRollupBatchNumToStateRoot", + "outputs": [{ + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "globalExitRootManager", - "outputs": [ - { - "internalType": "contract IPolygonZkEVMGlobalExitRoot", - "name": "", - "type": "address" - } - ], + "name": "getRollupExitRoot", + "outputs": [{ + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "admin", - "type": "address" - }, - { - "internalType": "address", - "name": "trustedSequencer", - "type": "address" - }, - { - "internalType": "uint64", - "name": "pendingStateTimeout", - "type": "uint64" - }, - { - "internalType": "address", - "name": "trustedAggregator", - "type": "address" - }, - { - "internalType": "uint64", - "name": "trustedAggregatorTimeout", - "type": "uint64" - } - ], - "internalType": "struct PolygonZkEVM.InitializePackedParameters", - "name": "initializePackedParameters", - "type": "tuple" - }, - { - "internalType": "bytes32", - "name": "genesisRoot", - "type": "bytes32" - }, - { - "internalType": "string", - "name": "_trustedSequencerURL", - "type": "string" - }, + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { - "internalType": "string", - "name": "_networkName", - "type": "string" + "internalType": "uint64", + "name": "batchNum", + "type": "uint64" + }], + "name": "getRollupPendingStateTransitions", + "outputs": [{ + "components": [{ + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" }, - { - "internalType": "string", - "name": "_version", - "type": "string" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", + { + "internalType": "uint64", + "name": "lastVerifiedBatch", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "exitRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }], + "internalType": "struct LegacyZKEVMStateVariables.PendingState", + "name": "", + "type": "tuple" + }], + "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "isEmergencyState", - "outputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], + "internalType": "uint64", + "name": "batchNum", + "type": "uint64" + }], + "name": "getRollupSequencedBatches", + "outputs": [{ + "components": [{ + "internalType": "bytes32", + "name": "accInputHash", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "sequencedTimestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "previousLastBatchSequenced", + "type": "uint64" + }], + "internalType": "struct LegacyZKEVMStateVariables.SequencedBatchData", + "name": "", + "type": "tuple" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "isForcedBatchDisallowed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], + "name": "globalExitRootManager", + "outputs": [{ + "internalType": "contract IPolygonZkEVMGlobalExitRootV2", + "name": "", + "type": "address" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, { - "internalType": "uint64", - "name": "pendingStateNum", - "type": "uint64" - } - ], - "name": "isPendingStateConsolidable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", + "internalType": "address", + "name": "account", + "type": "address" + }], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "lastBatchSequenced", - "outputs": [ + "inputs": [{ + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "internalType": "address", + "name": "account", + "type": "address" + }], + "name": "hasRole", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "lastForceBatch", - "outputs": [ + "inputs": [{ + "internalType": "address", + "name": "trustedAggregator", + "type": "address" + }, { "internalType": "uint64", - "name": "", + "name": "_pendingStateTimeout", "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastForceBatchSequenced", - "outputs": [ + }, { "internalType": "uint64", - "name": "", + "name": "_trustedAggregatorTimeout", "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastPendingState", - "outputs": [ + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "timelock", + "type": "address" + }, + { + "internalType": "address", + "name": "emergencyCouncil", + "type": "address" + }, + { + "internalType": "contract PolygonZkEVMExistentEtrog", + "name": "polygonZkEVM", + "type": "address" + }, + { + "internalType": "contract IVerifierRollup", + "name": "zkEVMVerifier", + "type": "address" + }, { "internalType": "uint64", - "name": "", + "name": "zkEVMForkID", "type": "uint64" - } - ], - "stateMutability": "view", + }, + { + "internalType": "uint64", + "name": "zkEVMChainID", + "type": "uint64" + }], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], - "name": "lastPendingStateConsolidated", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "name": "isEmergencyState", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "lastTimestamp", - "outputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", - "name": "", + "name": "pendingStateNum", "type": "uint64" - } - ], + }], + "name": "isPendingStateConsolidable", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "lastVerifiedBatch", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "name": "lastAggregationTimestamp", + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "matic", - "outputs": [ - { - "internalType": "contract IERC20Upgradeable", - "name": "", - "type": "address" - } - ], + "name": "lastDeactivatedEmergencyStateTimestamp", + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "multiplierBatchFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], + "outputs": [{ + "internalType": "uint16", + "name": "", + "type": "uint16" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "networkName", - "outputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupTypeID", + "type": "uint32" + }], + "name": "obsoleteRollupType", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint64", + "name": "newSequencedBatches", + "type": "uint64" + }, { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", + "internalType": "bytes32", + "name": "newAccInputHash", + "type": "bytes32" + }], + "name": "onSequenceBatches", + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], + "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", "name": "initPendingStateNum", @@ -1193,88 +1318,40 @@ "internalType": "bytes32[24]", "name": "proof", "type": "bytes32[24]" - } - ], + }], "name": "overridePendingState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "pendingStateTimeout", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pendingStateTransitions", - "outputs": [ - { - "internalType": "uint64", - "name": "timestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "lastVerifiedBatch", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "exitRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "stateRoot", - "type": "bytes32" - } - ], + "inputs": [], + "name": "pol", + "outputs": [{ + "internalType": "contract IERC20Upgradeable", + "name": "", + "type": "address" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", "name": "initPendingStateNum", @@ -1309,329 +1386,317 @@ "internalType": "bytes32[24]", "name": "proof", "type": "bytes32[24]" - } - ], + }], "name": "proveNonDeterministicPendingState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "rollupVerifier", - "outputs": [ + "inputs": [{ + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, { - "internalType": "contract IVerifierRollup", - "name": "", + "internalType": "address", + "name": "account", "type": "address" - } - ], - "stateMutability": "view", + }], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ - { - "components": [ - { - "internalType": "bytes", - "name": "transactions", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "globalExitRoot", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "timestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "minForcedTimestamp", - "type": "uint64" - } - ], - "internalType": "struct PolygonZkEVM.BatchData[]", - "name": "batches", - "type": "tuple[]" - }, + "inputs": [{ + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, { "internalType": "address", - "name": "l2Coinbase", + "name": "account", "type": "address" - } - ], - "name": "sequenceBatches", + }], + "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ - { - "components": [ - { - "internalType": "bytes", - "name": "transactions", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "globalExitRoot", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "minForcedTimestamp", - "type": "uint64" - } - ], - "internalType": "struct PolygonZkEVM.ForcedBatchData[]", - "name": "batches", - "type": "tuple[]" - } - ], - "name": "sequenceForceBatches", - "outputs": [], - "stateMutability": "nonpayable", + "inputs": [{ + "internalType": "address", + "name": "rollupAddress", + "type": "address" + }], + "name": "rollupAddressToID", + "outputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rollupCount", + "outputs": [{ + "internalType": "uint32", + "name": "", + "type": "uint32" + }], + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }], + "name": "rollupIDToRollupData", + "outputs": [{ + "internalType": "contract IPolygonRollupBase", + "name": "rollupContract", + "type": "address" + }, + { + "internalType": "uint64", + "name": "chainID", + "type": "uint64" + }, + { + "internalType": "contract IVerifierRollup", + "name": "verifier", + "type": "address" + }, { "internalType": "uint64", - "name": "", + "name": "forkID", "type": "uint64" - } - ], - "name": "sequencedBatches", - "outputs": [ + }, { "internalType": "bytes32", - "name": "accInputHash", + "name": "lastLocalExitRoot", "type": "bytes32" }, { "internalType": "uint64", - "name": "sequencedTimestamp", + "name": "lastBatchSequenced", "type": "uint64" }, { "internalType": "uint64", - "name": "previousLastBatchSequenced", + "name": "lastVerifiedBatch", "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ + }, { "internalType": "uint64", - "name": "newforceBatchTimeout", + "name": "lastPendingState", "type": "uint64" - } - ], - "name": "setForceBatchTimeout", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + }, { - "internalType": "uint16", - "name": "newMultiplierBatchFee", - "type": "uint16" - } - ], - "name": "setMultiplierBatchFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "internalType": "uint64", + "name": "lastPendingStateConsolidated", + "type": "uint64" + }, { "internalType": "uint64", - "name": "newPendingStateTimeout", + "name": "lastVerifiedBatchBeforeUpgrade", "type": "uint64" - } - ], - "name": "setPendingStateTimeout", - "outputs": [], - "stateMutability": "nonpayable", + }, + { + "internalType": "uint64", + "name": "rollupTypeID", + "type": "uint64" + }, + { + "internalType": "uint8", + "name": "rollupCompatibilityID", + "type": "uint8" + }], + "stateMutability": "view", "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "newTrustedAggregator", - "type": "address" - } - ], - "name": "setTrustedAggregator", - "outputs": [], - "stateMutability": "nonpayable", + "inputs": [], + "name": "rollupTypeCount", + "outputs": [{ + "internalType": "uint32", + "name": "", + "type": "uint32" + }], + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupTypeID", + "type": "uint32" + }], + "name": "rollupTypeMap", + "outputs": [{ + "internalType": "address", + "name": "consensusImplementation", + "type": "address" + }, + { + "internalType": "contract IVerifierRollup", + "name": "verifier", + "type": "address" + }, { "internalType": "uint64", - "name": "newTrustedAggregatorTimeout", + "name": "forkID", "type": "uint64" - } - ], - "name": "setTrustedAggregatorTimeout", - "outputs": [], - "stateMutability": "nonpayable", + }, + { + "internalType": "uint8", + "name": "rollupCompatibilityID", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "obsolete", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "genesis", + "type": "bytes32" + }], + "stateMutability": "view", "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "newTrustedSequencer", - "type": "address" - } - ], - "name": "setTrustedSequencer", + "inputs": [{ + "internalType": "uint256", + "name": "newBatchFee", + "type": "uint256" + }], + "name": "setBatchFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ - { - "internalType": "string", - "name": "newTrustedSequencerURL", - "type": "string" - } - ], - "name": "setTrustedSequencerURL", + "inputs": [{ + "internalType": "uint16", + "name": "newMultiplierBatchFee", + "type": "uint16" + }], + "name": "setMultiplierBatchFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ - { - "internalType": "uint64", - "name": "newVerifyBatchTimeTarget", - "type": "uint64" - } - ], - "name": "setVerifyBatchTimeTarget", + "inputs": [{ + "internalType": "uint64", + "name": "newPendingStateTimeout", + "type": "uint64" + }], + "name": "setPendingStateTimeout", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "transferAdminRole", + "inputs": [{ + "internalType": "uint64", + "name": "newTrustedAggregatorTimeout", + "type": "uint64" + }], + "name": "setTrustedAggregatorTimeout", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", + "inputs": [{ + "internalType": "uint64", + "name": "newVerifyBatchTimeTarget", + "type": "uint64" + }], + "name": "setVerifyBatchTimeTarget", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], - "name": "trustedAggregator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], + "name": "totalSequencedBatches", + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "trustedAggregatorTimeout", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "name": "totalVerifiedBatches", + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "trustedSequencer", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], + "name": "trustedAggregatorTimeout", + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "trustedSequencerURL", - "outputs": [ + "inputs": [{ + "internalType": "contract ITransparentUpgradeableProxy", + "name": "rollupContract", + "type": "address" + }, { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", + "internalType": "uint32", + "name": "newRollupTypeID", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "upgradeData", + "type": "bytes" + }], + "name": "updateRollup", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "verifyBatchTimeTarget", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], + "outputs": [{ + "internalType": "uint64", + "name": "", + "type": "uint64" + }], "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", "name": "pendingStateNum", @@ -1657,19 +1722,27 @@ "name": "newStateRoot", "type": "bytes32" }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, { "internalType": "bytes32[24]", "name": "proof", "type": "bytes32[24]" - } - ], + }], "name": "verifyBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ + "inputs": [{ + "internalType": "uint32", + "name": "rollupID", + "type": "uint32" + }, { "internalType": "uint64", "name": "pendingStateNum", @@ -1695,15 +1768,18 @@ "name": "newStateRoot", "type": "bytes32" }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, { "internalType": "bytes32[24]", "name": "proof", "type": "bytes32[24]" - } - ], + }], "name": "verifyBatchesTrustedAggregator", "outputs": [], "stateMutability": "nonpayable", "type": "function" - } -] + }] diff --git a/abi/Proposer.json b/abi/Proposer.json new file mode 100644 index 0000000..24f3098 --- /dev/null +++ b/abi/Proposer.json @@ -0,0 +1 @@ +[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proposer","type":"address"}],"name":"addProposer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allProposers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"isProposer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proposers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposersList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proposer","type":"address"}],"name":"removeProposer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] diff --git a/docs/sql/listener.sql b/docs/sql/listener.sql index 9e62e7f..ec07bb1 100644 --- a/docs/sql/listener.sql +++ b/docs/sql/listener.sql @@ -1,156 +1,134 @@ -Create Database If Not Exists b2_committer Character Set UTF8; -USE b2_committer; +Create Database If Not Exists b2_committer_main Character Set UTF8; +USE b2_committer_main; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; --- ---------------------------- --- Table structure for rollbacks --- ---------------------------- -DROP TABLE IF EXISTS `rollbacks`; -CREATE TABLE `rollbacks` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名, eth', - `event_id` bigint NOT NULL COMMENT ' 事件ID', - PRIMARY KEY (`id`), - KEY `event_id_index` (`event_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - -- ---------------------------- -- Table structure for sync_blocks -- ---------------------------- DROP TABLE IF EXISTS `sync_blocks`; -CREATE TABLE `sync_blocks` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `miner` varchar(42) NOT NULL COMMENT ' 出块人', - `block_time` bigint NOT NULL COMMENT ' 出块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `tx_count` bigint NOT NULL COMMENT ' 交易数量', - `event_count` bigint NOT NULL COMMENT ' 事件数量', - `parent_hash` varchar(66) NOT NULL COMMENT ' 父Hash', - `status` varchar(32) NOT NULL COMMENT ' 状态', - `check_count` bigint NOT NULL COMMENT ' 检查次数', - PRIMARY KEY (`id`), - KEY `status_index` (`status`), - KEY `tx_count_index` (`tx_count`), - KEY `check_count_index` (`check_count`) -) ENGINE=InnoDB AUTO_INCREMENT=2923365 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +CREATE TABLE `sync_blocks` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `blockchain` varchar(32) NOT NULL COMMENT ' chain name', + `miner` varchar(42) NOT NULL COMMENT ' miner', + `block_time` bigint NOT NULL COMMENT ' block_time', + `block_number` bigint NOT NULL COMMENT ' block_number', + `block_hash` varchar(66) NOT NULL COMMENT ' block hash', + `tx_count` bigint NOT NULL COMMENT ' tx count', + `event_count` bigint NOT NULL COMMENT ' event count', + `parent_hash` varchar(66) NOT NULL COMMENT ' parent hash', + `status` varchar(32) NOT NULL COMMENT ' status', + `check_count` bigint NOT NULL COMMENT ' check count', + PRIMARY KEY (`id`), + KEY `status_index` (`status`), + KEY `tx_count_index` (`tx_count`), + KEY `check_count_index` (`check_count`) +) ENGINE = InnoDB + AUTO_INCREMENT = 2923365 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; --- ---------------------------- --- Table structure for sync_blocks_history --- ---------------------------- -DROP TABLE IF EXISTS `sync_blocks_history`; -CREATE TABLE `sync_blocks_history` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `miner` varchar(42) NOT NULL COMMENT ' 出块人', - `block_time` bigint NOT NULL COMMENT ' 出块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `tx_count` bigint NOT NULL COMMENT ' 交易数量', - `event_count` bigint NOT NULL COMMENT ' 事件数量', - `parent_hash` varchar(66) NOT NULL COMMENT ' 父Hash', - `status` varchar(32) NOT NULL COMMENT ' 状态', - `check_count` bigint NOT NULL COMMENT ' 检查次数', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2792531 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Table structure for sync_events -- ---------------------------- DROP TABLE IF EXISTS `sync_events`; -CREATE TABLE `sync_events` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `sync_block_id` bigint NOT NULL COMMENT ' 同步区块ID', - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `block_time` bigint NOT NULL COMMENT ' 区块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `block_log_indexed` bigint NOT NULL COMMENT ' 日志index', - `tx_index` bigint NOT NULL COMMENT ' 交易index', - `tx_hash` varchar(66) NOT NULL COMMENT ' 交易Hash', - `event_name` varchar(32) NOT NULL COMMENT ' 事件名称', - `event_hash` varchar(66) NOT NULL COMMENT ' 事件Hash', - `contract_address` varchar(42) NOT NULL COMMENT ' 合约地址', - `data` json NOT NULL COMMENT ' 数据内容', - `status` varchar(32) NOT NULL COMMENT ' 状态', - `retry_count` bigint DEFAULT '0' COMMENT '重试次数', - PRIMARY KEY (`id`), - KEY `status_index` (`status`) -) ENGINE=InnoDB AUTO_INCREMENT=1011299 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- ---------------------------- --- Table structure for sync_events_history --- ---------------------------- -DROP TABLE IF EXISTS `sync_events_history`; -CREATE TABLE `sync_events_history` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `sync_block_id` bigint NOT NULL COMMENT ' 同步区块ID', - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `block_time` bigint NOT NULL COMMENT ' 区块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `block_log_indexed` bigint NOT NULL COMMENT ' 日志index', - `tx_index` bigint NOT NULL COMMENT ' 交易index', - `tx_hash` varchar(66) NOT NULL COMMENT ' 交易Hash', - `event_name` varchar(32) NOT NULL COMMENT ' 事件名称', - `event_hash` varchar(66) NOT NULL COMMENT ' 事件Hash', - `contract_address` varchar(42) NOT NULL COMMENT ' 合约地址', - `data` json NOT NULL COMMENT ' 数据内容', - `status` varchar(32) NOT NULL COMMENT ' 状态', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- ---------------------------- --- Table structure for sync_tasks --- ---------------------------- -DROP TABLE IF EXISTS `sync_tasks`; -CREATE TABLE `sync_tasks` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `latest_block` bigint NOT NULL COMMENT ' 同步高度', - `start_block` bigint NOT NULL COMMENT ' 同步开始区块高度', - `end_block` bigint NOT NULL COMMENT ' 同步结束区块高度', - `handle_num` bigint NOT NULL COMMENT ' 处理数', - `contracts` text NOT NULL COMMENT ' 合约地址,多个用,分割', - `status` varchar(32) NOT NULL COMMENT ' 状态', - PRIMARY KEY (`id`), - KEY `status_index` (`status`) -) ENGINE=InnoDB AUTO_INCREMENT=1000010 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - -SET FOREIGN_KEY_CHECKS = 1; +CREATE TABLE `sync_events` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `sync_block_id` bigint NOT NULL COMMENT ' sync_block_id', + `blockchain` varchar(32) NOT NULL COMMENT ' blockchain', + `block_time` bigint NOT NULL COMMENT ' block_time', + `block_number` bigint NOT NULL COMMENT ' block_number', + `block_hash` varchar(66) NOT NULL COMMENT ' block_hash', + `block_log_indexed` bigint NOT NULL COMMENT ' block_log_indexed', + `tx_index` bigint NOT NULL COMMENT ' tx_index', + `tx_hash` varchar(66) NOT NULL COMMENT ' tx_hash', + `event_name` varchar(32) NOT NULL COMMENT ' event_name', + `event_hash` varchar(66) NOT NULL COMMENT ' event_hash', + `contract_address` varchar(42) NOT NULL COMMENT ' contract_address', + `data` json NOT NULL COMMENT ' data', + `status` varchar(32) NOT NULL COMMENT ' status', + `retry_count` bigint DEFAULT '0' COMMENT 'retry_count', + PRIMARY KEY (`id`), + KEY `status_index` (`status`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1011299 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; DROP TABLE IF EXISTS `proposal`; -CREATE TABLE `proposal` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `proposal_id` bigint NOT NULL, - `proposer` varchar(128) NOT NULL, - `state_root_hash` varchar(128) NOT NULL, - `proof_root_hash` varchar(128) NOT NULL, - `start_batch_num` bigint NOT NULL, - `end_batch_num` bigint NOT NULL, - `btc_commit_tx_hash` varchar(128) , - `btc_reveal_tx_hash` varchar(128) , - `block_height` bigint NOT NULL DEFAULT 0, - `winner` varchar(128), - `status` bigint NOT NULL DEFAULT 0, +CREATE TABLE `proposal` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `proposal_id` bigint NOT NULL, + `state_root_hash` varchar(128) NOT NULL, + `proof_root_hash` varchar(128) NOT NULL, + `start_batch_num` bigint NOT NULL, + `end_batch_num` bigint NOT NULL, + `btc_tx_hash` varchar(128), + `winner` varchar(128), + `status` bigint NOT NULL DEFAULT 0, + `generate_details_file` tinyint default 0 comment '0:no generate details file 1:already generate details file for uploading', + `generate_details_file_time` datetime, + `ar_tx_hash` varchar(128), PRIMARY KEY (`id`), KEY `proposal_id_index` (`proposal_id`) -) +) ENGINE = InnoDB + AUTO_INCREMENT = 1000000 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; + +DROP TABLE IF EXISTS `blob_info`; +CREATE TABLE `blob_info` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `block_number` bigint NOT NULL, + `block_hash_hex` varchar(128) NOT NULL, + `block_time` bigint NOT NULL COMMENT ' block_time', + `blob_versioned_hash` varchar(128) NOT NULL, + `blob_hashes_index` bigint NOT NULL, + `blob_side_car_index` bigint NOT NULL, + `blob_side_car_commitment` varchar(128) NOT NULL, + `blob` MEDIUMTEXT NOT NULL, + PRIMARY KEY (`id`), + KEY `op_blob_index` (`id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1000000 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; + +DROP TABLE IF EXISTS `txs_proposal`; +CREATE TABLE `txs_proposal` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `proposal_id` bigint NOT NULL COMMENT ' proposal_id', + `start_timestamp` bigint NOT NULL COMMENT ' start_timestamp', + `end_timestamp` bigint NOT NULL COMMENT ' end_timestamp', + `start_block_number` bigint NOT NULL COMMENT ' start_block_number', + `end_block_number` bigint NOT NULL COMMENT ' end_block_number', + `txs_root` varchar(128) NOT NULL COMMENT ' txs_root', + `status` tinyint(8) NOT NULL COMMENT ' status', + `ds_type` varchar(128) NOT NULL COMMENT ' ds_type', + `ds_tx_hash` varchar(128) NOT NULL COMMENT ' ds_tx_hash', + `winner` varchar(128) NOT NULL COMMENT ' winner', + `block_list` varchar(128) NOT NULL COMMENT ' block_list', + PRIMARY KEY (`id`), + KEY `op_blob_index` (`id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1000000 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; diff --git a/go.mod b/go.mod index a87bc86..b9ef6e0 100644 --- a/go.mod +++ b/go.mod @@ -3,189 +3,196 @@ module github.com/b2network/b2committer go 1.21 require ( - cosmossdk.io/math v1.0.0-rc.0 - github.com/btcsuite/btcd v0.23.4 + github.com/btcsuite/btcd v0.24.0 github.com/btcsuite/btcd/btcec/v2 v2.3.2 - github.com/btcsuite/btcd/btcutil v1.1.2 - github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 + github.com/btcsuite/btcd/btcutil v1.1.5 + github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 github.com/caarlos0/env/v6 v6.10.1 - github.com/cosmos/cosmos-sdk v0.46.11 - github.com/ethereum/go-ethereum v1.10.26 - github.com/evmos/ethermint v0.22.0 + github.com/ethereum-optimism/optimism v1.7.3 + github.com/ethereum/go-ethereum v1.13.11 + github.com/everFinance/goar v1.6.2 github.com/pkg/errors v0.9.1 github.com/shopspring/decimal v1.3.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/txaty/go-merkletree v0.2.2 - go.uber.org/zap v1.23.0 + go.uber.org/zap v1.26.0 google.golang.org/grpc v1.60.1 - gorm.io/driver/mysql v1.5.2 - gorm.io/gorm v1.25.5 + gorm.io/driver/mysql v1.5.4 + gorm.io/gorm v1.25.9 ) require ( - cloud.google.com/go v0.111.0 // indirect - cloud.google.com/go/compute v1.23.3 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.5 // indirect - cloud.google.com/go/storage v1.30.1 // indirect - cosmossdk.io/errors v1.0.0-beta.7 // indirect - filippo.io/edwards25519 v1.0.0-rc.1 // indirect - github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/StackExchange/wmi v1.2.1 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect + github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect + github.com/CloudyKit/jet/v6 v6.2.0 // indirect + github.com/DataDog/zstd v1.5.2 // indirect + github.com/Joker/jade v1.1.3 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 // indirect + github.com/VictoriaMetrics/fastcache v1.12.1 // indirect github.com/aead/siphash v1.0.1 // indirect - github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go v1.44.122 // indirect + github.com/andybalholm/brotli v1.0.5 // indirect + github.com/aymerick/douceur v0.2.0 // indirect + github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect - github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/confio/ics23/go v0.9.0 // indirect - github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect - github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gogoproto v1.4.7 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.5 // indirect - github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect - github.com/danieljoos/wincred v1.1.2 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect + github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/deckarep/golang-set v1.8.0 // indirect - github.com/decred/dcrd/crypto/blake256 v1.0.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect - github.com/dgraph-io/ristretto v0.1.0 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/dustin/go-humanize v1.0.0 // indirect - github.com/dvsekhvalnov/jose2go v1.5.0 // indirect - github.com/felixge/httpsnoop v1.0.1 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.2.4 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/deckarep/golang-set/v2 v2.1.0 // indirect + github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 // indirect + github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240318114348-52d3dbd1605d // indirect + github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/everFinance/arseeding v1.0.3 // indirect + github.com/everFinance/ethrpc v1.0.4 // indirect + github.com/everFinance/goether v1.1.9 // indirect + github.com/everFinance/gojwk v1.0.0 // indirect + github.com/everFinance/ttcrsa v1.1.3 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/fjl/memsize v0.0.2 // indirect + github.com/flosch/pongo2/v4 v4.0.2 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect + github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect + github.com/getsentry/sentry-go v0.18.0 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/go-stack/stack v1.8.1 // indirect - github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect + github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.1.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.4.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect - github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/mux v1.8.0 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/css v1.0.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.0 // indirect - github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/hamba/avro v1.5.6 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-bexpr v0.1.11 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect + github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 // indirect + github.com/holiman/bloomfilter/v2 v2.0.3 // indirect + github.com/holiman/uint256 v1.2.4 // indirect + github.com/huin/goupnp v1.3.0 // indirect + github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac // indirect + github.com/ipfs/go-cid v0.4.1 // indirect + github.com/ipfs/go-datastore v0.6.0 // indirect + github.com/iris-contrib/schema v0.0.6 // indirect + github.com/jackpal/go-nat-pmp v1.0.2 // indirect + github.com/jbenet/goprocess v0.1.4 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/jmhodges/levigo v1.0.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kataras/blocks v0.0.7 // indirect + github.com/kataras/golog v0.1.9 // indirect + github.com/kataras/iris/v12 v12.2.1 // indirect + github.com/kataras/pio v0.0.12 // indirect + github.com/kataras/sitemap v0.0.6 // indirect + github.com/kataras/tunnel v0.0.4 // indirect github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23 // indirect - github.com/klauspost/compress v1.15.11 // indirect + github.com/klauspost/compress v1.17.2 // indirect + github.com/klauspost/cpuid/v2 v2.2.6 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/libp2p/go-flow-metrics v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.32.0 // indirect + github.com/libp2p/go-libp2p-pubsub v0.10.0 // indirect + github.com/linkedin/goavro/v2 v2.12.0 // indirect + github.com/mailgun/raymond/v2 v2.0.48 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/microcosm-cc/bluemonday v1.0.24 // indirect + github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mtibben/percent v0.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.0.6 // indirect - github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect + github.com/mitchellh/pointerstructure v1.2.1 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.12.3 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.9.0 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect + github.com/multiformats/go-multistream v0.5.0 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/panjf2000/ants/v2 v2.6.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.14.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.37.0 // indirect - github.com/prometheus/procfs v0.8.0 // indirect - github.com/rakyll/statik v0.1.7 // indirect - github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rjeczalik/notify v0.9.1 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/spf13/afero v1.9.3 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.7.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.15.0 // indirect - github.com/subosito/gotenv v1.4.2 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect - github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tendermint/tendermint v0.34.27 // indirect - github.com/tendermint/tm-db v0.6.7 // indirect - github.com/tidwall/btree v1.5.0 // indirect - github.com/tidwall/gjson v1.14.4 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/rivo/uniseg v0.4.3 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect + github.com/rs/cors v1.9.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/schollz/closestmatch v2.1.0+incompatible // indirect + github.com/shirou/gopsutil v3.21.11+incompatible // indirect + github.com/sirupsen/logrus v1.9.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/status-im/keycard-go v0.2.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect + github.com/tdewolff/minify/v2 v2.12.7 // indirect + github.com/tdewolff/parse/v2 v2.6.6 // indirect + github.com/tidwall/gjson v1.14.1 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect - github.com/tidwall/sjson v1.2.5 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect - github.com/ulikunitz/xz v0.5.10 // indirect - github.com/zondax/hid v0.9.1 // indirect - github.com/zondax/ledger-go v0.14.1 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/otel v1.19.0 // indirect - go.opentelemetry.io/otel/metric v1.19.0 // indirect - go.opentelemetry.io/otel/trace v1.19.0 // indirect - go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.18.0 // indirect - golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 // indirect - golang.org/x/net v0.20.0 // indirect - golang.org/x/oauth2 v0.15.0 // indirect + github.com/tyler-smith/go-bip39 v1.1.0 // indirect + github.com/urfave/cli/v2 v2.27.1 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/yosssi/ace v0.0.5 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.16.0 // indirect + golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/api v0.149.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.17.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect google.golang.org/protobuf v1.32.0 // indirect + gopkg.in/h2non/gentleman.v2 v2.0.5 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + gorm.io/datatypes v1.0.1 // indirect + lukechampine.com/blake3 v1.2.1 // indirect + rsc.io/tmplfunc v0.0.3 // indirect ) -replace ( - github.com/evmos/ethermint => github.com/b2network/b2-node v0.0.0-20240204125823-c364bff9b6f1 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.27 +replace github.com/ethereum/go-ethereum v1.13.11 => github.com/ethereum-optimism/op-geth v1.101311.0-rc.1 -) +replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index ded226a..0a617da 100644 --- a/go.sum +++ b/go.sum @@ -1,261 +1,59 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM= -cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= -cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= -cosmossdk.io/math v1.0.0-rc.0 h1:ml46ukocrAAoBpYKMidF0R2tQJ1Uxfns0yH8wqgMAFc= -cosmossdk.io/math v1.0.0-rc.0/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= -github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= -github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v6 v6.2.0 h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME= +github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= +github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= +github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Joker/hpp v1.0.0 h1:65+iuJYdRXv/XyN62C1uEmmOx3432rNG/rKlX6V7Kkc= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/Joker/jade v1.1.3 h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk= +github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 h1:KkH3I3sJuOLP3TjA/dfr4NAY8bghDwnXiU7cTKxQqo0= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM= +github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= +github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/agiledragon/gomonkey/v2 v2.11.0 h1:5oxSgA+tC1xuGsrIorR+sYiziYltmJyEZ9qA25b6l5U= github.com/agiledragon/gomonkey/v2 v2.11.0/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/b2network/b2-node v0.0.0-20240204125823-c364bff9b6f1 h1:qBbJcGEcqVqF9pPi62Af7cwZx8oW7mNcGpaltM0p36A= -github.com/b2network/b2-node v0.0.0-20240204125823-c364bff9b6f1/go.mod h1:5JgEd35fH7HW6rqfYOpvHS7SlUoQUCCPoCiOzTo/EME= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc= +github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= -github.com/btcsuite/btcd v0.23.0/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= -github.com/btcsuite/btcd v0.23.4 h1:IzV6qqkfwbItOS/sg/aDfPDsjPP8twrCOE2R93hxMlQ= -github.com/btcsuite/btcd v0.23.4/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= +github.com/btcsuite/btcd v0.24.0 h1:gL3uHE/IaFj6fcZSu03SvqPMSx7s/dPzfpG/atRwWdo= +github.com/btcsuite/btcd v0.24.0/go.mod h1:K4IDc1593s8jKXIF7yS7yCTSxrknB9z0STzc2j6XgE4= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= -github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= -github.com/btcsuite/btcd/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8= +github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= @@ -270,560 +68,477 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/caarlos0/env/v6 v6.10.1 h1:t1mPSxNpei6M5yAeu1qtRdPAK29Nbcf/n3G7x+b3/II= github.com/caarlos0/env/v6 v6.10.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= -github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= -github.com/cometbft/cometbft v0.34.27 h1:ri6BvmwjWR0gurYjywcBqRe4bbwc3QVs9KRcCzgh/J0= -github.com/cometbft/cometbft v0.34.27/go.mod h1:BcCbhKv7ieM0KEddnYXvQZR+pZykTKReJJYf7YC7qhw= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= -github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= -github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= -github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= -github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.46.11 h1:csMJQHtcb/EIu2EJmeg/2NaGkGw3ZScFwa4CRpCCw18= -github.com/cosmos/cosmos-sdk v0.46.11/go.mod h1:bG4AkW9bqc8ycrryyKGQEl3YV9BY2wr6HggGq8kvcgM= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= -github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= -github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gogoproto v1.4.7 h1:RzYKVnsEC7UIkDnhTIkqEB7LnIQbsySvmNEqPCiPevk= -github.com/cosmos/gogoproto v1.4.7/go.mod h1:gxGePp9qedovvl/StQL2BIJ6qlIBn1+9YxR0IulGBKA= -github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= -github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.5 h1:rGA3hOrgNxgRM5wYcSCxgQBap7fW82WZgY78V9po/iY= -github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-go/v6 v6.1.0 h1:o7oXws2vKkKfOFzJI+oNylRn44PCNt5wzHd/zKQKbvQ= -github.com/cosmos/ibc-go/v6 v6.1.0/go.mod h1:CY3zh2HLfetRiW8LY6kVHMATe90Wj/UOoY8T6cuB0is= -github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= -github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4 h1:PuHFhOUMnD62r80dN+Ik5qco2drekgsUSVdcHsvllec= +github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= -github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= -github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= -github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= +github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= +github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= +github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= -github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 h1:Izz0+t1Z5nI16/II7vuEo/nHjodOg0p7+OiDpjX5t1E= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf h1:Yt+4K30SdjOkRoRRm3vYNQgR+/ZIy0RmeUDZo7Y8zeQ= -github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= -github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= -github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/denisenkom/go-mssqldb v0.9.0 h1:RSohk2RsiZqLZ0zCjtfn3S4Gp4exhpBWHyQ7D0yGjAk= +github.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s= -github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z8veEq5ZO3DfIhZ7xgRP9WTc= +github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3/go.mod h1:QziizLAiF0KqyLdNJYD7O5cpDlaFMNZzlxYNcWsJUxs= +github.com/ethereum-optimism/op-geth v1.101311.0-rc.1 h1:3JE5FyGXNQCnXUuiK3I6ZD3zbB2DBIcEMsXCpjrXUwM= +github.com/ethereum-optimism/op-geth v1.101311.0-rc.1/go.mod h1:K23yb9efVf9DdUOv/vl/Ux57Tng00rLaFqWYlFF45CA= +github.com/ethereum-optimism/optimism v1.7.3 h1:kAwQcXcOnSqpcHDe8ZKUgbMSZn4p6khzM5E6QfqC/yQ= +github.com/ethereum-optimism/optimism v1.7.3/go.mod h1:uKYwgk+8sx5IkEZi4XXYBVx8AEgCl7jD5apZV2ht0ZQ= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240318114348-52d3dbd1605d h1:K7HdD/ZAcSFhcqqnUAbvU+8vsg0DzL8pvetHw5vRLCc= +github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240318114348-52d3dbd1605d/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= +github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= +github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/everFinance/arseeding v1.0.3 h1:V1e98ehAGFJch6T7aP9jeb2cpoll68fB/GyuMmoBesM= +github.com/everFinance/arseeding v1.0.3/go.mod h1:fxoIIXIL7G7nd6glaEvtbOxbvY/6UWD1E/bVsdD9Qio= +github.com/everFinance/ethrpc v1.0.4 h1:Ww+qr8D93Id5QkyG5Mvw58edu5tqy0sL6hDP0IfhYsE= +github.com/everFinance/ethrpc v1.0.4/go.mod h1:cQipdwW4kM1v8C+q8Z+jDDXwL7a3KngvNk9Yo+lbXpI= +github.com/everFinance/goar v1.6.2 h1:Hfhanc++MpRmmJeppML3M4K164NJBatllZ1rzR4fcRQ= +github.com/everFinance/goar v1.6.2/go.mod h1:D9b5v9Xs/W6A7odVWtIU3EBWuQfQ0qcLH4zSjGPLxAo= +github.com/everFinance/goether v1.1.9 h1:Y/zz/chv0CmoXz119J3ZK4WbGoHnMjm/IDH5qwKrvVU= +github.com/everFinance/goether v1.1.9/go.mod h1:QhUIRE3g4CPN4+OGz96pIwguyRH1hZfYo2gAUSY00Qw= +github.com/everFinance/gojwk v1.0.0 h1:le/oI2NgXlrqg3MHU6ka+V30EWcD7TD6+Ilh+go7924= +github.com/everFinance/gojwk v1.0.0/go.mod h1:icXSXsIdpAczlpAtSljQlmABkMTRZENr73KHmo0GOGc= +github.com/everFinance/ttcrsa v1.1.3 h1:RJl9UizbevHZUiWPHVKz1aM6yA8cmkZWaCbOGTD/L0I= +github.com/everFinance/ttcrsa v1.1.3/go.mod h1:Ws7b/oDbYKaZlvyT17nm+zHmzVhGl51r/yPx/Ib5RQk= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/flosch/pongo2/v4 v4.0.2 h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw= +github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= +github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= +github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= -github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 h1:uK3X/2mt4tbSGoHvbLBHUny7CKiuwUip3MArtukol4E= +github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= -github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 h1:Ep/joEub9YwcjRY6ND3+Y/w0ncE540RtGatVhtZL0/Q= +github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.0 h1:bzrYP+qu/gMrL1au7/aDvkoOVGUJpeKBgbqRHACAFDY= -github.com/hashicorp/go-getter v1.7.0/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= -github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hamba/avro v1.5.6 h1:/UBljlJ9hLjkcY7PhpI/bFYb4RMEXHEwHr17gAm/+l8= +github.com/hamba/avro v1.5.6/go.mod h1:3vNT0RLXXpFm2Tb/5KC71ZRJlOroggq1Rcitb6k4Fr8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bexpr v0.1.11 h1:6DqdA/KBjurGby9yTY0bmkathya0lfwF2SeuubCI7dY= +github.com/hashicorp/go-bexpr v0.1.11/go.mod h1:f03lAo0duBlDIUMGCuad8oLcgejw4m7U+N8T+6Kz1AE= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= +github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4= +github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= -github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= -github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= -github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= +github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= +github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= +github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/iris-contrib/httpexpect/v2 v2.12.1 h1:3cTZSyBBen/kfjCtgNFoUKi1u0FVXNaAjyRJOo6AVS4= +github.com/iris-contrib/httpexpect/v2 v2.12.1/go.mod h1:7+RB6W5oNClX7PTwJgJnsQP3ZuUUYB3u61KCqeSgZ88= +github.com/iris-contrib/schema v0.0.6 h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw= +github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk= +github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= +github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0= +github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po= +github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ= +github.com/jackc/pgtype v1.6.2/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA= +github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o= +github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg= +github.com/jackc/pgx/v4 v4.10.1/go.mod h1:QlrWebbs3kqEZPHCTGyxecvzG6tvIsYu+A5b1raylkA= +github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw= +github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3 h1:JnPg/5Q9xVJGfjsO5CPUOjnJps1JaRUm8I9FXVCFK94= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jarcoal/httpmock v1.0.6 h1:e81vOSexXU3mJuJ4l//geOmKIt+Vkxerk1feQBC8D0g= +github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= +github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= +github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= -github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kataras/blocks v0.0.7 h1:cF3RDY/vxnSRezc7vLFlQFTYXG/yAr1o7WImJuZbzC4= +github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I= +github.com/kataras/golog v0.1.9 h1:vLvSDpP7kihFGKFAvBSofYo7qZNULYSHOH2D7rPTKJk= +github.com/kataras/golog v0.1.9/go.mod h1:jlpk/bOaYCyqDqH18pgDHdaJab72yBE6i0O3s30hpWY= +github.com/kataras/iris/v12 v12.2.1 h1:KV4XwpkfmtFcsWUIqG1h5X4wXjhwvxvr5QCEk14HF20= +github.com/kataras/iris/v12 v12.2.1/go.mod h1:PIK2JnQFbcugm3EGp997vYHD5ZRpjhNouZj6bRxlEpU= +github.com/kataras/pio v0.0.12 h1:o52SfVYauS3J5X08fNjlGS5arXHjW/ItLkyLcKjoH6w= +github.com/kataras/pio v0.0.12/go.mod h1:ODK/8XBhhQ5WqrAhKy+9lTPS7sBf6O3KcLhc9klfRcY= +github.com/kataras/sitemap v0.0.6 h1:w71CRMMKYMJh6LR2wTgnk5hSgjVNB9KL60n5e2KHvLY= +github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4= +github.com/kataras/tunnel v0.0.4 h1:sCAqWuJV7nPzGrlb0os3j49lk2JhILT0rID38NHNLpA= +github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23 h1:FOOIBWrEkLgmlgGfMuZT83xIwfPDxEI2OHu6xUmJMFE= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= +github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= -github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= +github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= +github.com/libp2p/go-libp2p v0.32.0 h1:86I4B7nBUPIyTgw3+5Ibq6K7DdKRCuZw8URCfPc1hQM= +github.com/libp2p/go-libp2p v0.32.0/go.mod h1:hXXC3kXPlBZ1eu8Q2hptGrMB4mZ3048JUoS4EKaHW5c= +github.com/libp2p/go-libp2p-pubsub v0.10.0 h1:wS0S5FlISavMaAbxyQn3dxMOe2eegMfswM471RuHJwA= +github.com/libp2p/go-libp2p-pubsub v0.10.0/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= +github.com/linkedin/goavro/v2 v2.12.0 h1:rIQQSj8jdAUlKQh6DttK8wCRv4t4QO09g1C4aBWXslg= +github.com/linkedin/goavro/v2 v2.12.0/go.mod h1:KXx+erlq+RPlGSPmLF7xGo6SAbh8sCQ53x064+ioxhk= +github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw= +github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.5 h1:1IdxlwTNazvbKJQSxoJ5/9ECbEeaTTyeU7sEAZ5KKTQ= +github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= +github.com/microcosm-cc/bluemonday v1.0.24 h1:NGQoPtwGVcbGkKfvyYk1yRqknzBuoMiUrO6R7uFTPlw= +github.com/microcosm-cc/bluemonday v1.0.24/go.mod h1:ArQySAMps0790cHSkdPEJ7bGkF2VePWH773hsJNSHf8= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mitchellh/pointerstructure v1.2.1 h1:ZhBBeX8tSlRpu/FFhXH4RC4OJzFlqsQhoHZAz4x7TIw= +github.com/mitchellh/pointerstructure v1.2.1/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= -github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= +github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= +github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= +github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4= +github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= -github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= -github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= +github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/panjf2000/ants/v2 v2.6.0 h1:xOSpw42m+BMiJ2I33we7h6fYzG4DAlpE1xyI7VS2gxU= +github.com/panjf2000/ants/v2 v2.6.0/go.mod h1:cU93usDlihJZ5CfRGNDYsiBYvoilLvBF5Qp/BT2GNRE= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= -github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/rjeczalik/notify v0.9.1 h1:CLCKso/QK1snAlnhNR/CNvNiFU2saUtjV0bx3EwNeCE= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= -github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= +github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= +github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= -github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -831,700 +546,290 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= -github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= -github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= -github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= -github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= -github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= +github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/tdewolff/minify/v2 v2.12.7 h1:pBzz2tAfz5VghOXiQIsSta6srhmTeinQPjRDHWoumCA= +github.com/tdewolff/minify/v2 v2.12.7/go.mod h1:ZRKTheiOGyLSK8hOZWWv+YoJAECzDivNgAlVYDHp/Ws= +github.com/tdewolff/parse/v2 v2.6.6 h1:Yld+0CrKUJaCV78DL1G2nk3C9lKrxyRTux5aaK/AkDo= +github.com/tdewolff/parse/v2 v2.6.6/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs= +github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tdewolff/test v1.0.9 h1:SswqJCmeN4B+9gEAi/5uqT0qpi1y2/2O47V/1hhGZT0= +github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tidwall/gjson v1.6.3/go.mod h1:BaHyNc5bjzYkPqgLq7mdVzeiRtULKULXLgZFKsxEHI0= +github.com/tidwall/gjson v1.14.1 h1:iymTbGkQBhveq21bEvAQ81I0LEBork8BFe1CUZXdyuo= +github.com/tidwall/gjson v1.14.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= -github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/txaty/go-merkletree v0.2.2 h1:K5bHDFK+Q3KK+gEJeyTOECKuIwl/LVo4CI+cm0/p34g= github.com/txaty/go-merkletree v0.2.2/go.mod h1:w5HPEu7ubNw5LzS+91m+1/GtuZcWHKiPU3vEGi+ThJM= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= -github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli/v2 v2.10.2 h1:x3p8awjp/2arX+Nl/G2040AZpOCHS/eMJJ1/a+mye4Y= -github.com/urfave/cli/v2 v2.10.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= +github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA= +github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zondax/hid v0.9.1 h1:gQe66rtmyZ8VeGFcOpbuH3r7erYtNEAezCAYu8LdkJo= -github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c= -github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= -go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= -go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= -go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= -go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= -go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= -go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 h1:BEABXpNXLEz0WxtA+6CQIz2xkg80e+1zrhWyMcq8VzE= -golang.org/x/exp v0.0.0-20230131160201-f062dba9d201/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= -golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= -google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos= -google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= -google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM= -google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/h2non/gentleman.v2 v2.0.5 h1:ckmb6cLxL2DDk7WN7LSdxXDq7jNkOicFg4JZ4ZnDNuE= +gopkg.in/h2non/gentleman.v2 v2.0.5/go.mod h1:A1c7zwrTgAyyf6AbpvVksYtBayTB4STBUGmdkEtlHeA= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/mysql v1.5.2 h1:QC2HRskSE75wBuOxe0+iCkyJZ+RqpudsQtqkp+IMuXs= -gorm.io/driver/mysql v1.5.2/go.mod h1:pQLhh1Ut/WUAySdTHwBpBv6+JKcj+ua4ZFx1QQTBzb8= -gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= -gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls= -gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/datatypes v1.0.1 h1:6npnXbBtjpSb7FFVA2dG/llyTN8tvZfbUqs+WyLrYgQ= +gorm.io/datatypes v1.0.1/go.mod h1:HEHoUU3/PO5ZXfAJcVWl11+zWlE16+O0X2DgJEb4Ixs= +gorm.io/driver/mysql v1.0.5/go.mod h1:N1OIhHAIhx5SunkMGqWbGFVeh4yTNWKmMo1GOAsohLI= +gorm.io/driver/mysql v1.5.4 h1:igQmHfKcbaTVyAIHNhhB888vvxh8EdQ2uSUT0LPcBso= +gorm.io/driver/mysql v1.5.4/go.mod h1:9rYxJph/u9SWkWc9yY4XJ1F/+xO0S/ChOmbk3+Z5Tvs= +gorm.io/driver/postgres v1.0.8/go.mod h1:4eOzrI1MUfm6ObJU/UcmbXyiHSs8jSwH95G5P5dxcAg= +gorm.io/driver/postgres v1.5.7 h1:8ptbNJTDbEmhdr62uReG5BGkdQyeasu/FZHxI0IMGnM= +gorm.io/driver/postgres v1.5.7/go.mod h1:3e019WlBaYI5o5LIdNV+LyxCMNtLOQETBXL2h4chKpA= +gorm.io/driver/sqlite v1.1.4 h1:PDzwYE+sI6De2+mxAneV9Xs11+ZyKV6oxD3wDGkaNvM= +gorm.io/driver/sqlite v1.1.4/go.mod h1:mJCeTFr7+crvS+TRnWc5Z3UvwxUN1BGBLMrf5LA9DYw= +gorm.io/driver/sqlserver v1.0.7 h1:uwUtb0kdFwW5PkRbd2KJ2h4wlsqvLSjox1XVg/RnzRE= +gorm.io/driver/sqlserver v1.0.7/go.mod h1:ng66aHI47ZIKz/vvnxzDoonzmTS8HXP+JYlgg67wOog= +gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.20.12/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.21.3/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.21.4/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.21.6/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= +gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.9 h1:wct0gxZIELDk8+ZqF/MVnHLkA1rvYlBWUMv2EdsK1g8= +gorm.io/gorm v1.25.9/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= -nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= -pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= +lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +moul.io/http2curl/v2 v2.3.0 h1:9r3JfDzWPcbIklMOs2TnIFzDYvfAZvjeavG6EzP7jYs= +moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/img_1.png b/img_1.png new file mode 100644 index 0000000..97fba4b Binary files /dev/null and b/img_1.png differ diff --git a/img_2.png b/img_2.png new file mode 100644 index 0000000..5cbfe06 Binary files /dev/null and b/img_2.png differ diff --git a/internal/blockchain/blockchain.go b/internal/blockchain/blockchain.go index aecb248..730be48 100644 --- a/internal/blockchain/blockchain.go +++ b/internal/blockchain/blockchain.go @@ -2,7 +2,7 @@ package blockchain import ( config "github.com/b2network/b2committer/internal/types" - "github.com/b2network/b2committer/pkg/event/zkevm" + "github.com/b2network/b2committer/pkg/event/op" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" ) @@ -22,9 +22,9 @@ var ( ) func init() { - register(&zkevm.VerifyBatches{}) + register(&op.OutputProposed{}) cfg := config.GetConfig() - addContract(cfg.PolygonZKEVMAddress) + addContract(cfg.L2OutputOracleProxyContract) } func register(event Event) { diff --git a/internal/handler/checkstatus.go b/internal/handler/checkstatus.go deleted file mode 100644 index c22516a..0000000 --- a/internal/handler/checkstatus.go +++ /dev/null @@ -1,64 +0,0 @@ -package handler - -import ( - "time" - - "github.com/b2network/b2committer/internal/schema" - "github.com/b2network/b2committer/internal/svc" - "github.com/b2network/b2committer/pkg/log" - "github.com/pkg/errors" -) - -// CheckStatus check proposal vote status -func CheckStatus(ctx *svc.ServiceContext) { - for { - var dbProposal schema.Proposal - err := ctx.DB.Where("status=?", schema.VotingStatus).Order("end_batch_num asc").First(&dbProposal).Error - if err != nil { - log.Errorf("[Handler.CheckStatus] find Voting proposal err: %s\n", errors.WithStack(err).Error()) - time.Sleep(5 * time.Second) - continue - } - proposal, err := ctx.NodeClient.QueryProposalByID(dbProposal.ProposalID) - if err != nil { - log.Errorf("[Handler.CheckStatus] QueryProposalByID err: %s\n", errors.WithStack(err).Error()) - continue - } - if proposal.Status != schema.VotingStatus && proposal.Winner != "" { - dbProposal.Winner = proposal.Winner - dbProposal.Status = proposal.Status - dbProposal.BlockHeight = proposal.BlockHight - ctx.DB.Save(dbProposal) - } - time.Sleep(3 * time.Second) - } -} - -func CheckStatusTimeOut(ctx *svc.ServiceContext) { - for { - time.Sleep(30 * time.Second) - var dbProposal schema.Proposal - err := ctx.DB.Where("status!=?", schema.SucceedStatus).Order("end_batch_num asc").First(&dbProposal).Error - if err != nil { - log.Errorf("[Handler.CheckStatusTimeOut] find Voting proposal err: %s\n", errors.WithStack(err)) - time.Sleep(5 * time.Second) - continue - } - proposal, err := ctx.NodeClient.QueryProposalByID(dbProposal.ProposalID) - if err != nil { - log.Errorf("[Handler.CheckStatusTimeOut] QueryProposalByID err: %s\n", errors.WithStack(err)) - continue - } - if proposal.BitcoinTxHash == "" && proposal.Status == schema.PendingStatus && proposal.Winner != ctx.B2NodeConfig.Address { - num := uint64(ctx.LatestBlockNumber) - proposal.BlockHight - if num > 10000 { - err := ctx.NodeClient.TimeoutProposal(proposal.Id) - if err != nil { - log.Errorf("[Handler.CheckStatusTimeOut] TimeoutProposal err: %s\n", errors.WithStack(err)) - continue - } - } - time.Sleep(2 * time.Second) - } - } -} diff --git a/internal/handler/committer.go b/internal/handler/committer.go deleted file mode 100644 index 2bfd927..0000000 --- a/internal/handler/committer.go +++ /dev/null @@ -1,247 +0,0 @@ -package handler - -import ( - "context" - "encoding/hex" - "fmt" - "strings" - "time" - - "github.com/b2network/b2committer/pkg/log" - - "github.com/b2network/b2committer/internal/schema" - "github.com/b2network/b2committer/internal/svc" - "github.com/b2network/b2committer/pkg/event/zkevm" - "github.com/b2network/b2committer/pkg/merkle" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/common" - "github.com/pkg/errors" - mt "github.com/txaty/go-merkletree" -) - -type VerifyBatchesTrustedAggregatorParams struct { - pendingStateNum uint64 - initNumBatch uint64 - finalNewBatch uint64 - newLocalExitRoot string - newStateRoot string - proof string -} - -type VerifyBatchesAndTxHash struct { - verifyBatches *zkevm.VerifyBatches - txHash string -} - -type VerifyRangBatchInfo struct { - startBatchNum uint64 - endBatchNum uint64 - proofRootHash string - stateRootHash string -} - -// Committer find verifyBatchesTrustedAggregator event and commit stateRoot proof to b2node -func Committer(ctx *svc.ServiceContext) { - for { - var proposals []schema.Proposal - lastProposalID, lastFinalBatchNum, err := ctx.NodeClient.QueryLastProposalID() - if err != nil { - log.Errorf("[Handler.Committer][QueryLastProposalID] error info: %s", errors.WithStack(err).Error()) - time.Sleep(10 * time.Second) - continue - } - err = ctx.DB.Where("end_batch_num > ?", lastFinalBatchNum).Find(&proposals).Error - if err != nil { - log.Errorf("[Handler.Committer][DB] error info: %s", errors.WithStack(err).Error()) - time.Sleep(10 * time.Second) - continue - } - if len(proposals) > 0 { - log.Errorf("[Handler.Committer] proposal already is existed, lastFinalBatchNum: %s", lastFinalBatchNum) - continue - } - verifyBatchInfo, err := GetVerifyBatchInfoByLastBatchNum(ctx, lastFinalBatchNum) - if err != nil { - log.Errorf("[Handler.Committer] error info: %s", errors.WithStack(err).Error()) - time.Sleep(10 * time.Second) - continue - } - err = committerProposal(ctx, verifyBatchInfo, lastProposalID) - if err != nil { - log.Errorf("[Handler.Committer] error info: %s", errors.WithStack(err).Error()) - time.Sleep(10 * time.Second) - continue - } - time.Sleep(3 * time.Second) - } -} - -func GetVerifyBatchInfoByLastBatchNum(ctx *svc.ServiceContext, lastFinalBatchNum uint64) (*VerifyRangBatchInfo, error) { - verifyBatchesAndTxHashs, err := GetVerifyBatchesFromStartBatchNum(ctx, lastFinalBatchNum, ctx.Config.LimitNum) - if err != nil || len(verifyBatchesAndTxHashs) != ctx.Config.LimitNum { - return nil, fmt.Errorf("[GetVerifyBatchInfo] error info: %s", errors.WithStack(err)) - } - verifyBatchesParams := make([]*VerifyBatchesTrustedAggregatorParams, 0, ctx.Config.LimitNum) - for _, verifyBatch := range verifyBatchesAndTxHashs { - verifyBatchParam, err := GetVerifyBatchesParamsByTxHash(ctx, common.HexToHash(verifyBatch.txHash)) - if err != nil { - return nil, fmt.Errorf("[GetVerifyBatchInfo] error info: %s", errors.WithStack(err)) - } - verifyBatchesParams = append(verifyBatchesParams, verifyBatchParam) - } - verifyBatchInfo, err := GetMerkleStateRootsAndProofs(verifyBatchesParams) - if err != nil { - return nil, fmt.Errorf("[GetVerifyBatchInfo] error info: %s", errors.WithStack(err)) - } - return verifyBatchInfo, nil -} - -// CommitterProposal committer transaction to b2-node -func committerProposal(ctx *svc.ServiceContext, verifyBatchInfo *VerifyRangBatchInfo, lastProposalID uint64) error { - proposalID, err := ctx.NodeClient.SubmitProof(lastProposalID+1, ctx.B2NodeConfig.Address, verifyBatchInfo.proofRootHash, verifyBatchInfo.stateRootHash, - verifyBatchInfo.startBatchNum, verifyBatchInfo.endBatchNum) - if err != nil { - return fmt.Errorf("[committerProposal] submit proof error info: %s", errors.WithStack(err)) - } - - dbProposal := &schema.Proposal{ - Base: schema.Base{ - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - }, - EndBatchNum: verifyBatchInfo.endBatchNum, - ProposalID: proposalID, - Proposer: ctx.B2NodeConfig.Address, - Status: schema.VotingStatus, - StateRootHash: verifyBatchInfo.stateRootHash, - ProofRootHash: verifyBatchInfo.proofRootHash, - StartBatchNum: verifyBatchInfo.startBatchNum, - } - - // store db - err = ctx.DB.Save(dbProposal).Error - if err != nil { - return fmt.Errorf("[committerProposal] save proposal error info: %s", errors.WithStack(err)) - } - return nil -} - -func GetMerkleStateRootsAndProofs(params []*VerifyBatchesTrustedAggregatorParams) (*VerifyRangBatchInfo, error) { - stateRoots := make([]string, 0, 10) - proofs := make([]string, 0, 10) - var startBatchNum uint64 - var endBatchNum uint64 - for index, param := range params { - if index == 0 { - startBatchNum = param.initNumBatch - endBatchNum = param.finalNewBatch - } - if startBatchNum > param.initNumBatch { - startBatchNum = param.initNumBatch - } - if endBatchNum <= param.finalNewBatch { - endBatchNum = param.finalNewBatch - } - stateRoots = append(stateRoots, param.newStateRoot) - proofs = append(proofs, param.proof) - } - if startBatchNum == 0 { - startBatchNum = 1 - } - stateBlocks := merkle.GenerateBlocks(stateRoots) - proofBlocks := merkle.GenerateBlocks(proofs) - - stateTree, err := mt.New(nil, stateBlocks) - if err != nil { - return nil, fmt.Errorf("[GetMerkleStateRootsAndProofs] generate state tree err: %s", err) - } - proofTree, err := mt.New(nil, proofBlocks) - if err != nil { - return nil, fmt.Errorf("[GetMerkleStateRootsAndProofs] generate proof tree err: %s", err) - } - return &VerifyRangBatchInfo{ - startBatchNum: startBatchNum, - endBatchNum: endBatchNum, - proofRootHash: hex.EncodeToString(proofTree.Root), - stateRootHash: hex.EncodeToString(stateTree.Root), - }, nil -} - -func GetVerifyBatchesFromStartBatchNum(ctx *svc.ServiceContext, startBatchNum uint64, limit int) ([]*VerifyBatchesAndTxHash, error) { - events := make([]schema.SyncEvent, 0, limit) - err := ctx.DB.Table("sync_events").Select("*, JSON_EXTRACT(data, '$.numBatch') as numBatch"). - Where("JSON_EXTRACT(data, '$.numBatch') > ?", startBatchNum).Order("numBatch").Limit(limit).Find(&events).Error - if err != nil { - return nil, fmt.Errorf("[GetVerifyBatchesFromStartBatchNum] dbbase err: %s", err) - } - if len(events) != 10 { - return nil, fmt.Errorf("[GetVerifyBatchesFromStartBatchNum] sync_events find event is not enough %s", err) - } - verifyBatchesAndTxHashs := make([]*VerifyBatchesAndTxHash, 0, limit) - for _, event := range events { - verifyBatch := &zkevm.VerifyBatches{} - err = verifyBatch.ToObj(event.Data) - if err != nil { - return nil, fmt.Errorf("[GetVerifyBatchesFromStartBatchNum] parse event data error: %s", errors.WithStack(err)) - } - verifyBatchesAndTxHash := &VerifyBatchesAndTxHash{ - verifyBatches: verifyBatch, - txHash: event.TxHash, - } - verifyBatchesAndTxHashs = append(verifyBatchesAndTxHashs, verifyBatchesAndTxHash) - } - return verifyBatchesAndTxHashs, nil -} - -func DecodeTransactionInputData(contractABI abi.ABI, data []byte) (map[string]interface{}, string) { - methodSigData := data[:4] - inputsSigData := data[4:] - - method, err := contractABI.MethodById(methodSigData) - if err != nil { - log.Errorf("[DecodeTransactionInputData] parse abi error: %s\n", errors.WithStack(err)) - } - - inputsMap := make(map[string]interface{}) - - if err := method.Inputs.UnpackIntoMap(inputsMap, inputsSigData); err != nil { - log.Errorf("[DecodeTransactionInputData] parse abi error: %s\n", errors.WithStack(err)) - } - return inputsMap, method.Name -} - -func GetVerifyBatchesParamsByTxHash(ctx *svc.ServiceContext, txHash common.Hash) (*VerifyBatchesTrustedAggregatorParams, error) { - abiObject, err := abi.JSON(strings.NewReader(ZkEVMMetaData.ABI)) - if err != nil { - return nil, fmt.Errorf("[GetVerifyBatchesParamsByTxHash] parse abi error: %s", errors.WithStack(err)) - } - // method := "VerifyBatchesTrustedAggregator" - tx, _, err := ctx.RPC.TransactionByHash(context.Background(), txHash) - - inputsMap, methodName := DecodeTransactionInputData(abiObject, tx.Data()) - - if methodName != "verifyBatchesTrustedAggregator" { - return nil, fmt.Errorf("[GetVerifyBatchesParamsByTxHash] methodName is : %s parse method error: %s", methodName, errors.WithStack(err)) - } - - e := inputsMap["newLocalExitRoot"].([32]byte) - f := inputsMap["newStateRoot"].([32]byte) - g := inputsMap["proof"].([24][32]byte) - - var result string - for _, arr := range g { - result += hex.EncodeToString(arr[:]) - } - - log.Debugf("newStateRoot outputs: %v\n", hex.EncodeToString(f[:])) - log.Debugf("proof outputs: %v\n", common.HexToHash(result)) - - return &VerifyBatchesTrustedAggregatorParams{ - pendingStateNum: inputsMap["pendingStateNum"].(uint64), - initNumBatch: inputsMap["initNumBatch"].(uint64), - finalNewBatch: inputsMap["finalNewBatch"].(uint64), - newLocalExitRoot: hex.EncodeToString(e[:]), - newStateRoot: hex.EncodeToString(f[:]), - proof: common.HexToHash(result).String(), - }, err -} diff --git a/internal/handler/handler.go b/internal/handler/handler.go index 7e22698..8ac8706 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -11,14 +11,10 @@ func Run(ctx *svc.ServiceContext) { go SyncBlock(ctx) // sync events go SyncEvent(ctx) - // execute committer - go Committer(ctx) - // check status - go CheckStatus(ctx) - // check and inscribe - go Inscribe(ctx) - // check time out - go CheckStatusTimeOut(ctx) - // sync proposal - go SyncProposal(ctx) + // query blob and store in local + go QueryBlobOnChainAndStoreInLocal(ctx) + // commit and vote txs proposal + go GetBlobsAndCommitTxsProposal(ctx) + // commit state root to ar and btc + go GetStateRootAndCommitStateRootProposal(ctx) } diff --git a/internal/handler/inscribe.go b/internal/handler/inscribe.go deleted file mode 100644 index ba15f2f..0000000 --- a/internal/handler/inscribe.go +++ /dev/null @@ -1,84 +0,0 @@ -package handler - -import ( - "encoding/json" - "time" - - "github.com/b2network/b2committer/pkg/btcapi" - btcmempool "github.com/b2network/b2committer/pkg/btcapi/mempool" - - "github.com/b2network/b2committer/pkg/inscribe" - - "github.com/b2network/b2committer/pkg/log" - - "github.com/b2network/b2committer/internal/schema" - "github.com/b2network/b2committer/internal/svc" - "github.com/pkg/errors" -) - -// Inscribe check proposal statues. process pending proposal. -func Inscribe(ctx *svc.ServiceContext) { - time.Sleep(30 * time.Second) - for { - var dbProposal schema.Proposal - err := ctx.DB.Where("status=?", schema.PendingStatus).Order("end_batch_num asc").First(&dbProposal).Error - if err != nil { - log.Errorf("[Handler.Inscribe] Pending and timeout proposal err: %s\n", errors.WithStack(err).Error()) - time.Sleep(5 * time.Second) - continue - } - proposal, err := ctx.NodeClient.QueryProposalByID(dbProposal.ProposalID) - if err != nil { - log.Errorf("[CheckProposalPending] QueryProposalByID err: %s\n", errors.WithStack(err).Error()) - continue - } - if proposal.Status == schema.SucceedStatus { - dbProposal.Status = proposal.Status - dbProposal.Winner = proposal.Winner - dbProposal.BtcRevealTxHash = proposal.BitcoinTxHash - ctx.DB.Save(dbProposal) - } - if proposal.Status == schema.PendingStatus && - proposal.Winner == ctx.B2NodeConfig.Address && proposal.BitcoinTxHash == "" { - rs, err := inscribe.Inscribe(ctx.BTCConfig.PrivateKey, proposal.StateRootHash, proposal.ProofHash, ctx.BTCConfig.DestinationAddress, btcapi.ChainParams(ctx.BTCConfig.NetworkName)) - if err != nil { - log.Errorf("[Handler.Inscribe] Inscribe err: %s\n", errors.WithStack(err).Error()) - continue - } - str, err := json.Marshal(rs) - if err != nil { - log.Errorf("[Handler.Inscribe] Marshal result err: %s\n", errors.WithStack(err).Error()) - continue - } - log.Infof("[Handler.Inscribe] inscribe result: %s", str) - bitcoinTxHash := rs.RevealTxHashList[0].String() - - _, err = ctx.NodeClient.BitcoinTx(proposal.Id, proposal.Winner, bitcoinTxHash) - if err != nil { - log.Errorf("[Handler.Inscribe] BitcoinTx err: %s\n", errors.WithStack(err).Error()) - continue - } - dbProposal.BtcRevealTxHash = bitcoinTxHash - dbProposal.BtcCommitTxHash = rs.CommitTxHash.String() - - ctx.DB.Save(dbProposal) - } - if proposal.Status == schema.PendingStatus && proposal.BitcoinTxHash != "" && proposal.Winner != ctx.B2NodeConfig.Address { - // 拿到bitcoin 去btc network query一下 确认状态 对比大于6个高度后 确认后就提交提案 - btcAPIClient := btcmempool.NewClient(btcapi.ChainParams(ctx.BTCConfig.NetworkName)) - transaction, err := btcAPIClient.GetTransactionByID(proposal.BitcoinTxHash) - if err != nil { - log.Errorf("[Handler.Inscribe] GetTransactionByID err: %s\n", errors.WithStack(err).Error()) - continue - } - if transaction.Status.Confirmed && (ctx.LatestBTCBlockNumber-transaction.Status.BlockHeight) >= 6 { - _, err = ctx.NodeClient.BitcoinTx(proposal.Id, proposal.Proposer, proposal.BitcoinTxHash) - if err != nil { - log.Errorf("[Handler.Inscribe] BitcoinTx err: %s\n", errors.WithStack(err).Error()) - continue - } - } - } - time.Sleep(3 * time.Second) - } -} diff --git a/internal/handler/op_committer_stateroot.go b/internal/handler/op_committer_stateroot.go new file mode 100644 index 0000000..5be9d57 --- /dev/null +++ b/internal/handler/op_committer_stateroot.go @@ -0,0 +1,151 @@ +package handler + +import ( + "encoding/hex" + "encoding/json" + "fmt" + "time" + + "github.com/b2network/b2committer/internal/schema" + "github.com/b2network/b2committer/internal/svc" + "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/contract/op" + "github.com/b2network/b2committer/pkg/log" + "github.com/b2network/b2committer/pkg/merkle" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/pkg/errors" + mt "github.com/txaty/go-merkletree" +) + +func GetStateRootAndCommitStateRootProposal(ctx *svc.ServiceContext) { + // check address + res, err := ctx.OpCommitterClient.Proposer.IsProposer(&bind.CallOpts{}, common.HexToAddress(ctx.B2NodeConfig.Address)) + if err != nil || !res { + panic(err) + } + for { + lastProposal, err := ctx.OpCommitterClient.ProposalManager.GetLastStateRootProposal(&bind.CallOpts{}) + if err != nil { + log.Errorf("[Handler.GetStateRootAndCommitStateRootProposal] Try to get last state root proposal from contract: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + latestProposalID := lastProposal.ProposalID + if lastProposal.Status == schema.ProposalSucceedStatus || lastProposal.ProposalID == 0 { + tx, newStateRootProposal, err := SubmitNextStateRootProposal(ctx, lastProposal, latestProposalID) + if err != nil { + log.Errorf("[Handler.GetStateRootAndCommitStateRootProposal] Try to submit proposal: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + log.Infof("[Handler.GetStateRootAndCommitStateRootProposal] submit new proposal success. proposalID: %s, transaction: %s", newStateRootProposal.ProposalID, tx.Hash()) + } + + if lastProposal.Status == schema.ProposalVotingStatus || lastProposal.Status == schema.ProposalTimeoutStatus { + err = ProcessStateRootVotingAndTimeoutState(ctx, lastProposal) + if err != nil { + log.Errorf("[Handler.GetStateRootAndCommitStateRootProposal][ProcessStateRootVotingAndTimeoutState] Try to process voting and timeout state: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + } + + if lastProposal.Status == schema.ProposalPendingStatus { + err = ProcessStateRootPendingStates(ctx, lastProposal) + if err != nil { + log.Errorf("[Handler.GetStateRootAndCommitStateRootProposal][ProcessStateRootPendingStates] Try to process pending state: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + } + + if lastProposal.Status == schema.ProposalCommitting { + err = ProcessStateRootCommittingStates(ctx, lastProposal) + if err != nil { + log.Errorf("[Handler.GetStateRootAndCommitStateRootProposal][ProcessStateRootCommittingStates] Try to process committing state: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + } + time.Sleep(15 * time.Second) + } +} + +func constructNextStateRootProposal(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal) (*types.StateRootProposal, error) { + var event schema.SyncEvent + var latestEndTimestamp uint64 + var latestStartTimestamp uint64 + if lastProposal.EndL1Timestamp == 0 { + // contract has no one proposal + err := ctx.DB.Where("event_name=?", "OutputProposed").Order("block_number").First(&event).Error + if err != nil { + return nil, fmt.Errorf("find original blob block error: %s", errors.WithStack(err)) + } + latestStartTimestamp = uint64(event.BlockTime) + latestEndTimestamp = uint64(event.BlockTime) + ctx.Config.OutputIntervalTime + } else { + latestStartTimestamp = lastProposal.EndL1Timestamp + 1 // plus 1 to exclude the last proposal end blob block + latestEndTimestamp = lastProposal.EndL1Timestamp + ctx.Config.BlobIntervalTime + } + tsp, err := constructStateRootProposal(ctx, lastProposal.ProposalID+1, latestStartTimestamp, latestEndTimestamp) + if err != nil { + return nil, fmt.Errorf("construct txs root proposal failed, err: %s", errors.WithStack(err)) + } + return tsp, nil +} + +func constructStateRootProposal(ctx *svc.ServiceContext, proposalID uint64, startTimestamp uint64, endTimestamp uint64) (*types.StateRootProposal, error) { + var event schema.SyncEvent + var events []schema.SyncEvent + for { + event = schema.SyncEvent{} + err := ctx.DB.Where("block_time > ?", endTimestamp).Order("block_number").First(&event).Error + if err != nil { + return nil, fmt.Errorf("sync blob blocks is not completed: %s", errors.WithStack(err)) + } + err = ctx.DB.Where("block_time between ? and ?", startTimestamp, endTimestamp).Order("block_number").Find(&events).Error + if err != nil { + return nil, fmt.Errorf("collecting the blob blocks of proposal is failed. err : %s", errors.WithStack(err)) + } + if len(events) == 0 { + endTimestamp += ctx.Config.OutputIntervalTime + } else { + break + } + } + outputRoots, err := GetOutputRootMerkleRoot(events) + if err != nil { + return nil, fmt.Errorf("getting the output merkle root is failed. err : %s", errors.WithStack(err)) + } + stateRootProposal, err := types.NewStateRootProposal(proposalID, outputRoots, events) + if err != nil { + return nil, fmt.Errorf("constructing the state root proposal is failed. err : %s", errors.WithStack(err)) + } + return stateRootProposal, nil +} + +func GetOutputRootMerkleRoot(events []schema.SyncEvent) (string, error) { + if len(events) == 0 { + return "", fmt.Errorf("no output root") + } + var data types.OutputEvent + if len(events) == 1 { + err := json.Unmarshal([]byte(events[0].Data), &data) + if err != nil { + return "", fmt.Errorf("[GetOutputRootMerkleRoot] unmarshal output event failed %s", err.Error()) + } + return data.OutputRoot, nil + } + newOutputRoots := make([]string, 0) + for _, event := range events { + err := json.Unmarshal([]byte(event.Data), &data) + if err != nil { + return "", fmt.Errorf("[GetOutputRootMerkleRoot] unmarshal output event failed %s", err.Error()) + } + newOutputRoots = append(newOutputRoots, data.OutputRoot) + } + outputs := merkle.GenerateBlocks(newOutputRoots) + outputsTree, _ := mt.New(nil, outputs) + return hex.EncodeToString(outputsTree.Root), nil +} diff --git a/internal/handler/op_committer_txs.go b/internal/handler/op_committer_txs.go new file mode 100644 index 0000000..7e06d16 --- /dev/null +++ b/internal/handler/op_committer_txs.go @@ -0,0 +1,143 @@ +package handler + +import ( + "crypto/sha256" + "encoding/hex" + "fmt" + "time" + + "github.com/b2network/b2committer/internal/schema" + "github.com/b2network/b2committer/internal/svc" + "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/contract/op" + "github.com/b2network/b2committer/pkg/log" + "github.com/b2network/b2committer/pkg/merkle" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/pkg/errors" + mt "github.com/txaty/go-merkletree" +) + +func GetBlobsAndCommitTxsProposal(ctx *svc.ServiceContext) { + // check address + res, err := ctx.OpCommitterClient.Proposer.IsProposer(&bind.CallOpts{}, common.HexToAddress(ctx.B2NodeConfig.Address)) + if err != nil || !res { + panic(err) + } + for { + lastProposal, err := ctx.OpCommitterClient.ProposalManager.GetLastTxsRootProposal(&bind.CallOpts{}) + if err != nil { + log.Errorf("[Handler.GetBlobsAndCommitProposal] Try to get last proposal from contract: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + latestProposalID := lastProposal.ProposalID + if lastProposal.Status == schema.ProposalSucceedStatus || lastProposal.ProposalID == 0 { + tx, newProposal, err := SubmitNextTxsProposal(ctx, lastProposal, latestProposalID) + if err != nil { + log.Errorf("[Handler.GetBlobsAndCommitProposal][SubmitNextTxsProposal] Try to submit proposal: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + log.Infof("[Handler.GetBlobsAndCommitProposal][SubmitNextTxsProposal] submit new proposal success. proposalID: %s, transaction: %s", newProposal.ProposalID, tx.Hash()) + } + if lastProposal.Status == schema.ProposalVotingStatus || lastProposal.Status == schema.ProposalTimeoutStatus { + err = ProcessTxsVotingAndTimeoutState(ctx, lastProposal) + if err != nil { + log.Errorf("[Handler.GetBlobsAndCommitProposal][ProcessVotingAndTimeoutState] Try to process voting and timeout state: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + } + if lastProposal.Status == schema.ProposalPendingStatus { + err = ProcessTxsPendingStates(ctx, lastProposal) + if err != nil { + log.Errorf("[Handler.GetBlobsAndCommitProposal][ProcessPendingStates] Try to process pending state: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + log.Infof("[Handler.GetBlobsAndCommitProposal] success verify and vote submit txs from ds: %s, dsHash: %s", lastProposal.ProposalID, lastProposal.DsTxHash) + } + time.Sleep(15 * time.Second) + } +} + +func GetBlobsByBlockListFromDB(ctx *svc.ServiceContext, blockList []uint64) ([]schema.BlobInfo, error) { + where := map[string]interface{}{} + where["block_number"] = blockList + + var blobs []schema.BlobInfo + err := ctx.DB.Where(where).Find(&blobs).Error + if err != nil { + return nil, fmt.Errorf("[GetBlobsByBlockListFromDB] Try to get blobs from db: %s", err.Error()) + } + return blobs, nil +} + +func constructTxsRootProposal(ctx *svc.ServiceContext, proposalID uint64, startTimestamp uint64, endTimestamp uint64) (*types.TxsRootProposal, error) { + var blob schema.BlobInfo + + var blobs []schema.BlobInfo + for { + blob = schema.BlobInfo{} + err := ctx.DB.Where("block_time > ?", endTimestamp).Order("block_number").First(&blob).Error + if err != nil { + return nil, fmt.Errorf("sync blob blocks is not completed: %s", errors.WithStack(err)) + } + err = ctx.DB.Where("block_time between ? and ?", startTimestamp, endTimestamp).Order("block_number").Find(&blobs).Error + if err != nil { + return nil, fmt.Errorf("collecting the blob blocks of proposal is failed. err : %s", errors.WithStack(err)) + } + if len(blobs) == 0 { + endTimestamp += ctx.Config.BlobIntervalTime + } else { + break + } + } + blobMerkleRoot, err := GetBlobsMerkleRoot(blobs) + if err != nil { + return nil, fmt.Errorf("getting the blob merkle root is failed. err : %s", errors.WithStack(err)) + } + return types.NewTxsRootProposal(proposalID, blobMerkleRoot, blobs), nil +} + +func constructNextProposal(ctx *svc.ServiceContext, lastProposal op.OpProposalTxsRootProposal) (*types.TxsRootProposal, error) { + var blob schema.BlobInfo + var latestEndTimestamp uint64 + var latestStartTimestamp uint64 + if lastProposal.EndBlockNumber == 0 { + // contract has no one proposal + err := ctx.DB.Order("block_number").First(&blob).Error + if err != nil { + return nil, fmt.Errorf("find original blob block error: %s", errors.WithStack(err)) + } + latestStartTimestamp = blob.BlockTime + latestEndTimestamp = blob.BlockTime + ctx.Config.BlobIntervalTime + } else { + latestStartTimestamp = lastProposal.EndTimestamp + 1 // plus 1 to exclude the last proposal end blob block + latestEndTimestamp = lastProposal.EndTimestamp + ctx.Config.BlobIntervalTime + } + tsp, err := constructTxsRootProposal(ctx, lastProposal.ProposalID+1, latestStartTimestamp, latestEndTimestamp) + if err != nil { + return nil, fmt.Errorf("construct txs root proposal failed, err: %s", errors.WithStack(err)) + } + return tsp, nil +} + +func GetBlobsMerkleRoot(blobs []schema.BlobInfo) (string, error) { + if len(blobs) == 0 { + return "", fmt.Errorf("no blob data") + } + if len(blobs) == 1 { + hash := sha256.Sum256([]byte(blobs[0].Blob)) + return hex.EncodeToString(hash[:]), nil + } + newBlobRoots := make([]string, 0) + for _, blob := range blobs { + blobHash := sha256.Sum256([]byte(blob.Blob)) + newBlobRoots = append(newBlobRoots, hex.EncodeToString(blobHash[:])) + } + blobBlocks := merkle.GenerateBlocks(newBlobRoots) + blobTree, _ := mt.New(nil, blobBlocks) + return hex.EncodeToString(blobTree.Root), nil +} diff --git a/internal/handler/stateroot_committer.go b/internal/handler/stateroot_committer.go new file mode 100644 index 0000000..92f7096 --- /dev/null +++ b/internal/handler/stateroot_committer.go @@ -0,0 +1,345 @@ +package handler + +import ( + "context" + "encoding/json" + "fmt" + "time" + + "github.com/b2network/b2committer/internal/schema" + "github.com/b2network/b2committer/internal/svc" + "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/btcapi" + "github.com/b2network/b2committer/pkg/contract/op" + "github.com/b2network/b2committer/pkg/inscribe" + "github.com/b2network/b2committer/pkg/log" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + ethTypes "github.com/ethereum/go-ethereum/core/types" + "github.com/pkg/errors" +) + +func SubmitNextStateRootProposal(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal, latestProposalID uint64) (*ethTypes.Transaction, *types.StateRootProposal, error) { + log.Infof("[SubmitNextStateRootProposal] this proposal has been successful or just beginning : %d", latestProposalID) + // submit new proposal + newStateRootProposal, err := constructNextStateRootProposal(ctx, lastProposal) + if err != nil { + return nil, nil, fmt.Errorf("[SubmitNextStateRootProposal] Try to construct new state root proposal: %s", err.Error()) + } + tx, err := ctx.OpCommitterClient.SubmitStateRoot(newStateRootProposal) + if err != nil { + return nil, nil, fmt.Errorf("[SubmitNextStateRootProposal]Try to submit new state root proposal: %s, proposalID: %d", err.Error(), newStateRootProposal.ProposalID) + } + voteAddress := ctx.B2NodeConfig.Address + err = confirmSubmitStateRootProposal(ctx, newStateRootProposal.ProposalID, voteAddress) + if err != nil { + return nil, nil, fmt.Errorf("[ProcessStateRootVotingAndTimeoutState] Try to confirm SubmitStateRoot failed: %s", err.Error()) + } + log.Infof("[SubmitNextStateRootProposal] submit new state root proposal: %s", newStateRootProposal.ProposalID) + return tx, newStateRootProposal, nil +} + +func ProcessStateRootVotingAndTimeoutState(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal) error { + voteAddress := ctx.B2NodeConfig.Address + // check address voted or not + phase, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnStateRootProposalPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + return fmt.Errorf("[ProcessStateRootVotingAndTimeoutState] Try to find address voted or not: %s", err) + } + if phase { + return fmt.Errorf("[ProcessStateRootVotingAndTimeoutState] address already voted in voting status: %s", voteAddress) + } + var voteProposalStartL1Timestamp uint64 + var voteProposalEndL1Timestamp uint64 + if lastProposal.ProposalID == 1 { + voteProposalStartL1Timestamp = lastProposal.StartL1Timestamp + voteProposalEndL1Timestamp = voteProposalStartL1Timestamp + ctx.Config.OutputIntervalTime + } else { + beforeLastProposal, err := ctx.OpCommitterClient.ProposalManager.GetStateRootProposal(&bind.CallOpts{}, lastProposal.ProposalID-1) + if err != nil { + return fmt.Errorf("[ProcessStateRootVotingAndTimeoutState]Try to get before last proposal: %s", err.Error()) + } + voteProposalStartL1Timestamp = beforeLastProposal.EndL1Timestamp + 1 + voteProposalEndL1Timestamp = voteProposalStartL1Timestamp + ctx.Config.OutputIntervalTime + } + tsp, err := constructStateRootProposal(ctx, lastProposal.ProposalID, voteProposalStartL1Timestamp, voteProposalEndL1Timestamp) + if err != nil { + return fmt.Errorf("[ProcessStateRootVotingAndTimeoutState] Try to construct new proposal to vote: %s", err.Error()) + } + _, err = ctx.OpCommitterClient.SubmitStateRoot(tsp) + if err != nil { + return fmt.Errorf("[ProcessStateRootVotingAndTimeoutState] Try to submit new proposal to vote: %s", err.Error()) + } + err = confirmSubmitStateRootProposal(ctx, tsp.ProposalID, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootVotingAndTimeoutState] Try to confirm SubmitStateRoot failed: %s", err.Error()) + } + log.Infof("[ProcessStateRootVotingAndTimeoutState] vote txs proposal %s, %s ", tsp.ProposalID, voteAddress) + return nil +} + +func ProcessStateRootPendingStates(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal) error { + voteAddress := ctx.B2NodeConfig.Address + phase, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnStateRootDSTxPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingStates][IsVotedOntxsRootDSTxPhase] is failed : %s", err) + } + if phase { + return fmt.Errorf("[ProcessStateRootPendingStates][IsVotedOntxsRootDSTxPhase] address already voted in pending status: %s", voteAddress) + } + if lastProposal.Winner == common.HexToAddress(ctx.B2NodeConfig.Address) { + err = ProcessStateRootPendingWinner(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingStates][ProcessStateRootPendingWinner] Try to process pending winner: %s", err.Error()) + } + } else { + err = ProcessStateRootPendingVoter(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingStates][ProcessStateRootPendingVoter] Try to process pending voter: %s", err.Error()) + } + } + return nil +} + +func ProcessStateRootPendingWinner(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal, voteAddress string) error { + var events []schema.SyncEvent + err := ctx.DB.Where("block_time between ? and ?", lastProposal.StartL1Timestamp, lastProposal.EndL1Timestamp).Order("block_number").Find(&events).Error + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingWinner]collecting the state root blocks of proposal is failed. err : %s", errors.WithStack(err)) + } + stateRoots, err := types.NewDsStateRootProposal(ctx.B2NodeConfig.ChainID, lastProposal.ProposalID, lastProposal.OutputRoot, events) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingWinner] constructing state root for ds is failed. err : %s", errors.WithStack(err)) + } + dsJSON, err := stateRoots.ToJSONBytes() + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingWinner] Try to marshal ds proposal: %s", err.Error()) + } + + dsTxID, err := ctx.DecentralizedStore.StoreDetailsOnChain(dsJSON, ctx.B2NodeConfig.ChainID, lastProposal.ProposalID) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingWinner] Try to store ds proposal: %s", err.Error()) + } + err = confirmDSTransaction(ctx, dsTxID) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingWinner] Try to confirm ds tx: %s", err.Error()) + } + log.Infof("[ProcessStateRootPendingWinner] proposal %s, success data to ds %s", lastProposal.ProposalID, dsTxID) + _, err = ctx.OpCommitterClient.DsHash(lastProposal.ProposalID, schema.ProposalTypeStateRoot, schema.DsTypeArWeave, dsTxID) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingWinner] Try to send ds proposal by winner: %s", err.Error()) + } + err = confirmStateRootDSTxPhase(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingWinner][confirmStateRootDSTxPhase] Try to confirm ds tx phase: %s", err.Error()) + } + log.Infof("[ProcessStateRootPendingWinner] success submit txs to ds: %s, dsHash: %s", lastProposal.ProposalID, dsTxID) + return nil +} + +func ProcessStateRootPendingVoter(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal, voteAddress string) error { + outputs, err := ctx.DecentralizedStore.QueryDetailsByTxID(lastProposal.DsTxHash) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingVoter] Try to get outputs from ds: %s", err.Error()) + } + var dsProposal types.DsStateRootProposal + err = json.Unmarshal(outputs, &dsProposal) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingVoter] Try to unmarshal ds proposal: %s", err.Error()) + } + + events, err := types.ConvertOutputsToEventData(dsProposal.OutputEvents) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingVoter] Try to convert outputs to event data: %s", err.Error()) + } + verifyOutputRoots, err := GetOutputRootMerkleRoot(events) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingVoter] Try to get outputs merkle root: %s", err.Error()) + } + + if verifyOutputRoots != lastProposal.OutputRoot { + return fmt.Errorf("[ProcessStateRootPendingVoter] Try to verify output from ds: %s", err.Error()) + } + _, err = ctx.OpCommitterClient.DsHash(lastProposal.ProposalID, schema.ProposalTypeStateRoot, schema.DsTypeArWeave, lastProposal.DsTxHash) + if err != nil { + return fmt.Errorf("[Handler.GetStateRootAndCommitStateRootProposal] Try to send ds proposal by voter: %s", err.Error()) + } + err = confirmStateRootDSTxPhase(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingVoter][confirmDSTxPhase] Try to confirm ds tx phase: %s", err.Error()) + } + log.Infof("[ProcessStateRootPendingVoter] success verify and vote submit output from ds: %s, dsHash: %s", lastProposal.ProposalID, lastProposal.DsTxHash) + return nil +} + +func ProcessStateRootCommittingStates(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal) error { + voteAddress := ctx.B2NodeConfig.Address + isVotedBtcTx, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnSubmitBitcoinTxPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingStates][IsVotedOnSubmitBitcoinTxPhase] is failed : %s", err) + } + if isVotedBtcTx { + return fmt.Errorf("[ProcessStateRootCommittingStates] address already voted btc tx in committing status: %s, proposalID: %d", voteAddress, lastProposal.ProposalID) + } + if lastProposal.Winner == common.HexToAddress(ctx.B2NodeConfig.Address) { + err = ProcessStateRootCommittingWinner(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingStates][ProcessStateRootPendingWinner] Try to process pending winner: %s", err.Error()) + } + } else { + err = ProcessStateRootCommittingVoter(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootPendingStates][ProcessStateRootPendingVoter] Try to process pending voter: %s", err.Error()) + } + } + return nil +} + +func ProcessStateRootCommittingWinner(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal, voteAddress string) error { + stateRoot := &types.StateRootProposal{ + ProposalID: lastProposal.ProposalID, + OutputRoot: lastProposal.OutputRoot, + StartL1Timestamp: lastProposal.StartL1Timestamp, + EndL1Timestamp: lastProposal.EndL1Timestamp, + StartL2BlockNumber: lastProposal.StartL2BlockNumber, + EndL2BlockNumber: lastProposal.EndL2BlockNumber, + OutputStartIndex: lastProposal.OutputStartIndex, + OutputEndIndex: lastProposal.OutputEndIndex, + } + btcStateRoot := &types.BtcStateRootProposal{ + Proposal: stateRoot, + ChainID: ctx.B2NodeConfig.ChainID, + } + content, err := json.Marshal(btcStateRoot) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingWinner] Pending btcHash Try to marshal state root proposal: %s", err.Error()) + } + rs, err := inscribe.Inscribe(ctx.BTCConfig.PrivateKey, content, + ctx.BTCConfig.DestinationAddress, btcapi.ChainParams(ctx.BTCConfig.NetworkName)) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingWinner] Inscribe state root err: %s", errors.WithStack(err).Error()) + } + str, err := json.Marshal(rs) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingWinner] Marshal result err: %s", errors.WithStack(err).Error()) + } + log.Infof("[ProcessStateRootCommittingWinner] inscribe result: %s", str) + bitcoinTxHash := rs.RevealTxHashList[0].String() + _, err = ctx.OpCommitterClient.BitcoinTxHash(lastProposal.ProposalID, bitcoinTxHash) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingWinner] Try to send bitcoin tx hash: %s, winner:%s", err.Error(), lastProposal.Winner.String()) + } + err = confirmBitcoinTxHashPhase(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingWinner][confirmBitcoinTxHashPhase] Try to confirm btc tx hash phase: %s", err.Error()) + } + log.Infof("[Handler.GetStateRootAndCommitStateRootProposal] success submit content to btc network. proposalID: %s, btcTxHash: %s", lastProposal.ProposalID, bitcoinTxHash) + return nil +} + +func ProcessStateRootCommittingVoter(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal, voteAddress string) error { + outs, err := ctx.UnisatHTTPClient.QueryAPIBTCTxOutputsByTxID(context.Background(), lastProposal.BitcoinTxHash) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingVoter] Try to get outputs from btc: %s", err.Error()) + } + if len(outs.Data) == 0 { + return fmt.Errorf("[ProcessStateRootCommittingVoter] Try to get outputs from btc: no data") + } + if len(outs.Data[0].Inscriptions) == 0 { + return fmt.Errorf("[ProcessStateRootCommittingVoter] Try to get outputs from btc: no inscription") + } + blockHeight := outs.Data[0].Height + 6 + if uint64(ctx.LatestBTCBlockNumber) < blockHeight { + return fmt.Errorf("[ProcessStateRootCommittingVoter] Try to get outputs from btc: block height is too low") + } + + insID := outs.Data[0].Inscriptions[0].InscriptionID + btcStateRootProposal, err := ctx.UnisatHTTPClient.QueryStateRootProposalByInsID(context.Background(), insID) + if lastProposal.ProposalID != btcStateRootProposal.Proposal.ProposalID || + btcStateRootProposal.Proposal.OutputRoot != lastProposal.OutputRoot || + btcStateRootProposal.Proposal.StartL1Timestamp != lastProposal.StartL1Timestamp || + btcStateRootProposal.Proposal.EndL1Timestamp != lastProposal.EndL1Timestamp || + btcStateRootProposal.Proposal.StartL2BlockNumber != lastProposal.StartL2BlockNumber || + btcStateRootProposal.Proposal.EndL2BlockNumber != lastProposal.EndL2BlockNumber || + btcStateRootProposal.Proposal.OutputStartIndex != lastProposal.OutputStartIndex || + btcStateRootProposal.Proposal.OutputEndIndex != lastProposal.OutputEndIndex || + btcStateRootProposal.ChainID != ctx.B2NodeConfig.ChainID { + return fmt.Errorf("[ProcessStateRootCommittingVoter] Try to verify btc state root proposal: %s", err.Error()) + } + + _, err = ctx.OpCommitterClient.BitcoinTxHash(lastProposal.ProposalID, lastProposal.BitcoinTxHash) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingVoter] Try to vote bitcoin tx hash: %s", err.Error()) + } + err = confirmBitcoinTxHashPhase(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessStateRootCommittingVoter][confirmBitcoinTxHashPhase] Try to confirm btc tx hash phase: %s", err.Error()) + } + log.Infof("[ProcessStateRootCommittingVoter] success verify and vote submit output from btc: %s, btcTxHash: %s", lastProposal.ProposalID, lastProposal.BitcoinTxHash) + return nil +} + +func confirmBitcoinTxHashPhase(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal, voteAddress string) error { + var times uint64 + for { + if times > 60 { + return fmt.Errorf("[confirmBitcoinTxHashPhase] confirmBitcoinTxHashPhase fail, proposalID: %d, voteAddress: %s", lastProposal.ProposalID, voteAddress) + } + confirmBTCTx, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnSubmitBitcoinTxPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + fmt.Printf("[confirmBitcoinTxHashPhase] is failed : %s\n, proposalID: %d\n, voteAddress: %s\n\n", err, lastProposal.ProposalID, voteAddress) + time.Sleep(60 * time.Second) + times++ + continue + } + if confirmBTCTx { + log.Infof("[confirmBitcoinTxHashPhase] confirm bitcoin tx hash has been processed : %s, proposal: %s", voteAddress, lastProposal.ProposalID) + break + } + times++ + } + return nil +} + +func confirmStateRootDSTxPhase(ctx *svc.ServiceContext, lastProposal op.OpProposalStateRootProposal, voteAddress string) error { + var times uint64 + for { + if times > 60 { + return fmt.Errorf("[confirmDSTxPhase] confirmDSTxPhase fail, proposalID: %d, voteAddress: %s", lastProposal.ProposalID, voteAddress) + } + res, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnStateRootDSTxPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + fmt.Printf("[confirmStateRootDSTxPhase] is failed : %s\n, proposalID: %d\n, voteAddress: %s\n\n", err, lastProposal.ProposalID, voteAddress) + time.Sleep(60 * time.Second) + times++ + continue + } + if res { + log.Infof("[confirmStateRootDSTxPhase] confirm decentralized store has been processed : %s, proposal: %s", voteAddress, lastProposal.ProposalID) + break + } + times++ + } + return nil +} + +func confirmSubmitStateRootProposal(ctx *svc.ServiceContext, proposalID uint64, voteAddress string) error { + var times uint64 + for { + if times > 60 { + return fmt.Errorf("[confirmSubmitStateRootProposal] confirm SubmitStateRoot fail") + } + phase, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnStateRootProposalPhase(&bind.CallOpts{}, proposalID, common.HexToAddress(voteAddress)) + if err != nil { + fmt.Printf("[confirmSubmitStateRootProposal] Try to check submitTxProposal status fail: %s\n", err) + time.Sleep(60 * time.Second) + continue + } + if phase { + log.Infof("[confirmSubmitStateRootProposal] proposalID: %s voteAddress: %s, IsVotedOnTxsRootProposalPhase", proposalID, voteAddress) + break + } + times++ + } + return nil +} diff --git a/internal/handler/syncBlock.go b/internal/handler/syncBlock.go index a549122..fb8afa7 100644 --- a/internal/handler/syncBlock.go +++ b/internal/handler/syncBlock.go @@ -19,7 +19,6 @@ func SyncBlock(ctx *svc.ServiceContext) { time.Sleep(10 * time.Second) var syncedBlock schema.SyncBlock err := ctx.DB.Where("status = ? or status = ? ", schema.BlockValid, schema.BlockPending).Order("block_number desc").First(&syncedBlock).Error - if err != nil && err != gorm.ErrRecordNotFound { panic(err) } @@ -53,9 +52,6 @@ func SyncBlock(ctx *svc.ServiceContext) { } block := rpc.ParseJSONBlock(string(blockJSON)) log.Infof("[Handler.SyncBlock] Syncing block number: %d, hash: %v, parent hash: %v \n", block.Number(), block.Hash(), block.ParentHash()) - // 回滚判断 - fmt.Println("block.ParentHash", block.ParentHash()) - fmt.Println("SyncedBlockHash", ctx.SyncedBlockHash.String()) if common.HexToHash(block.ParentHash()) != ctx.SyncedBlockHash { log.Errorf("[Handler.SyncBlock] ParentHash of the block being synchronized is inconsistent: %s \n", ctx.SyncedBlockHash) diff --git a/internal/handler/syncEvent.go b/internal/handler/syncEvent.go index d4567d4..63836d7 100644 --- a/internal/handler/syncEvent.go +++ b/internal/handler/syncEvent.go @@ -57,8 +57,8 @@ func SyncEvent(ctx *svc.ServiceContext) { func HandlePendingBlock(ctx *svc.ServiceContext, block schema.SyncBlock) error { log.Infof("[Handler.SyncEvent.PendingBlock]Start: %d, %s \n", block.BlockNumber, block.BlockHash) - // log.Infof("[Handler.SyncEvent.PendingBlock]GetContracts: %v\n", ctx.GetContracts()) - // log.Infof("[Handler.SyncEvent.PendingBlock]GetEvents: %v\n", blockchain.GetEvents()) + log.Infof("[Handler.SyncEvent.PendingBlock]GetContracts: %v\n", blockchain.GetContracts()) + log.Infof("[Handler.SyncEvent.PendingBlock]GetEvents: %v\n", blockchain.GetEvents()) events, err := LogFilter(ctx, block, blockchain.GetContracts(), [][]common.Hash{blockchain.GetEvents()}) log.Infof("[Handler.SyncEvent.PendingBlock] block %d, events number is %d:", block.BlockNumber, len(events)) if err != nil { diff --git a/internal/handler/syncEvent_test.go b/internal/handler/syncEvent_test.go new file mode 100644 index 0000000..408373e --- /dev/null +++ b/internal/handler/syncEvent_test.go @@ -0,0 +1,7 @@ +package handler + +import "testing" + +func TestHanding(t *testing.T) { + +} diff --git a/internal/handler/syncProposal.go b/internal/handler/syncProposal.go deleted file mode 100644 index 992b61a..0000000 --- a/internal/handler/syncProposal.go +++ /dev/null @@ -1,97 +0,0 @@ -package handler - -import ( - "time" - - "github.com/b2network/b2committer/internal/schema" - "github.com/b2network/b2committer/internal/svc" - "github.com/b2network/b2committer/pkg/log" - "github.com/pkg/errors" - "gorm.io/gorm" -) - -// SyncProposal sync proposal and process voting status -func SyncProposal(ctx *svc.ServiceContext) { - time.Sleep(10 * time.Second) - proposalID := ctx.Config.InitProposalID - for { - lastProposalID, _, err := ctx.NodeClient.QueryLastProposalID() - if err != nil { - log.Errorf("[Handler.Committer][QueryLastProposalID] error info: %s", errors.WithStack(err).Error()) - time.Sleep(3 * time.Second) - continue - } - if lastProposalID < proposalID { - log.Infof("[Handler.SyncProposal] Current proposalId is latest") - time.Sleep(30 * time.Second) - continue - } - - proposal, err := ctx.NodeClient.QueryProposalByID(proposalID) - if err != nil { - log.Errorf("[Handler.SyncProposal] proposal QueryProposalByID error info:", errors.WithStack(err)) - time.Sleep(3 * time.Second) - continue - } - if proposal == nil { - log.Infof("[Handler.SyncProposal] proposal is nil", proposalID) - proposalID++ - continue - } - var dbProposal schema.Proposal - err = ctx.DB.Where("proposal_id = ?", proposalID).Order("proposal_id desc").First(&dbProposal).Error - if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { - log.Errorf("[Handler.SyncProposal] db query error info:", errors.WithStack(err)) - time.Sleep(3 * time.Second) - continue - } - if dbProposal.ProposalID != 0 { - log.Infof("[Handler.SyncProposal] already voted :", ctx.B2NodeConfig.Address) - proposalID++ - continue - } - - if proposal.Status == schema.VotingStatus { - // voting - verifyBatchInfo, err := GetVerifyBatchInfoByLastBatchNum(ctx, proposal.StartIndex) - if err != nil { - log.Errorf("[Handler.SyncProposal] GetVerifyBatchInfoByLastBatchNum error info:", errors.WithStack(err)) - time.Sleep(3 * time.Second) - continue - } - - _, err = ctx.NodeClient.SubmitProof(proposal.Id, ctx.B2NodeConfig.Address, verifyBatchInfo.proofRootHash, verifyBatchInfo.stateRootHash, - verifyBatchInfo.startBatchNum, verifyBatchInfo.endBatchNum) - if err != nil { - log.Errorf("[Handler.SyncProposal] vote proposal error info", errors.WithStack(err)) - time.Sleep(3 * time.Second) - continue - } - - dbProposal := &schema.Proposal{ - Base: schema.Base{ - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - }, - EndBatchNum: verifyBatchInfo.endBatchNum, - ProposalID: proposal.Id, - Proposer: proposal.Proposer, - Status: schema.VotingStatus, - StateRootHash: verifyBatchInfo.stateRootHash, - ProofRootHash: verifyBatchInfo.proofRootHash, - StartBatchNum: verifyBatchInfo.startBatchNum, - } - - // store db - err = ctx.DB.Save(dbProposal).Error - if err != nil { - log.Errorf("[Handler.SyncProposal] vote proposal error info", errors.WithStack(err)) - time.Sleep(3 * time.Second) - continue - } - proposalID++ - continue - } - time.Sleep(10 * time.Second) - } -} diff --git a/internal/handler/sync_blob.go b/internal/handler/sync_blob.go new file mode 100644 index 0000000..11c4240 --- /dev/null +++ b/internal/handler/sync_blob.go @@ -0,0 +1,120 @@ +package handler + +import ( + "context" + "math/big" + "time" + + "github.com/b2network/b2committer/internal/schema" + "github.com/b2network/b2committer/internal/svc" + "github.com/b2network/b2committer/pkg/errcode" + "github.com/b2network/b2committer/pkg/log" + "github.com/ethereum/go-ethereum/common" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +func QueryBlobOnChainAndStoreInLocal(ctx *svc.ServiceContext) { + time.Sleep(10 * time.Second) + var dbBlob schema.BlobInfo + var count int64 + err := ctx.DB.Order("block_number desc").First(&dbBlob).Error + if err != nil && err != gorm.ErrRecordNotFound { + panic(err) + } + + switch err { + case gorm.ErrRecordNotFound: + ctx.SyncedBlobBlockNumber = ctx.Config.InitBlobBlockNumber + ctx.SyncedBlobBlockHash = common.HexToHash(ctx.Config.InitBlobBlockHash) + default: + ctx.SyncedBlobBlockNumber = dbBlob.BlockNumber + ctx.SyncedBlobBlockHash = common.HexToHash(dbBlob.BlockHashHex) + } + + log.Infof("[Handler.QueryBlobOnChainAndStoreInLocal]SyncedBlobBlockNumber: %d", ctx.SyncedBlobBlockNumber) + log.Infof("[Handler.QueryBlobOnChainAndStoreInLocal]SyncedBlobBlockHash:%s", ctx.SyncedBlobBlockHash.String()) + + for { + syncingBlobBlockNumber := ctx.SyncedBlobBlockNumber + 1 + log.Infof("[Handler.QueryBlobOnChainAndStoreInLocal] Try to sync block number: %d\n", syncingBlobBlockNumber) + + if syncingBlobBlockNumber > ctx.LatestBlockNumber { + time.Sleep(3 * time.Second) + continue + } + + blockOnChain, err := ctx.RPC.BlockByNumber(context.Background(), big.NewInt(syncingBlobBlockNumber)) + if err != nil { + log.Errorf("[Handler.QueryBlobOnChainAndStoreInLocal] Get block by number error: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + if blockOnChain.ParentHash() != ctx.SyncedBlobBlockHash { + log.Errorf("[Handler.QueryBlobOnChainAndStoreInLocal] ParentHash of the block being synchronized is inconsistent: %s \n", ctx.SyncedBlobBlockHash) + continue + } + + blobInfos, err1 := ctx.BlobDataSource.GetBlobByBlockNum(context.Background(), blockOnChain.Number()) + if errors.Is(err1, errcode.ErrNoBlobFoundInBlock) { + log.Errorf("[Handler.QueryBlobOnChainAndStoreInLocal] %s", blockOnChain.Number(), err1.Error()) + ctx.SyncedBlobBlockNumber = blockOnChain.Number().Int64() + ctx.SyncedBlobBlockHash = blockOnChain.Hash() + continue + } + if err1 != nil { + log.Errorf("[Handler.QueryBlobOnChainAndStoreInLocal] Get blob by block number error: %s", err1.Error()) + continue + } + + err1 = ctx.DB.Where("block_number=? ", syncingBlobBlockNumber).Order("block_number desc").Find(&dbBlob).Count(&count).Error + if err1 != nil && err != gorm.ErrRecordNotFound { + log.Errorf("[Handler.QueryBlobOnChainAndStoreInLocal] DB Count error: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + + if count != 0 { + if int(count) == len(blobInfos) { + err := ctx.DB.Where("block_number=? ", syncingBlobBlockNumber).Order("block_number desc").First(&dbBlob).Error + if err != nil { + log.Errorf("[Handler.QueryBlobOnChainAndStoreInLocal] DB First error: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + ctx.SyncedBlobBlockNumber = blockOnChain.Number().Int64() + ctx.SyncedBlobBlockHash = blockOnChain.Hash() + } else { + err := ctx.DB.Delete(&dbBlob, "block_number=?", syncingBlobBlockNumber).Error + if err != nil { + log.Errorf("[Handler.QueryBlobOnChainAndStoreInLocal] DB Delete error: %s", err.Error()) + time.Sleep(3 * time.Second) + continue + } + } + continue + } + + for _, bif := range blobInfos { + blob := &schema.BlobInfo{ + BlockNumber: blockOnChain.Number().Int64(), + BlockHashHex: blockOnChain.Hash().String(), + BlockTime: blockOnChain.Time(), + BlobVersionedHash: bif.Hash.Hash.String(), + BlobHashesIndex: bif.Hash.Index, + BlobSideCarIndex: uint64(bif.BlobSidecar.Index), + BlobSideCarCommitment: bif.BlobSidecar.KZGCommitment.String(), + Blob: bif.BlobSidecar.Blob.String(), + } + + err := ctx.DB.Save(blob).Error + if err != nil { + log.Errorf("[Handler.SyncBlock] DB Create SyncBlock error: %s\n", errors.WithStack(err)) + time.Sleep(1 * time.Second) + continue + } + } + ctx.SyncedBlobBlockNumber = blockOnChain.Number().Int64() + ctx.SyncedBlobBlockHash = blockOnChain.Hash() + } +} diff --git a/internal/handler/txs_committer.go b/internal/handler/txs_committer.go new file mode 100644 index 0000000..069e3b4 --- /dev/null +++ b/internal/handler/txs_committer.go @@ -0,0 +1,232 @@ +package handler + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/b2network/b2committer/internal/schema" + "github.com/b2network/b2committer/internal/svc" + "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/contract/op" + "github.com/b2network/b2committer/pkg/log" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + ethTypes "github.com/ethereum/go-ethereum/core/types" + "github.com/pkg/errors" +) + +func SubmitNextTxsProposal(ctx *svc.ServiceContext, lastProposal op.OpProposalTxsRootProposal, latestProposalID uint64) (*ethTypes.Transaction, *types.TxsRootProposal, error) { + log.Infof("this proposal has been successful or just beginning : %d", latestProposalID) + // submit new proposal + newTxsRootProposal, err := constructNextProposal(ctx, lastProposal) + if err != nil { + return nil, nil, fmt.Errorf("[SubmitNextTxsProposal][GetBlobsAndCommitProposal] Try to construct new proposal: %s", err.Error()) + } + + trans, err := ctx.OpCommitterClient.SubmitTxsRoot(newTxsRootProposal) + if err != nil { + return nil, nil, fmt.Errorf("[SubmitNextTxsProposal][GetBlobsAndCommitProposal] Try to submit new proposal: %s", err.Error()) + } + voteAddress := ctx.B2NodeConfig.Address + err = confirmSubmitTxsProposal(ctx, newTxsRootProposal.ProposalID, voteAddress) + if err != nil { + return nil, nil, fmt.Errorf("[SubmitNextTxsProposal][confirmSubmitTxsProposal] Try to confirm submitTxProposal failed: %s", err.Error()) + } + log.Infof("[SubmitNextTxsProposal] submit new txs proposal: %s", newTxsRootProposal.ProposalID) + return trans, newTxsRootProposal, nil +} + +func ProcessTxsVotingAndTimeoutState(ctx *svc.ServiceContext, lastProposal op.OpProposalTxsRootProposal) error { + voteAddress := ctx.B2NodeConfig.Address + // check address voted or not + phase, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnTxsRootProposalPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + return fmt.Errorf("[ProcessVotingAndTimeoutState] Try to find address voted or not in Voting and Timeout phase: %s", err) + } + if phase { + return fmt.Errorf("[ProcessVotingAndTimeoutState] address already voted in voting status: %s", voteAddress) + } + var voteProposalStartTimestamp uint64 + var voteProposalEndTimestamp uint64 + if lastProposal.ProposalID == 1 { + voteProposalStartTimestamp = lastProposal.StartTimestamp + voteProposalEndTimestamp = voteProposalStartTimestamp + ctx.Config.BlobIntervalTime + } else { + beforeLastProposal, err := ctx.OpCommitterClient.ProposalManager.GetTxsRootProposal(&bind.CallOpts{}, lastProposal.ProposalID-1) + if err != nil { + return fmt.Errorf("[ProcessVotingAndTimeoutState] Try to get before last proposal: %s", err.Error()) + } + voteProposalStartTimestamp = beforeLastProposal.EndTimestamp + 1 + voteProposalEndTimestamp = voteProposalStartTimestamp + ctx.Config.BlobIntervalTime + } + + tsp, err := constructTxsRootProposal(ctx, lastProposal.ProposalID, voteProposalStartTimestamp, voteProposalEndTimestamp) + if err != nil { + return fmt.Errorf("[ProcessVotingAndTimeoutState] Try to construct new proposal to vote: %s", err.Error()) + } + txs, err := ctx.OpCommitterClient.SubmitTxsRoot(tsp) + if err != nil { + return fmt.Errorf("[ProcessVotingAndTimeoutState] Try to submit new proposal to vote: %s", err.Error()) + } + err = confirmSubmitTxsProposal(ctx, tsp.ProposalID, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessVotingAndTimeoutState][confirmSubmitTxsProposal] Try to confirm submitTxProposal failed: %s", err.Error()) + } + log.Infof("[ProcessVotingAndTimeoutState] vote txs proposal %s, %s, transaction: %s ", tsp.ProposalID, voteAddress, txs.Hash()) + return nil +} + +func ProcessTxsPendingStates(ctx *svc.ServiceContext, lastProposal op.OpProposalTxsRootProposal) error { + voteAddress := ctx.B2NodeConfig.Address + phase, err := ctx.OpCommitterClient.ProposalManager.IsVotedOntxsRootDSTxPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + return fmt.Errorf("[ProcessPendingStates][IsVotedOntxsRootDSTxPhase] is failed : %s", err) + } + if phase { + return fmt.Errorf("[Handler.GetBlobsAndCommitProposal] address already voted in pending status: %s", voteAddress) + } + if lastProposal.Winner == common.HexToAddress(ctx.B2NodeConfig.Address) { + err = ProcessTxsPendingWinner(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessPendingStates][ProcessPendingWinner] Try to process pending winner: %s", err.Error()) + } + } else { + err = ProcessTxsPendingVoter(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessPendingStates][ProcessPendingVoter] Try to process pending voter: %s", err.Error()) + } + } + return nil +} + +func ProcessTxsPendingVoter(ctx *svc.ServiceContext, lastProposal op.OpProposalTxsRootProposal, voteAddress string) error { + blobs, err := ctx.DecentralizedStore.QueryDetailsByTxID(lastProposal.DsTxHash) + if err != nil { + return fmt.Errorf("[ProcessPendingVoter] Try to get blobs from ds: %s", err.Error()) + } + var dsProposal types.DsTxsProposal + err = json.Unmarshal(blobs, &dsProposal) + if err != nil { + return fmt.Errorf("[ProcessPendingVoter] Try to unmarshal ds proposal: %s", err.Error()) + } + dbBlobs, err := dsProposal.GetDBBlobInfos() + if err != nil { + return fmt.Errorf("[ProcessPendingVoter] Try to get blobs from ds: %s", err.Error()) + } + verifyTxsRootHash, err := GetBlobsMerkleRoot(dbBlobs) + + if verifyTxsRootHash != lastProposal.TxsRoot { + return fmt.Errorf("[ProcessPendingVoter] Try to verify blobs from ds: %s", err.Error()) + } + _, err = ctx.OpCommitterClient.DsHash(lastProposal.ProposalID, schema.ProposalTypeTxsRoot, schema.DsTypeArWeave, lastProposal.DsTxHash) + if err != nil { + return fmt.Errorf("[ProcessPendingVoter] Try to send ds proposal: %s", err.Error()) + } + err = confirmTxsDSTxPhase(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessPendingVoter][confirmDSTxPhase] Try to confirm ds tx phase: %s", err.Error()) + } + log.Infof("[ProcessPendingVoter] success verify and vote submit txs from ds: %s, dsHash: %s", lastProposal.ProposalID, lastProposal.DsTxHash) + return nil +} + +func ProcessTxsPendingWinner(ctx *svc.ServiceContext, lastProposal op.OpProposalTxsRootProposal, voteAddress string) error { + blobs, err := GetBlobsByBlockListFromDB(ctx, lastProposal.BlockList) + if err != nil { + return fmt.Errorf("[ProcessPendingWinner][GetBlobsByBlockListFromDB] Try to get blobs from db: %s", err.Error()) + } + blobMerkleRoot, err := GetBlobsMerkleRoot(blobs) + if err != nil { + return fmt.Errorf("[ProcessPendingWinner][GetBlobsMerkleRoot] Try to get blobs merkle root: %s", err.Error()) + } + dsProposal := types.NewDsTxsProposal(ctx.B2NodeConfig.ChainID, lastProposal.ProposalID, blobMerkleRoot, blobs) + dsJSON, err := dsProposal.ToJSONBytes() + if err != nil { + return fmt.Errorf("[ProcessPendingWinner] Try to marshal ds proposal: %s", err.Error()) + } + // 重试机制 + dsTxID, err := ctx.DecentralizedStore.StoreDetailsOnChain(dsJSON, ctx.B2NodeConfig.ChainID, lastProposal.ProposalID) + if err != nil { + return fmt.Errorf("[StoreDetailsOnChain] Try to store ds proposal on decentralized store: %s", err.Error()) + } + err = confirmDSTransaction(ctx, dsTxID) + if err != nil { + return fmt.Errorf("[confirmDSTransaction] Try to confirm ds tx: %s", err.Error()) + } + log.Infof("[Handler.GetBlobsAndCommitProposal] proposal %s, success data to ds %s", lastProposal.ProposalID, dsTxID) + _, err = ctx.OpCommitterClient.DsHash(lastProposal.ProposalID, schema.ProposalTypeTxsRoot, schema.DsTypeArWeave, dsTxID) + if err != nil { + return fmt.Errorf("[OpCommitterClient.DsHash] Try to send ds proposal: %s", err.Error()) + } + err = confirmTxsDSTxPhase(ctx, lastProposal, voteAddress) + if err != nil { + return fmt.Errorf("[ProcessPendingWinner][confirmDSTxPhase] confirm ds tx phase %s", err.Error()) + } + log.Infof("[Handler.GetBlobsAndCommitProposal] success submit txs to ds: %s, dsHash: %s", lastProposal.ProposalID, lastProposal.DsTxHash) + return nil +} + +func confirmSubmitTxsProposal(ctx *svc.ServiceContext, proposalID uint64, voteAddress string) error { + var times uint64 + for { + if times > 60 { + return fmt.Errorf("[confirmSubmitTxsProposal] confirm submitTxsRoot fail") + } + phase, err := ctx.OpCommitterClient.ProposalManager.IsVotedOnTxsRootProposalPhase(&bind.CallOpts{}, proposalID, common.HexToAddress(voteAddress)) + if err != nil { + fmt.Printf("[confirmSubmitTxsProposal] Try to check submitTxProposal status fail: %s\n", err) + time.Sleep(60 * time.Second) + continue + } + if phase { + log.Infof("[confirmSubmitTxsProposal] proposalID: %s voteAddress: %s, IsVotedOnTxsRootProposalPhase", proposalID, voteAddress) + break + } + times++ + } + return nil +} + +func confirmTxsDSTxPhase(ctx *svc.ServiceContext, lastProposal op.OpProposalTxsRootProposal, voteAddress string) error { + var times uint64 + for { + if times > 60 { + return fmt.Errorf("[confirmDSTxPhase] confirmDSTxPhase fail, proposalID: %d, voteAddress: %s", lastProposal.ProposalID, voteAddress) + } + res, err := ctx.OpCommitterClient.ProposalManager.IsVotedOntxsRootDSTxPhase(&bind.CallOpts{}, lastProposal.ProposalID, common.HexToAddress(voteAddress)) + if err != nil { + fmt.Printf("[confirmDSTxPhase] is failed : %s\n, proposalID: %d\n, voteAddress: %s\n\n", err, lastProposal.ProposalID, voteAddress) + time.Sleep(60 * time.Second) + times++ + continue + } + if res { + log.Infof("[confirmDSTxPhase] confirm decentralized store has been processed : %s, proposal: %s", voteAddress, lastProposal.ProposalID) + break + } + times++ + } + return nil +} + +func confirmDSTransaction(ctx *svc.ServiceContext, dsTxID string) error { + var times uint64 + for { + if times > 60 { + return fmt.Errorf("[confirmDSTransaction] confirmDSTransaction fail, dsTxID: %s", dsTxID) + } + bytes, err := ctx.DecentralizedStore.QueryDetailsByTxID(dsTxID) + if err != nil { + fmt.Printf("[confirmDSTransaction] Try to query details by txID: %s\n", errors.WithStack(err).Error()) + time.Sleep(60 * time.Second) + times++ + continue + } + if len(bytes) != 0 { + break + } + times++ + } + return nil +} diff --git a/internal/handler/vote.go b/internal/handler/vote.go deleted file mode 100644 index abeebd1..0000000 --- a/internal/handler/vote.go +++ /dev/null @@ -1 +0,0 @@ -package handler diff --git a/internal/handler/zkEVM.go b/internal/handler/zkEVM.go deleted file mode 100644 index d644010..0000000 --- a/internal/handler/zkEVM.go +++ /dev/null @@ -1,5170 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package handler - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// PolygonZkEVMBatchData is an auto generated low-level Go binding around an user-defined struct. -type PolygonZkEVMBatchData struct { - Transactions []byte - GlobalExitRoot [32]byte - Timestamp uint64 - MinForcedTimestamp uint64 -} - -// PolygonZkEVMForcedBatchData is an auto generated low-level Go binding around an user-defined struct. -type PolygonZkEVMForcedBatchData struct { - Transactions []byte - GlobalExitRoot [32]byte - MinForcedTimestamp uint64 -} - -// PolygonZkEVMInitializePackedParameters is an auto generated low-level Go binding around an user-defined struct. -type PolygonZkEVMInitializePackedParameters struct { - Admin common.Address - TrustedSequencer common.Address - PendingStateTimeout uint64 - TrustedAggregator common.Address - TrustedAggregatorTimeout uint64 -} - -// ZkEVMMetaData contains all meta data concerning the ZkEVM contract. -var ZkEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_matic\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"_rollupVerifier\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_forkID\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BatchAlreadyVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSequencedOrNotSequenceEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesAlreadyActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForcedDataDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeForceBatchTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughMaticAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyNotEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedAggregator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedSequencer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceZeroBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampBelowForcedTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionsLengthAboveMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AcceptAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ActivateForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"ConsolidatePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"OverridePendingState\",\"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\":\"bytes32\",\"name\":\"storedStateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provedStateRoot\",\"type\":\"bytes32\"}],\"name\":\"ProveNonDeterministicPendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"SetForceBatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"SetMultiplierBatchFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"SetPendingStateTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"SetTrustedAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"SetTrustedAggregatorTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"SetVerifyBatchTimeTarget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"UpdateZkEVMVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatchesTrustedAggregator\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequencedBatchNum\",\"type\":\"uint64\"}],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"batchNumToStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculateRewardPerBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newStateRoot\",\"type\":\"uint256\"}],\"name\":\"checkStateRootInsidePrime\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"consolidatePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maticAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forkID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getForcedBatchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oldStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"}],\"name\":\"getInputSnarkBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedSequencer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateTimeout\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trustedAggregator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"trustedAggregatorTimeout\",\"type\":\"uint64\"}],\"internalType\":\"structPolygonZkEVM.InitializePackedParameters\",\"name\":\"initializePackedParameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"genesisRoot\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_trustedSequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isForcedBatchDisallowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"isPendingStateConsolidable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingState\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingStateConsolidated\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"matic\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiplierBatchFee\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"overridePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingStateTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingStateTransitions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"proveNonDeterministicPendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupVerifier\",\"outputs\":[{\"internalType\":\"contractIVerifierRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structPolygonZkEVM.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structPolygonZkEVM.ForcedBatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"sequencedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"accInputHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequencedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"previousLastBatchSequenced\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"setForceBatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"setMultiplierBatchFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"setPendingStateTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"setTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"setTrustedAggregatorTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"setVerifyBatchTimeTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"transferAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregatorTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifyBatchTimeTarget\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatchesTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ZkEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use ZkEVMMetaData.ABI instead. -var ZkEVMABI = ZkEVMMetaData.ABI - -// ZkEVM is an auto generated Go binding around an Ethereum contract. -type ZkEVM struct { - ZkEVMCaller // Read-only binding to the contract - ZkEVMTransactor // Write-only binding to the contract - ZkEVMFilterer // Log filterer for contract events -} - -// ZkEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZkEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZkEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZkEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZkEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZkEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZkEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZkEVMSession struct { - Contract *ZkEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZkEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZkEVMCallerSession struct { - Contract *ZkEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZkEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZkEVMTransactorSession struct { - Contract *ZkEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZkEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZkEVMRaw struct { - Contract *ZkEVM // Generic contract binding to access the raw methods on -} - -// ZkEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZkEVMCallerRaw struct { - Contract *ZkEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// ZkEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZkEVMTransactorRaw struct { - Contract *ZkEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZkEVM creates a new instance of ZkEVM, bound to a specific deployed contract. -func NewZkEVM(address common.Address, backend bind.ContractBackend) (*ZkEVM, error) { - contract, err := bindZkEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZkEVM{ZkEVMCaller: ZkEVMCaller{contract: contract}, ZkEVMTransactor: ZkEVMTransactor{contract: contract}, ZkEVMFilterer: ZkEVMFilterer{contract: contract}}, nil -} - -// NewZkEVMCaller creates a new read-only instance of ZkEVM, bound to a specific deployed contract. -func NewZkEVMCaller(address common.Address, caller bind.ContractCaller) (*ZkEVMCaller, error) { - contract, err := bindZkEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZkEVMCaller{contract: contract}, nil -} - -// NewZkEVMTransactor creates a new write-only instance of ZkEVM, bound to a specific deployed contract. -func NewZkEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*ZkEVMTransactor, error) { - contract, err := bindZkEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZkEVMTransactor{contract: contract}, nil -} - -// NewZkEVMFilterer creates a new log filterer instance of ZkEVM, bound to a specific deployed contract. -func NewZkEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*ZkEVMFilterer, error) { - contract, err := bindZkEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZkEVMFilterer{contract: contract}, nil -} - -// bindZkEVM binds a generic wrapper to an already deployed contract. -func bindZkEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZkEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZkEVM *ZkEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZkEVM.Contract.ZkEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZkEVM *ZkEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZkEVM.Contract.ZkEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZkEVM *ZkEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZkEVM.Contract.ZkEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZkEVM *ZkEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZkEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZkEVM *ZkEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZkEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZkEVM *ZkEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZkEVM.Contract.contract.Transact(opts, method, params...) -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_ZkEVM *ZkEVMCaller) Admin(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "admin") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_ZkEVM *ZkEVMSession) Admin() (common.Address, error) { - return _ZkEVM.Contract.Admin(&_ZkEVM.CallOpts) -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) Admin() (common.Address, error) { - return _ZkEVM.Contract.Admin(&_ZkEVM.CallOpts) -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_ZkEVM *ZkEVMCaller) BatchFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "batchFee") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_ZkEVM *ZkEVMSession) BatchFee() (*big.Int, error) { - return _ZkEVM.Contract.BatchFee(&_ZkEVM.CallOpts) -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_ZkEVM *ZkEVMCallerSession) BatchFee() (*big.Int, error) { - return _ZkEVM.Contract.BatchFee(&_ZkEVM.CallOpts) -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_ZkEVM *ZkEVMCaller) BatchNumToStateRoot(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "batchNumToStateRoot", arg0) - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_ZkEVM *ZkEVMSession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { - return _ZkEVM.Contract.BatchNumToStateRoot(&_ZkEVM.CallOpts, arg0) -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_ZkEVM *ZkEVMCallerSession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { - return _ZkEVM.Contract.BatchNumToStateRoot(&_ZkEVM.CallOpts, arg0) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_ZkEVM *ZkEVMCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "bridgeAddress") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_ZkEVM *ZkEVMSession) BridgeAddress() (common.Address, error) { - return _ZkEVM.Contract.BridgeAddress(&_ZkEVM.CallOpts) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) BridgeAddress() (common.Address, error) { - return _ZkEVM.Contract.BridgeAddress(&_ZkEVM.CallOpts) -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_ZkEVM *ZkEVMCaller) CalculateRewardPerBatch(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "calculateRewardPerBatch") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_ZkEVM *ZkEVMSession) CalculateRewardPerBatch() (*big.Int, error) { - return _ZkEVM.Contract.CalculateRewardPerBatch(&_ZkEVM.CallOpts) -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_ZkEVM *ZkEVMCallerSession) CalculateRewardPerBatch() (*big.Int, error) { - return _ZkEVM.Contract.CalculateRewardPerBatch(&_ZkEVM.CallOpts) -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) ChainID(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "chainID") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_ZkEVM *ZkEVMSession) ChainID() (uint64, error) { - return _ZkEVM.Contract.ChainID(&_ZkEVM.CallOpts) -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) ChainID() (uint64, error) { - return _ZkEVM.Contract.ChainID(&_ZkEVM.CallOpts) -} - -// CheckStateRootInsidePrime is a free data retrieval call binding the contract method 0xba58ae39. -// -// Solidity: function checkStateRootInsidePrime(uint256 newStateRoot) pure returns(bool) -func (_ZkEVM *ZkEVMCaller) CheckStateRootInsidePrime(opts *bind.CallOpts, newStateRoot *big.Int) (bool, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "checkStateRootInsidePrime", newStateRoot) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// CheckStateRootInsidePrime is a free data retrieval call binding the contract method 0xba58ae39. -// -// Solidity: function checkStateRootInsidePrime(uint256 newStateRoot) pure returns(bool) -func (_ZkEVM *ZkEVMSession) CheckStateRootInsidePrime(newStateRoot *big.Int) (bool, error) { - return _ZkEVM.Contract.CheckStateRootInsidePrime(&_ZkEVM.CallOpts, newStateRoot) -} - -// CheckStateRootInsidePrime is a free data retrieval call binding the contract method 0xba58ae39. -// -// Solidity: function checkStateRootInsidePrime(uint256 newStateRoot) pure returns(bool) -func (_ZkEVM *ZkEVMCallerSession) CheckStateRootInsidePrime(newStateRoot *big.Int) (bool, error) { - return _ZkEVM.Contract.CheckStateRootInsidePrime(&_ZkEVM.CallOpts, newStateRoot) -} - -// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. -// -// Solidity: function forceBatchTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) ForceBatchTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "forceBatchTimeout") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. -// -// Solidity: function forceBatchTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMSession) ForceBatchTimeout() (uint64, error) { - return _ZkEVM.Contract.ForceBatchTimeout(&_ZkEVM.CallOpts) -} - -// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. -// -// Solidity: function forceBatchTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) ForceBatchTimeout() (uint64, error) { - return _ZkEVM.Contract.ForceBatchTimeout(&_ZkEVM.CallOpts) -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_ZkEVM *ZkEVMCaller) ForcedBatches(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "forcedBatches", arg0) - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_ZkEVM *ZkEVMSession) ForcedBatches(arg0 uint64) ([32]byte, error) { - return _ZkEVM.Contract.ForcedBatches(&_ZkEVM.CallOpts, arg0) -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_ZkEVM *ZkEVMCallerSession) ForcedBatches(arg0 uint64) ([32]byte, error) { - return _ZkEVM.Contract.ForcedBatches(&_ZkEVM.CallOpts, arg0) -} - -// ForkID is a free data retrieval call binding the contract method 0x831c7ead. -// -// Solidity: function forkID() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) ForkID(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "forkID") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// ForkID is a free data retrieval call binding the contract method 0x831c7ead. -// -// Solidity: function forkID() view returns(uint64) -func (_ZkEVM *ZkEVMSession) ForkID() (uint64, error) { - return _ZkEVM.Contract.ForkID(&_ZkEVM.CallOpts) -} - -// ForkID is a free data retrieval call binding the contract method 0x831c7ead. -// -// Solidity: function forkID() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) ForkID() (uint64, error) { - return _ZkEVM.Contract.ForkID(&_ZkEVM.CallOpts) -} - -// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. -// -// Solidity: function getForcedBatchFee() view returns(uint256) -func (_ZkEVM *ZkEVMCaller) GetForcedBatchFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "getForcedBatchFee") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. -// -// Solidity: function getForcedBatchFee() view returns(uint256) -func (_ZkEVM *ZkEVMSession) GetForcedBatchFee() (*big.Int, error) { - return _ZkEVM.Contract.GetForcedBatchFee(&_ZkEVM.CallOpts) -} - -// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. -// -// Solidity: function getForcedBatchFee() view returns(uint256) -func (_ZkEVM *ZkEVMCallerSession) GetForcedBatchFee() (*big.Int, error) { - return _ZkEVM.Contract.GetForcedBatchFee(&_ZkEVM.CallOpts) -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_ZkEVM *ZkEVMCaller) GetInputSnarkBytes(opts *bind.CallOpts, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "getInputSnarkBytes", initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_ZkEVM *ZkEVMSession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - return _ZkEVM.Contract.GetInputSnarkBytes(&_ZkEVM.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_ZkEVM *ZkEVMCallerSession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - return _ZkEVM.Contract.GetInputSnarkBytes(&_ZkEVM.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) GetLastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "getLastVerifiedBatch") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_ZkEVM *ZkEVMSession) GetLastVerifiedBatch() (uint64, error) { - return _ZkEVM.Contract.GetLastVerifiedBatch(&_ZkEVM.CallOpts) -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) GetLastVerifiedBatch() (uint64, error) { - return _ZkEVM.Contract.GetLastVerifiedBatch(&_ZkEVM.CallOpts) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_ZkEVM *ZkEVMCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "globalExitRootManager") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_ZkEVM *ZkEVMSession) GlobalExitRootManager() (common.Address, error) { - return _ZkEVM.Contract.GlobalExitRootManager(&_ZkEVM.CallOpts) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) GlobalExitRootManager() (common.Address, error) { - return _ZkEVM.Contract.GlobalExitRootManager(&_ZkEVM.CallOpts) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_ZkEVM *ZkEVMCaller) IsEmergencyState(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "isEmergencyState") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_ZkEVM *ZkEVMSession) IsEmergencyState() (bool, error) { - return _ZkEVM.Contract.IsEmergencyState(&_ZkEVM.CallOpts) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_ZkEVM *ZkEVMCallerSession) IsEmergencyState() (bool, error) { - return _ZkEVM.Contract.IsEmergencyState(&_ZkEVM.CallOpts) -} - -// IsForcedBatchDisallowed is a free data retrieval call binding the contract method 0xed6b0104. -// -// Solidity: function isForcedBatchDisallowed() view returns(bool) -func (_ZkEVM *ZkEVMCaller) IsForcedBatchDisallowed(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "isForcedBatchDisallowed") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// IsForcedBatchDisallowed is a free data retrieval call binding the contract method 0xed6b0104. -// -// Solidity: function isForcedBatchDisallowed() view returns(bool) -func (_ZkEVM *ZkEVMSession) IsForcedBatchDisallowed() (bool, error) { - return _ZkEVM.Contract.IsForcedBatchDisallowed(&_ZkEVM.CallOpts) -} - -// IsForcedBatchDisallowed is a free data retrieval call binding the contract method 0xed6b0104. -// -// Solidity: function isForcedBatchDisallowed() view returns(bool) -func (_ZkEVM *ZkEVMCallerSession) IsForcedBatchDisallowed() (bool, error) { - return _ZkEVM.Contract.IsForcedBatchDisallowed(&_ZkEVM.CallOpts) -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_ZkEVM *ZkEVMCaller) IsPendingStateConsolidable(opts *bind.CallOpts, pendingStateNum uint64) (bool, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "isPendingStateConsolidable", pendingStateNum) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_ZkEVM *ZkEVMSession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { - return _ZkEVM.Contract.IsPendingStateConsolidable(&_ZkEVM.CallOpts, pendingStateNum) -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_ZkEVM *ZkEVMCallerSession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { - return _ZkEVM.Contract.IsPendingStateConsolidable(&_ZkEVM.CallOpts, pendingStateNum) -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) LastBatchSequenced(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "lastBatchSequenced") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_ZkEVM *ZkEVMSession) LastBatchSequenced() (uint64, error) { - return _ZkEVM.Contract.LastBatchSequenced(&_ZkEVM.CallOpts) -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) LastBatchSequenced() (uint64, error) { - return _ZkEVM.Contract.LastBatchSequenced(&_ZkEVM.CallOpts) -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) LastForceBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "lastForceBatch") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_ZkEVM *ZkEVMSession) LastForceBatch() (uint64, error) { - return _ZkEVM.Contract.LastForceBatch(&_ZkEVM.CallOpts) -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) LastForceBatch() (uint64, error) { - return _ZkEVM.Contract.LastForceBatch(&_ZkEVM.CallOpts) -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) LastForceBatchSequenced(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "lastForceBatchSequenced") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_ZkEVM *ZkEVMSession) LastForceBatchSequenced() (uint64, error) { - return _ZkEVM.Contract.LastForceBatchSequenced(&_ZkEVM.CallOpts) -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) LastForceBatchSequenced() (uint64, error) { - return _ZkEVM.Contract.LastForceBatchSequenced(&_ZkEVM.CallOpts) -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) LastPendingState(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "lastPendingState") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_ZkEVM *ZkEVMSession) LastPendingState() (uint64, error) { - return _ZkEVM.Contract.LastPendingState(&_ZkEVM.CallOpts) -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) LastPendingState() (uint64, error) { - return _ZkEVM.Contract.LastPendingState(&_ZkEVM.CallOpts) -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) LastPendingStateConsolidated(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "lastPendingStateConsolidated") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_ZkEVM *ZkEVMSession) LastPendingStateConsolidated() (uint64, error) { - return _ZkEVM.Contract.LastPendingStateConsolidated(&_ZkEVM.CallOpts) -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) LastPendingStateConsolidated() (uint64, error) { - return _ZkEVM.Contract.LastPendingStateConsolidated(&_ZkEVM.CallOpts) -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) LastTimestamp(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "lastTimestamp") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_ZkEVM *ZkEVMSession) LastTimestamp() (uint64, error) { - return _ZkEVM.Contract.LastTimestamp(&_ZkEVM.CallOpts) -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) LastTimestamp() (uint64, error) { - return _ZkEVM.Contract.LastTimestamp(&_ZkEVM.CallOpts) -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) LastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "lastVerifiedBatch") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_ZkEVM *ZkEVMSession) LastVerifiedBatch() (uint64, error) { - return _ZkEVM.Contract.LastVerifiedBatch(&_ZkEVM.CallOpts) -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) LastVerifiedBatch() (uint64, error) { - return _ZkEVM.Contract.LastVerifiedBatch(&_ZkEVM.CallOpts) -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_ZkEVM *ZkEVMCaller) Matic(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "matic") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_ZkEVM *ZkEVMSession) Matic() (common.Address, error) { - return _ZkEVM.Contract.Matic(&_ZkEVM.CallOpts) -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) Matic() (common.Address, error) { - return _ZkEVM.Contract.Matic(&_ZkEVM.CallOpts) -} - -// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. -// -// Solidity: function multiplierBatchFee() view returns(uint16) -func (_ZkEVM *ZkEVMCaller) MultiplierBatchFee(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "multiplierBatchFee") - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err -} - -// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. -// -// Solidity: function multiplierBatchFee() view returns(uint16) -func (_ZkEVM *ZkEVMSession) MultiplierBatchFee() (uint16, error) { - return _ZkEVM.Contract.MultiplierBatchFee(&_ZkEVM.CallOpts) -} - -// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. -// -// Solidity: function multiplierBatchFee() view returns(uint16) -func (_ZkEVM *ZkEVMCallerSession) MultiplierBatchFee() (uint16, error) { - return _ZkEVM.Contract.MultiplierBatchFee(&_ZkEVM.CallOpts) -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_ZkEVM *ZkEVMCaller) NetworkName(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "networkName") - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_ZkEVM *ZkEVMSession) NetworkName() (string, error) { - return _ZkEVM.Contract.NetworkName(&_ZkEVM.CallOpts) -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_ZkEVM *ZkEVMCallerSession) NetworkName() (string, error) { - return _ZkEVM.Contract.NetworkName(&_ZkEVM.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZkEVM *ZkEVMCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZkEVM *ZkEVMSession) Owner() (common.Address, error) { - return _ZkEVM.Contract.Owner(&_ZkEVM.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) Owner() (common.Address, error) { - return _ZkEVM.Contract.Owner(&_ZkEVM.CallOpts) -} - -// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. -// -// Solidity: function pendingAdmin() view returns(address) -func (_ZkEVM *ZkEVMCaller) PendingAdmin(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "pendingAdmin") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. -// -// Solidity: function pendingAdmin() view returns(address) -func (_ZkEVM *ZkEVMSession) PendingAdmin() (common.Address, error) { - return _ZkEVM.Contract.PendingAdmin(&_ZkEVM.CallOpts) -} - -// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. -// -// Solidity: function pendingAdmin() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) PendingAdmin() (common.Address, error) { - return _ZkEVM.Contract.PendingAdmin(&_ZkEVM.CallOpts) -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) PendingStateTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "pendingStateTimeout") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMSession) PendingStateTimeout() (uint64, error) { - return _ZkEVM.Contract.PendingStateTimeout(&_ZkEVM.CallOpts) -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) PendingStateTimeout() (uint64, error) { - return _ZkEVM.Contract.PendingStateTimeout(&_ZkEVM.CallOpts) -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_ZkEVM *ZkEVMCaller) PendingStateTransitions(opts *bind.CallOpts, arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error, -) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "pendingStateTransitions", arg0) - - outstruct := new(struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte - }) - if err != nil { - return *outstruct, err - } - - outstruct.Timestamp = *abi.ConvertType(out[0], new(uint64)).(*uint64) - outstruct.LastVerifiedBatch = *abi.ConvertType(out[1], new(uint64)).(*uint64) - outstruct.ExitRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) - outstruct.StateRoot = *abi.ConvertType(out[3], new([32]byte)).(*[32]byte) - - return *outstruct, err -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_ZkEVM *ZkEVMSession) PendingStateTransitions(arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error, -) { - return _ZkEVM.Contract.PendingStateTransitions(&_ZkEVM.CallOpts, arg0) -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_ZkEVM *ZkEVMCallerSession) PendingStateTransitions(arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error, -) { - return _ZkEVM.Contract.PendingStateTransitions(&_ZkEVM.CallOpts, arg0) -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_ZkEVM *ZkEVMCaller) RollupVerifier(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "rollupVerifier") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_ZkEVM *ZkEVMSession) RollupVerifier() (common.Address, error) { - return _ZkEVM.Contract.RollupVerifier(&_ZkEVM.CallOpts) -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) RollupVerifier() (common.Address, error) { - return _ZkEVM.Contract.RollupVerifier(&_ZkEVM.CallOpts) -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_ZkEVM *ZkEVMCaller) SequencedBatches(opts *bind.CallOpts, arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error, -) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "sequencedBatches", arg0) - - outstruct := new(struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 - }) - if err != nil { - return *outstruct, err - } - - outstruct.AccInputHash = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - outstruct.SequencedTimestamp = *abi.ConvertType(out[1], new(uint64)).(*uint64) - outstruct.PreviousLastBatchSequenced = *abi.ConvertType(out[2], new(uint64)).(*uint64) - - return *outstruct, err -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_ZkEVM *ZkEVMSession) SequencedBatches(arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error, -) { - return _ZkEVM.Contract.SequencedBatches(&_ZkEVM.CallOpts, arg0) -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_ZkEVM *ZkEVMCallerSession) SequencedBatches(arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error, -) { - return _ZkEVM.Contract.SequencedBatches(&_ZkEVM.CallOpts, arg0) -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_ZkEVM *ZkEVMCaller) TrustedAggregator(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "trustedAggregator") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_ZkEVM *ZkEVMSession) TrustedAggregator() (common.Address, error) { - return _ZkEVM.Contract.TrustedAggregator(&_ZkEVM.CallOpts) -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) TrustedAggregator() (common.Address, error) { - return _ZkEVM.Contract.TrustedAggregator(&_ZkEVM.CallOpts) -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) TrustedAggregatorTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "trustedAggregatorTimeout") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMSession) TrustedAggregatorTimeout() (uint64, error) { - return _ZkEVM.Contract.TrustedAggregatorTimeout(&_ZkEVM.CallOpts) -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) TrustedAggregatorTimeout() (uint64, error) { - return _ZkEVM.Contract.TrustedAggregatorTimeout(&_ZkEVM.CallOpts) -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_ZkEVM *ZkEVMCaller) TrustedSequencer(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "trustedSequencer") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_ZkEVM *ZkEVMSession) TrustedSequencer() (common.Address, error) { - return _ZkEVM.Contract.TrustedSequencer(&_ZkEVM.CallOpts) -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_ZkEVM *ZkEVMCallerSession) TrustedSequencer() (common.Address, error) { - return _ZkEVM.Contract.TrustedSequencer(&_ZkEVM.CallOpts) -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_ZkEVM *ZkEVMCaller) TrustedSequencerURL(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "trustedSequencerURL") - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_ZkEVM *ZkEVMSession) TrustedSequencerURL() (string, error) { - return _ZkEVM.Contract.TrustedSequencerURL(&_ZkEVM.CallOpts) -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_ZkEVM *ZkEVMCallerSession) TrustedSequencerURL() (string, error) { - return _ZkEVM.Contract.TrustedSequencerURL(&_ZkEVM.CallOpts) -} - -// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. -// -// Solidity: function verifyBatchTimeTarget() view returns(uint64) -func (_ZkEVM *ZkEVMCaller) VerifyBatchTimeTarget(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ZkEVM.contract.Call(opts, &out, "verifyBatchTimeTarget") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. -// -// Solidity: function verifyBatchTimeTarget() view returns(uint64) -func (_ZkEVM *ZkEVMSession) VerifyBatchTimeTarget() (uint64, error) { - return _ZkEVM.Contract.VerifyBatchTimeTarget(&_ZkEVM.CallOpts) -} - -// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. -// -// Solidity: function verifyBatchTimeTarget() view returns(uint64) -func (_ZkEVM *ZkEVMCallerSession) VerifyBatchTimeTarget() (uint64, error) { - return _ZkEVM.Contract.VerifyBatchTimeTarget(&_ZkEVM.CallOpts) -} - -// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. -// -// Solidity: function acceptAdminRole() returns() -func (_ZkEVM *ZkEVMTransactor) AcceptAdminRole(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "acceptAdminRole") -} - -// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. -// -// Solidity: function acceptAdminRole() returns() -func (_ZkEVM *ZkEVMSession) AcceptAdminRole() (*types.Transaction, error) { - return _ZkEVM.Contract.AcceptAdminRole(&_ZkEVM.TransactOpts) -} - -// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. -// -// Solidity: function acceptAdminRole() returns() -func (_ZkEVM *ZkEVMTransactorSession) AcceptAdminRole() (*types.Transaction, error) { - return _ZkEVM.Contract.AcceptAdminRole(&_ZkEVM.TransactOpts) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_ZkEVM *ZkEVMTransactor) ActivateEmergencyState(opts *bind.TransactOpts, sequencedBatchNum uint64) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "activateEmergencyState", sequencedBatchNum) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_ZkEVM *ZkEVMSession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.ActivateEmergencyState(&_ZkEVM.TransactOpts, sequencedBatchNum) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_ZkEVM *ZkEVMTransactorSession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.ActivateEmergencyState(&_ZkEVM.TransactOpts, sequencedBatchNum) -} - -// ActivateForceBatches is a paid mutator transaction binding the contract method 0x5ec91958. -// -// Solidity: function activateForceBatches() returns() -func (_ZkEVM *ZkEVMTransactor) ActivateForceBatches(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "activateForceBatches") -} - -// ActivateForceBatches is a paid mutator transaction binding the contract method 0x5ec91958. -// -// Solidity: function activateForceBatches() returns() -func (_ZkEVM *ZkEVMSession) ActivateForceBatches() (*types.Transaction, error) { - return _ZkEVM.Contract.ActivateForceBatches(&_ZkEVM.TransactOpts) -} - -// ActivateForceBatches is a paid mutator transaction binding the contract method 0x5ec91958. -// -// Solidity: function activateForceBatches() returns() -func (_ZkEVM *ZkEVMTransactorSession) ActivateForceBatches() (*types.Transaction, error) { - return _ZkEVM.Contract.ActivateForceBatches(&_ZkEVM.TransactOpts) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_ZkEVM *ZkEVMTransactor) ConsolidatePendingState(opts *bind.TransactOpts, pendingStateNum uint64) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "consolidatePendingState", pendingStateNum) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_ZkEVM *ZkEVMSession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.ConsolidatePendingState(&_ZkEVM.TransactOpts, pendingStateNum) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_ZkEVM *ZkEVMTransactorSession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.ConsolidatePendingState(&_ZkEVM.TransactOpts, pendingStateNum) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_ZkEVM *ZkEVMTransactor) DeactivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "deactivateEmergencyState") -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_ZkEVM *ZkEVMSession) DeactivateEmergencyState() (*types.Transaction, error) { - return _ZkEVM.Contract.DeactivateEmergencyState(&_ZkEVM.TransactOpts) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_ZkEVM *ZkEVMTransactorSession) DeactivateEmergencyState() (*types.Transaction, error) { - return _ZkEVM.Contract.DeactivateEmergencyState(&_ZkEVM.TransactOpts) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_ZkEVM *ZkEVMTransactor) ForceBatch(opts *bind.TransactOpts, transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "forceBatch", transactions, maticAmount) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_ZkEVM *ZkEVMSession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _ZkEVM.Contract.ForceBatch(&_ZkEVM.TransactOpts, transactions, maticAmount) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_ZkEVM *ZkEVMTransactorSession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _ZkEVM.Contract.ForceBatch(&_ZkEVM.TransactOpts, transactions, maticAmount) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd2e129f9. -// -// Solidity: function initialize((address,address,uint64,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName, string _version) returns() -func (_ZkEVM *ZkEVMTransactor) Initialize(opts *bind.TransactOpts, initializePackedParameters PolygonZkEVMInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string, _version string) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "initialize", initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName, _version) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd2e129f9. -// -// Solidity: function initialize((address,address,uint64,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName, string _version) returns() -func (_ZkEVM *ZkEVMSession) Initialize(initializePackedParameters PolygonZkEVMInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string, _version string) (*types.Transaction, error) { - return _ZkEVM.Contract.Initialize(&_ZkEVM.TransactOpts, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName, _version) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd2e129f9. -// -// Solidity: function initialize((address,address,uint64,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName, string _version) returns() -func (_ZkEVM *ZkEVMTransactorSession) Initialize(initializePackedParameters PolygonZkEVMInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string, _version string) (*types.Transaction, error) { - return _ZkEVM.Contract.Initialize(&_ZkEVM.TransactOpts, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName, _version) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0x2c1f816a. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactor) OverridePendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "overridePendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0x2c1f816a. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMSession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.OverridePendingState(&_ZkEVM.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0x2c1f816a. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactorSession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.OverridePendingState(&_ZkEVM.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x9aa972a3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactor) ProveNonDeterministicPendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "proveNonDeterministicPendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x9aa972a3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMSession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.ProveNonDeterministicPendingState(&_ZkEVM.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x9aa972a3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactorSession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.ProveNonDeterministicPendingState(&_ZkEVM.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZkEVM *ZkEVMTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZkEVM *ZkEVMSession) RenounceOwnership() (*types.Transaction, error) { - return _ZkEVM.Contract.RenounceOwnership(&_ZkEVM.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZkEVM *ZkEVMTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ZkEVM.Contract.RenounceOwnership(&_ZkEVM.TransactOpts) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x5e9145c9. -// -// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches, address l2Coinbase) returns() -func (_ZkEVM *ZkEVMTransactor) SequenceBatches(opts *bind.TransactOpts, batches []PolygonZkEVMBatchData, l2Coinbase common.Address) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "sequenceBatches", batches, l2Coinbase) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x5e9145c9. -// -// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches, address l2Coinbase) returns() -func (_ZkEVM *ZkEVMSession) SequenceBatches(batches []PolygonZkEVMBatchData, l2Coinbase common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.SequenceBatches(&_ZkEVM.TransactOpts, batches, l2Coinbase) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x5e9145c9. -// -// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches, address l2Coinbase) returns() -func (_ZkEVM *ZkEVMTransactorSession) SequenceBatches(batches []PolygonZkEVMBatchData, l2Coinbase common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.SequenceBatches(&_ZkEVM.TransactOpts, batches, l2Coinbase) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_ZkEVM *ZkEVMTransactor) SequenceForceBatches(opts *bind.TransactOpts, batches []PolygonZkEVMForcedBatchData) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "sequenceForceBatches", batches) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_ZkEVM *ZkEVMSession) SequenceForceBatches(batches []PolygonZkEVMForcedBatchData) (*types.Transaction, error) { - return _ZkEVM.Contract.SequenceForceBatches(&_ZkEVM.TransactOpts, batches) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_ZkEVM *ZkEVMTransactorSession) SequenceForceBatches(batches []PolygonZkEVMForcedBatchData) (*types.Transaction, error) { - return _ZkEVM.Contract.SequenceForceBatches(&_ZkEVM.TransactOpts, batches) -} - -// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. -// -// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() -func (_ZkEVM *ZkEVMTransactor) SetForceBatchTimeout(opts *bind.TransactOpts, newforceBatchTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setForceBatchTimeout", newforceBatchTimeout) -} - -// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. -// -// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() -func (_ZkEVM *ZkEVMSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetForceBatchTimeout(&_ZkEVM.TransactOpts, newforceBatchTimeout) -} - -// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. -// -// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetForceBatchTimeout(&_ZkEVM.TransactOpts, newforceBatchTimeout) -} - -// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. -// -// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() -func (_ZkEVM *ZkEVMTransactor) SetMultiplierBatchFee(opts *bind.TransactOpts, newMultiplierBatchFee uint16) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setMultiplierBatchFee", newMultiplierBatchFee) -} - -// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. -// -// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() -func (_ZkEVM *ZkEVMSession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { - return _ZkEVM.Contract.SetMultiplierBatchFee(&_ZkEVM.TransactOpts, newMultiplierBatchFee) -} - -// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. -// -// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { - return _ZkEVM.Contract.SetMultiplierBatchFee(&_ZkEVM.TransactOpts, newMultiplierBatchFee) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_ZkEVM *ZkEVMTransactor) SetPendingStateTimeout(opts *bind.TransactOpts, newPendingStateTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setPendingStateTimeout", newPendingStateTimeout) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_ZkEVM *ZkEVMSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetPendingStateTimeout(&_ZkEVM.TransactOpts, newPendingStateTimeout) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetPendingStateTimeout(&_ZkEVM.TransactOpts, newPendingStateTimeout) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_ZkEVM *ZkEVMTransactor) SetTrustedAggregator(opts *bind.TransactOpts, newTrustedAggregator common.Address) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setTrustedAggregator", newTrustedAggregator) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_ZkEVM *ZkEVMSession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedAggregator(&_ZkEVM.TransactOpts, newTrustedAggregator) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedAggregator(&_ZkEVM.TransactOpts, newTrustedAggregator) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_ZkEVM *ZkEVMTransactor) SetTrustedAggregatorTimeout(opts *bind.TransactOpts, newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setTrustedAggregatorTimeout", newTrustedAggregatorTimeout) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_ZkEVM *ZkEVMSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedAggregatorTimeout(&_ZkEVM.TransactOpts, newTrustedAggregatorTimeout) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedAggregatorTimeout(&_ZkEVM.TransactOpts, newTrustedAggregatorTimeout) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_ZkEVM *ZkEVMTransactor) SetTrustedSequencer(opts *bind.TransactOpts, newTrustedSequencer common.Address) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setTrustedSequencer", newTrustedSequencer) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_ZkEVM *ZkEVMSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedSequencer(&_ZkEVM.TransactOpts, newTrustedSequencer) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedSequencer(&_ZkEVM.TransactOpts, newTrustedSequencer) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_ZkEVM *ZkEVMTransactor) SetTrustedSequencerURL(opts *bind.TransactOpts, newTrustedSequencerURL string) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setTrustedSequencerURL", newTrustedSequencerURL) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_ZkEVM *ZkEVMSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedSequencerURL(&_ZkEVM.TransactOpts, newTrustedSequencerURL) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { - return _ZkEVM.Contract.SetTrustedSequencerURL(&_ZkEVM.TransactOpts, newTrustedSequencerURL) -} - -// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. -// -// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() -func (_ZkEVM *ZkEVMTransactor) SetVerifyBatchTimeTarget(opts *bind.TransactOpts, newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "setVerifyBatchTimeTarget", newVerifyBatchTimeTarget) -} - -// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. -// -// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() -func (_ZkEVM *ZkEVMSession) SetVerifyBatchTimeTarget(newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetVerifyBatchTimeTarget(&_ZkEVM.TransactOpts, newVerifyBatchTimeTarget) -} - -// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. -// -// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() -func (_ZkEVM *ZkEVMTransactorSession) SetVerifyBatchTimeTarget(newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { - return _ZkEVM.Contract.SetVerifyBatchTimeTarget(&_ZkEVM.TransactOpts, newVerifyBatchTimeTarget) -} - -// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. -// -// Solidity: function transferAdminRole(address newPendingAdmin) returns() -func (_ZkEVM *ZkEVMTransactor) TransferAdminRole(opts *bind.TransactOpts, newPendingAdmin common.Address) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "transferAdminRole", newPendingAdmin) -} - -// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. -// -// Solidity: function transferAdminRole(address newPendingAdmin) returns() -func (_ZkEVM *ZkEVMSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.TransferAdminRole(&_ZkEVM.TransactOpts, newPendingAdmin) -} - -// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. -// -// Solidity: function transferAdminRole(address newPendingAdmin) returns() -func (_ZkEVM *ZkEVMTransactorSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.TransferAdminRole(&_ZkEVM.TransactOpts, newPendingAdmin) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZkEVM *ZkEVMTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZkEVM *ZkEVMSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.TransferOwnership(&_ZkEVM.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZkEVM *ZkEVMTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ZkEVM.Contract.TransferOwnership(&_ZkEVM.TransactOpts, newOwner) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x621dd411. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactor) VerifyBatches(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "verifyBatches", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x621dd411. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMSession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.VerifyBatches(&_ZkEVM.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x621dd411. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactorSession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.VerifyBatches(&_ZkEVM.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x2b0006fa. -// -// Solidity: function verifyBatchesTrustedAggregator(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactor) VerifyBatchesTrustedAggregator(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.contract.Transact(opts, "verifyBatchesTrustedAggregator", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x2b0006fa. -// -// Solidity: function verifyBatchesTrustedAggregator(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMSession) VerifyBatchesTrustedAggregator(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.VerifyBatchesTrustedAggregator(&_ZkEVM.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x2b0006fa. -// -// Solidity: function verifyBatchesTrustedAggregator(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_ZkEVM *ZkEVMTransactorSession) VerifyBatchesTrustedAggregator(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _ZkEVM.Contract.VerifyBatchesTrustedAggregator(&_ZkEVM.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// ZkEVMAcceptAdminRoleIterator is returned from FilterAcceptAdminRole and is used to iterate over the raw logs and unpacked data for AcceptAdminRole events raised by the ZkEVM contract. -type ZkEVMAcceptAdminRoleIterator struct { - Event *ZkEVMAcceptAdminRole // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMAcceptAdminRoleIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMAcceptAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMAcceptAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMAcceptAdminRoleIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMAcceptAdminRoleIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMAcceptAdminRole represents a AcceptAdminRole event raised by the ZkEVM contract. -type ZkEVMAcceptAdminRole struct { - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAcceptAdminRole is a free log retrieval operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. -// -// Solidity: event AcceptAdminRole(address newAdmin) -func (_ZkEVM *ZkEVMFilterer) FilterAcceptAdminRole(opts *bind.FilterOpts) (*ZkEVMAcceptAdminRoleIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "AcceptAdminRole") - if err != nil { - return nil, err - } - return &ZkEVMAcceptAdminRoleIterator{contract: _ZkEVM.contract, event: "AcceptAdminRole", logs: logs, sub: sub}, nil -} - -// WatchAcceptAdminRole is a free log subscription operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. -// -// Solidity: event AcceptAdminRole(address newAdmin) -func (_ZkEVM *ZkEVMFilterer) WatchAcceptAdminRole(opts *bind.WatchOpts, sink chan<- *ZkEVMAcceptAdminRole) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "AcceptAdminRole") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMAcceptAdminRole) - if err := _ZkEVM.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAcceptAdminRole is a log parse operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. -// -// Solidity: event AcceptAdminRole(address newAdmin) -func (_ZkEVM *ZkEVMFilterer) ParseAcceptAdminRole(log types.Log) (*ZkEVMAcceptAdminRole, error) { - event := new(ZkEVMAcceptAdminRole) - if err := _ZkEVM.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMActivateForceBatchesIterator is returned from FilterActivateForceBatches and is used to iterate over the raw logs and unpacked data for ActivateForceBatches events raised by the ZkEVM contract. -type ZkEVMActivateForceBatchesIterator struct { - Event *ZkEVMActivateForceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMActivateForceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMActivateForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMActivateForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMActivateForceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMActivateForceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMActivateForceBatches represents a ActivateForceBatches event raised by the ZkEVM contract. -type ZkEVMActivateForceBatches struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterActivateForceBatches is a free log retrieval operation binding the contract event 0x854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f. -// -// Solidity: event ActivateForceBatches() -func (_ZkEVM *ZkEVMFilterer) FilterActivateForceBatches(opts *bind.FilterOpts) (*ZkEVMActivateForceBatchesIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "ActivateForceBatches") - if err != nil { - return nil, err - } - return &ZkEVMActivateForceBatchesIterator{contract: _ZkEVM.contract, event: "ActivateForceBatches", logs: logs, sub: sub}, nil -} - -// WatchActivateForceBatches is a free log subscription operation binding the contract event 0x854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f. -// -// Solidity: event ActivateForceBatches() -func (_ZkEVM *ZkEVMFilterer) WatchActivateForceBatches(opts *bind.WatchOpts, sink chan<- *ZkEVMActivateForceBatches) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "ActivateForceBatches") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMActivateForceBatches) - if err := _ZkEVM.contract.UnpackLog(event, "ActivateForceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseActivateForceBatches is a log parse operation binding the contract event 0x854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f. -// -// Solidity: event ActivateForceBatches() -func (_ZkEVM *ZkEVMFilterer) ParseActivateForceBatches(log types.Log) (*ZkEVMActivateForceBatches, error) { - event := new(ZkEVMActivateForceBatches) - if err := _ZkEVM.contract.UnpackLog(event, "ActivateForceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMConsolidatePendingStateIterator is returned from FilterConsolidatePendingState and is used to iterate over the raw logs and unpacked data for ConsolidatePendingState events raised by the ZkEVM contract. -type ZkEVMConsolidatePendingStateIterator struct { - Event *ZkEVMConsolidatePendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMConsolidatePendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMConsolidatePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMConsolidatePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMConsolidatePendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMConsolidatePendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMConsolidatePendingState represents a ConsolidatePendingState event raised by the ZkEVM contract. -type ZkEVMConsolidatePendingState struct { - NumBatch uint64 - StateRoot [32]byte - PendingStateNum uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterConsolidatePendingState is a free log retrieval operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_ZkEVM *ZkEVMFilterer) FilterConsolidatePendingState(opts *bind.FilterOpts, numBatch []uint64, pendingStateNum []uint64) (*ZkEVMConsolidatePendingStateIterator, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var pendingStateNumRule []interface{} - for _, pendingStateNumItem := range pendingStateNum { - pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) - if err != nil { - return nil, err - } - return &ZkEVMConsolidatePendingStateIterator{contract: _ZkEVM.contract, event: "ConsolidatePendingState", logs: logs, sub: sub}, nil -} - -// WatchConsolidatePendingState is a free log subscription operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_ZkEVM *ZkEVMFilterer) WatchConsolidatePendingState(opts *bind.WatchOpts, sink chan<- *ZkEVMConsolidatePendingState, numBatch []uint64, pendingStateNum []uint64) (event.Subscription, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var pendingStateNumRule []interface{} - for _, pendingStateNumItem := range pendingStateNum { - pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMConsolidatePendingState) - if err := _ZkEVM.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseConsolidatePendingState is a log parse operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_ZkEVM *ZkEVMFilterer) ParseConsolidatePendingState(log types.Log) (*ZkEVMConsolidatePendingState, error) { - event := new(ZkEVMConsolidatePendingState) - if err := _ZkEVM.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMEmergencyStateActivatedIterator is returned from FilterEmergencyStateActivated and is used to iterate over the raw logs and unpacked data for EmergencyStateActivated events raised by the ZkEVM contract. -type ZkEVMEmergencyStateActivatedIterator struct { - Event *ZkEVMEmergencyStateActivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMEmergencyStateActivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMEmergencyStateActivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMEmergencyStateActivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMEmergencyStateActivated represents a EmergencyStateActivated event raised by the ZkEVM contract. -type ZkEVMEmergencyStateActivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateActivated is a free log retrieval operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_ZkEVM *ZkEVMFilterer) FilterEmergencyStateActivated(opts *bind.FilterOpts) (*ZkEVMEmergencyStateActivatedIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return &ZkEVMEmergencyStateActivatedIterator{contract: _ZkEVM.contract, event: "EmergencyStateActivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateActivated is a free log subscription operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_ZkEVM *ZkEVMFilterer) WatchEmergencyStateActivated(opts *bind.WatchOpts, sink chan<- *ZkEVMEmergencyStateActivated) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMEmergencyStateActivated) - if err := _ZkEVM.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateActivated is a log parse operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_ZkEVM *ZkEVMFilterer) ParseEmergencyStateActivated(log types.Log) (*ZkEVMEmergencyStateActivated, error) { - event := new(ZkEVMEmergencyStateActivated) - if err := _ZkEVM.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMEmergencyStateDeactivatedIterator is returned from FilterEmergencyStateDeactivated and is used to iterate over the raw logs and unpacked data for EmergencyStateDeactivated events raised by the ZkEVM contract. -type ZkEVMEmergencyStateDeactivatedIterator struct { - Event *ZkEVMEmergencyStateDeactivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMEmergencyStateDeactivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMEmergencyStateDeactivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMEmergencyStateDeactivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMEmergencyStateDeactivated represents a EmergencyStateDeactivated event raised by the ZkEVM contract. -type ZkEVMEmergencyStateDeactivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateDeactivated is a free log retrieval operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_ZkEVM *ZkEVMFilterer) FilterEmergencyStateDeactivated(opts *bind.FilterOpts) (*ZkEVMEmergencyStateDeactivatedIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return &ZkEVMEmergencyStateDeactivatedIterator{contract: _ZkEVM.contract, event: "EmergencyStateDeactivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateDeactivated is a free log subscription operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_ZkEVM *ZkEVMFilterer) WatchEmergencyStateDeactivated(opts *bind.WatchOpts, sink chan<- *ZkEVMEmergencyStateDeactivated) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMEmergencyStateDeactivated) - if err := _ZkEVM.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateDeactivated is a log parse operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_ZkEVM *ZkEVMFilterer) ParseEmergencyStateDeactivated(log types.Log) (*ZkEVMEmergencyStateDeactivated, error) { - event := new(ZkEVMEmergencyStateDeactivated) - if err := _ZkEVM.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMForceBatchIterator is returned from FilterForceBatch and is used to iterate over the raw logs and unpacked data for ForceBatch events raised by the ZkEVM contract. -type ZkEVMForceBatchIterator struct { - Event *ZkEVMForceBatch // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMForceBatchIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMForceBatch) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMForceBatch) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMForceBatchIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMForceBatchIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMForceBatch represents a ForceBatch event raised by the ZkEVM contract. -type ZkEVMForceBatch struct { - ForceBatchNum uint64 - LastGlobalExitRoot [32]byte - Sequencer common.Address - Transactions []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterForceBatch is a free log retrieval operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_ZkEVM *ZkEVMFilterer) FilterForceBatch(opts *bind.FilterOpts, forceBatchNum []uint64) (*ZkEVMForceBatchIterator, error) { - var forceBatchNumRule []interface{} - for _, forceBatchNumItem := range forceBatchNum { - forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "ForceBatch", forceBatchNumRule) - if err != nil { - return nil, err - } - return &ZkEVMForceBatchIterator{contract: _ZkEVM.contract, event: "ForceBatch", logs: logs, sub: sub}, nil -} - -// WatchForceBatch is a free log subscription operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_ZkEVM *ZkEVMFilterer) WatchForceBatch(opts *bind.WatchOpts, sink chan<- *ZkEVMForceBatch, forceBatchNum []uint64) (event.Subscription, error) { - var forceBatchNumRule []interface{} - for _, forceBatchNumItem := range forceBatchNum { - forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "ForceBatch", forceBatchNumRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMForceBatch) - if err := _ZkEVM.contract.UnpackLog(event, "ForceBatch", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseForceBatch is a log parse operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_ZkEVM *ZkEVMFilterer) ParseForceBatch(log types.Log) (*ZkEVMForceBatch, error) { - event := new(ZkEVMForceBatch) - if err := _ZkEVM.contract.UnpackLog(event, "ForceBatch", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ZkEVM contract. -type ZkEVMInitializedIterator struct { - Event *ZkEVMInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMInitialized represents a Initialized event raised by the ZkEVM contract. -type ZkEVMInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ZkEVM *ZkEVMFilterer) FilterInitialized(opts *bind.FilterOpts) (*ZkEVMInitializedIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ZkEVMInitializedIterator{contract: _ZkEVM.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ZkEVM *ZkEVMFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ZkEVMInitialized) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMInitialized) - if err := _ZkEVM.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ZkEVM *ZkEVMFilterer) ParseInitialized(log types.Log) (*ZkEVMInitialized, error) { - event := new(ZkEVMInitialized) - if err := _ZkEVM.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMOverridePendingStateIterator is returned from FilterOverridePendingState and is used to iterate over the raw logs and unpacked data for OverridePendingState events raised by the ZkEVM contract. -type ZkEVMOverridePendingStateIterator struct { - Event *ZkEVMOverridePendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMOverridePendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMOverridePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMOverridePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMOverridePendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMOverridePendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMOverridePendingState represents a OverridePendingState event raised by the ZkEVM contract. -type ZkEVMOverridePendingState struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOverridePendingState is a free log retrieval operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) FilterOverridePendingState(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*ZkEVMOverridePendingStateIterator, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &ZkEVMOverridePendingStateIterator{contract: _ZkEVM.contract, event: "OverridePendingState", logs: logs, sub: sub}, nil -} - -// WatchOverridePendingState is a free log subscription operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) WatchOverridePendingState(opts *bind.WatchOpts, sink chan<- *ZkEVMOverridePendingState, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMOverridePendingState) - if err := _ZkEVM.contract.UnpackLog(event, "OverridePendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOverridePendingState is a log parse operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) ParseOverridePendingState(log types.Log) (*ZkEVMOverridePendingState, error) { - event := new(ZkEVMOverridePendingState) - if err := _ZkEVM.contract.UnpackLog(event, "OverridePendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ZkEVM contract. -type ZkEVMOwnershipTransferredIterator struct { - Event *ZkEVMOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMOwnershipTransferred represents a OwnershipTransferred event raised by the ZkEVM contract. -type ZkEVMOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZkEVM *ZkEVMFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZkEVMOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ZkEVMOwnershipTransferredIterator{contract: _ZkEVM.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZkEVM *ZkEVMFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ZkEVMOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMOwnershipTransferred) - if err := _ZkEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZkEVM *ZkEVMFilterer) ParseOwnershipTransferred(log types.Log) (*ZkEVMOwnershipTransferred, error) { - event := new(ZkEVMOwnershipTransferred) - if err := _ZkEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMProveNonDeterministicPendingStateIterator is returned from FilterProveNonDeterministicPendingState and is used to iterate over the raw logs and unpacked data for ProveNonDeterministicPendingState events raised by the ZkEVM contract. -type ZkEVMProveNonDeterministicPendingStateIterator struct { - Event *ZkEVMProveNonDeterministicPendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMProveNonDeterministicPendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMProveNonDeterministicPendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMProveNonDeterministicPendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMProveNonDeterministicPendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMProveNonDeterministicPendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMProveNonDeterministicPendingState represents a ProveNonDeterministicPendingState event raised by the ZkEVM contract. -type ZkEVMProveNonDeterministicPendingState struct { - StoredStateRoot [32]byte - ProvedStateRoot [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterProveNonDeterministicPendingState is a free log retrieval operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_ZkEVM *ZkEVMFilterer) FilterProveNonDeterministicPendingState(opts *bind.FilterOpts) (*ZkEVMProveNonDeterministicPendingStateIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "ProveNonDeterministicPendingState") - if err != nil { - return nil, err - } - return &ZkEVMProveNonDeterministicPendingStateIterator{contract: _ZkEVM.contract, event: "ProveNonDeterministicPendingState", logs: logs, sub: sub}, nil -} - -// WatchProveNonDeterministicPendingState is a free log subscription operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_ZkEVM *ZkEVMFilterer) WatchProveNonDeterministicPendingState(opts *bind.WatchOpts, sink chan<- *ZkEVMProveNonDeterministicPendingState) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "ProveNonDeterministicPendingState") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMProveNonDeterministicPendingState) - if err := _ZkEVM.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseProveNonDeterministicPendingState is a log parse operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_ZkEVM *ZkEVMFilterer) ParseProveNonDeterministicPendingState(log types.Log) (*ZkEVMProveNonDeterministicPendingState, error) { - event := new(ZkEVMProveNonDeterministicPendingState) - if err := _ZkEVM.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSequenceBatchesIterator is returned from FilterSequenceBatches and is used to iterate over the raw logs and unpacked data for SequenceBatches events raised by the ZkEVM contract. -type ZkEVMSequenceBatchesIterator struct { - Event *ZkEVMSequenceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSequenceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSequenceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSequenceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSequenceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSequenceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSequenceBatches represents a SequenceBatches event raised by the ZkEVM contract. -type ZkEVMSequenceBatches struct { - NumBatch uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSequenceBatches is a free log retrieval operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_ZkEVM *ZkEVMFilterer) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*ZkEVMSequenceBatchesIterator, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SequenceBatches", numBatchRule) - if err != nil { - return nil, err - } - return &ZkEVMSequenceBatchesIterator{contract: _ZkEVM.contract, event: "SequenceBatches", logs: logs, sub: sub}, nil -} - -// WatchSequenceBatches is a free log subscription operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_ZkEVM *ZkEVMFilterer) WatchSequenceBatches(opts *bind.WatchOpts, sink chan<- *ZkEVMSequenceBatches, numBatch []uint64) (event.Subscription, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SequenceBatches", numBatchRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSequenceBatches) - if err := _ZkEVM.contract.UnpackLog(event, "SequenceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSequenceBatches is a log parse operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_ZkEVM *ZkEVMFilterer) ParseSequenceBatches(log types.Log) (*ZkEVMSequenceBatches, error) { - event := new(ZkEVMSequenceBatches) - if err := _ZkEVM.contract.UnpackLog(event, "SequenceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSequenceForceBatchesIterator is returned from FilterSequenceForceBatches and is used to iterate over the raw logs and unpacked data for SequenceForceBatches events raised by the ZkEVM contract. -type ZkEVMSequenceForceBatchesIterator struct { - Event *ZkEVMSequenceForceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSequenceForceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSequenceForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSequenceForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSequenceForceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSequenceForceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSequenceForceBatches represents a SequenceForceBatches event raised by the ZkEVM contract. -type ZkEVMSequenceForceBatches struct { - NumBatch uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSequenceForceBatches is a free log retrieval operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_ZkEVM *ZkEVMFilterer) FilterSequenceForceBatches(opts *bind.FilterOpts, numBatch []uint64) (*ZkEVMSequenceForceBatchesIterator, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SequenceForceBatches", numBatchRule) - if err != nil { - return nil, err - } - return &ZkEVMSequenceForceBatchesIterator{contract: _ZkEVM.contract, event: "SequenceForceBatches", logs: logs, sub: sub}, nil -} - -// WatchSequenceForceBatches is a free log subscription operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_ZkEVM *ZkEVMFilterer) WatchSequenceForceBatches(opts *bind.WatchOpts, sink chan<- *ZkEVMSequenceForceBatches, numBatch []uint64) (event.Subscription, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SequenceForceBatches", numBatchRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSequenceForceBatches) - if err := _ZkEVM.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSequenceForceBatches is a log parse operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_ZkEVM *ZkEVMFilterer) ParseSequenceForceBatches(log types.Log) (*ZkEVMSequenceForceBatches, error) { - event := new(ZkEVMSequenceForceBatches) - if err := _ZkEVM.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetForceBatchTimeoutIterator is returned from FilterSetForceBatchTimeout and is used to iterate over the raw logs and unpacked data for SetForceBatchTimeout events raised by the ZkEVM contract. -type ZkEVMSetForceBatchTimeoutIterator struct { - Event *ZkEVMSetForceBatchTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetForceBatchTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetForceBatchTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetForceBatchTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetForceBatchTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetForceBatchTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetForceBatchTimeout represents a SetForceBatchTimeout event raised by the ZkEVM contract. -type ZkEVMSetForceBatchTimeout struct { - NewforceBatchTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetForceBatchTimeout is a free log retrieval operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. -// -// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) -func (_ZkEVM *ZkEVMFilterer) FilterSetForceBatchTimeout(opts *bind.FilterOpts) (*ZkEVMSetForceBatchTimeoutIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetForceBatchTimeout") - if err != nil { - return nil, err - } - return &ZkEVMSetForceBatchTimeoutIterator{contract: _ZkEVM.contract, event: "SetForceBatchTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetForceBatchTimeout is a free log subscription operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. -// -// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) -func (_ZkEVM *ZkEVMFilterer) WatchSetForceBatchTimeout(opts *bind.WatchOpts, sink chan<- *ZkEVMSetForceBatchTimeout) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetForceBatchTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetForceBatchTimeout) - if err := _ZkEVM.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetForceBatchTimeout is a log parse operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. -// -// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) -func (_ZkEVM *ZkEVMFilterer) ParseSetForceBatchTimeout(log types.Log) (*ZkEVMSetForceBatchTimeout, error) { - event := new(ZkEVMSetForceBatchTimeout) - if err := _ZkEVM.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetMultiplierBatchFeeIterator is returned from FilterSetMultiplierBatchFee and is used to iterate over the raw logs and unpacked data for SetMultiplierBatchFee events raised by the ZkEVM contract. -type ZkEVMSetMultiplierBatchFeeIterator struct { - Event *ZkEVMSetMultiplierBatchFee // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetMultiplierBatchFeeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetMultiplierBatchFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetMultiplierBatchFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetMultiplierBatchFeeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetMultiplierBatchFeeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetMultiplierBatchFee represents a SetMultiplierBatchFee event raised by the ZkEVM contract. -type ZkEVMSetMultiplierBatchFee struct { - NewMultiplierBatchFee uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetMultiplierBatchFee is a free log retrieval operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. -// -// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) -func (_ZkEVM *ZkEVMFilterer) FilterSetMultiplierBatchFee(opts *bind.FilterOpts) (*ZkEVMSetMultiplierBatchFeeIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetMultiplierBatchFee") - if err != nil { - return nil, err - } - return &ZkEVMSetMultiplierBatchFeeIterator{contract: _ZkEVM.contract, event: "SetMultiplierBatchFee", logs: logs, sub: sub}, nil -} - -// WatchSetMultiplierBatchFee is a free log subscription operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. -// -// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) -func (_ZkEVM *ZkEVMFilterer) WatchSetMultiplierBatchFee(opts *bind.WatchOpts, sink chan<- *ZkEVMSetMultiplierBatchFee) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetMultiplierBatchFee") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetMultiplierBatchFee) - if err := _ZkEVM.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetMultiplierBatchFee is a log parse operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. -// -// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) -func (_ZkEVM *ZkEVMFilterer) ParseSetMultiplierBatchFee(log types.Log) (*ZkEVMSetMultiplierBatchFee, error) { - event := new(ZkEVMSetMultiplierBatchFee) - if err := _ZkEVM.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetPendingStateTimeoutIterator is returned from FilterSetPendingStateTimeout and is used to iterate over the raw logs and unpacked data for SetPendingStateTimeout events raised by the ZkEVM contract. -type ZkEVMSetPendingStateTimeoutIterator struct { - Event *ZkEVMSetPendingStateTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetPendingStateTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetPendingStateTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetPendingStateTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetPendingStateTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetPendingStateTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetPendingStateTimeout represents a SetPendingStateTimeout event raised by the ZkEVM contract. -type ZkEVMSetPendingStateTimeout struct { - NewPendingStateTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetPendingStateTimeout is a free log retrieval operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_ZkEVM *ZkEVMFilterer) FilterSetPendingStateTimeout(opts *bind.FilterOpts) (*ZkEVMSetPendingStateTimeoutIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetPendingStateTimeout") - if err != nil { - return nil, err - } - return &ZkEVMSetPendingStateTimeoutIterator{contract: _ZkEVM.contract, event: "SetPendingStateTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetPendingStateTimeout is a free log subscription operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_ZkEVM *ZkEVMFilterer) WatchSetPendingStateTimeout(opts *bind.WatchOpts, sink chan<- *ZkEVMSetPendingStateTimeout) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetPendingStateTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetPendingStateTimeout) - if err := _ZkEVM.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetPendingStateTimeout is a log parse operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_ZkEVM *ZkEVMFilterer) ParseSetPendingStateTimeout(log types.Log) (*ZkEVMSetPendingStateTimeout, error) { - event := new(ZkEVMSetPendingStateTimeout) - if err := _ZkEVM.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetTrustedAggregatorIterator is returned from FilterSetTrustedAggregator and is used to iterate over the raw logs and unpacked data for SetTrustedAggregator events raised by the ZkEVM contract. -type ZkEVMSetTrustedAggregatorIterator struct { - Event *ZkEVMSetTrustedAggregator // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetTrustedAggregatorIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetTrustedAggregatorIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetTrustedAggregatorIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetTrustedAggregator represents a SetTrustedAggregator event raised by the ZkEVM contract. -type ZkEVMSetTrustedAggregator struct { - NewTrustedAggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedAggregator is a free log retrieval operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_ZkEVM *ZkEVMFilterer) FilterSetTrustedAggregator(opts *bind.FilterOpts) (*ZkEVMSetTrustedAggregatorIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetTrustedAggregator") - if err != nil { - return nil, err - } - return &ZkEVMSetTrustedAggregatorIterator{contract: _ZkEVM.contract, event: "SetTrustedAggregator", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedAggregator is a free log subscription operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_ZkEVM *ZkEVMFilterer) WatchSetTrustedAggregator(opts *bind.WatchOpts, sink chan<- *ZkEVMSetTrustedAggregator) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetTrustedAggregator") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetTrustedAggregator) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedAggregator is a log parse operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_ZkEVM *ZkEVMFilterer) ParseSetTrustedAggregator(log types.Log) (*ZkEVMSetTrustedAggregator, error) { - event := new(ZkEVMSetTrustedAggregator) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetTrustedAggregatorTimeoutIterator is returned from FilterSetTrustedAggregatorTimeout and is used to iterate over the raw logs and unpacked data for SetTrustedAggregatorTimeout events raised by the ZkEVM contract. -type ZkEVMSetTrustedAggregatorTimeoutIterator struct { - Event *ZkEVMSetTrustedAggregatorTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetTrustedAggregatorTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedAggregatorTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedAggregatorTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetTrustedAggregatorTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetTrustedAggregatorTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetTrustedAggregatorTimeout represents a SetTrustedAggregatorTimeout event raised by the ZkEVM contract. -type ZkEVMSetTrustedAggregatorTimeout struct { - NewTrustedAggregatorTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedAggregatorTimeout is a free log retrieval operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_ZkEVM *ZkEVMFilterer) FilterSetTrustedAggregatorTimeout(opts *bind.FilterOpts) (*ZkEVMSetTrustedAggregatorTimeoutIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetTrustedAggregatorTimeout") - if err != nil { - return nil, err - } - return &ZkEVMSetTrustedAggregatorTimeoutIterator{contract: _ZkEVM.contract, event: "SetTrustedAggregatorTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedAggregatorTimeout is a free log subscription operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_ZkEVM *ZkEVMFilterer) WatchSetTrustedAggregatorTimeout(opts *bind.WatchOpts, sink chan<- *ZkEVMSetTrustedAggregatorTimeout) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetTrustedAggregatorTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetTrustedAggregatorTimeout) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedAggregatorTimeout is a log parse operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_ZkEVM *ZkEVMFilterer) ParseSetTrustedAggregatorTimeout(log types.Log) (*ZkEVMSetTrustedAggregatorTimeout, error) { - event := new(ZkEVMSetTrustedAggregatorTimeout) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetTrustedSequencerIterator is returned from FilterSetTrustedSequencer and is used to iterate over the raw logs and unpacked data for SetTrustedSequencer events raised by the ZkEVM contract. -type ZkEVMSetTrustedSequencerIterator struct { - Event *ZkEVMSetTrustedSequencer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetTrustedSequencerIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedSequencer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedSequencer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetTrustedSequencerIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetTrustedSequencerIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetTrustedSequencer represents a SetTrustedSequencer event raised by the ZkEVM contract. -type ZkEVMSetTrustedSequencer struct { - NewTrustedSequencer common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedSequencer is a free log retrieval operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_ZkEVM *ZkEVMFilterer) FilterSetTrustedSequencer(opts *bind.FilterOpts) (*ZkEVMSetTrustedSequencerIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetTrustedSequencer") - if err != nil { - return nil, err - } - return &ZkEVMSetTrustedSequencerIterator{contract: _ZkEVM.contract, event: "SetTrustedSequencer", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedSequencer is a free log subscription operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_ZkEVM *ZkEVMFilterer) WatchSetTrustedSequencer(opts *bind.WatchOpts, sink chan<- *ZkEVMSetTrustedSequencer) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetTrustedSequencer") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetTrustedSequencer) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedSequencer is a log parse operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_ZkEVM *ZkEVMFilterer) ParseSetTrustedSequencer(log types.Log) (*ZkEVMSetTrustedSequencer, error) { - event := new(ZkEVMSetTrustedSequencer) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetTrustedSequencerURLIterator is returned from FilterSetTrustedSequencerURL and is used to iterate over the raw logs and unpacked data for SetTrustedSequencerURL events raised by the ZkEVM contract. -type ZkEVMSetTrustedSequencerURLIterator struct { - Event *ZkEVMSetTrustedSequencerURL // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetTrustedSequencerURLIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedSequencerURL) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetTrustedSequencerURL) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetTrustedSequencerURLIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetTrustedSequencerURLIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetTrustedSequencerURL represents a SetTrustedSequencerURL event raised by the ZkEVM contract. -type ZkEVMSetTrustedSequencerURL struct { - NewTrustedSequencerURL string - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedSequencerURL is a free log retrieval operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_ZkEVM *ZkEVMFilterer) FilterSetTrustedSequencerURL(opts *bind.FilterOpts) (*ZkEVMSetTrustedSequencerURLIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetTrustedSequencerURL") - if err != nil { - return nil, err - } - return &ZkEVMSetTrustedSequencerURLIterator{contract: _ZkEVM.contract, event: "SetTrustedSequencerURL", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedSequencerURL is a free log subscription operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_ZkEVM *ZkEVMFilterer) WatchSetTrustedSequencerURL(opts *bind.WatchOpts, sink chan<- *ZkEVMSetTrustedSequencerURL) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetTrustedSequencerURL") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetTrustedSequencerURL) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedSequencerURL is a log parse operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_ZkEVM *ZkEVMFilterer) ParseSetTrustedSequencerURL(log types.Log) (*ZkEVMSetTrustedSequencerURL, error) { - event := new(ZkEVMSetTrustedSequencerURL) - if err := _ZkEVM.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMSetVerifyBatchTimeTargetIterator is returned from FilterSetVerifyBatchTimeTarget and is used to iterate over the raw logs and unpacked data for SetVerifyBatchTimeTarget events raised by the ZkEVM contract. -type ZkEVMSetVerifyBatchTimeTargetIterator struct { - Event *ZkEVMSetVerifyBatchTimeTarget // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMSetVerifyBatchTimeTargetIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetVerifyBatchTimeTarget) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMSetVerifyBatchTimeTarget) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMSetVerifyBatchTimeTargetIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMSetVerifyBatchTimeTargetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMSetVerifyBatchTimeTarget represents a SetVerifyBatchTimeTarget event raised by the ZkEVM contract. -type ZkEVMSetVerifyBatchTimeTarget struct { - NewVerifyBatchTimeTarget uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetVerifyBatchTimeTarget is a free log retrieval operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. -// -// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) -func (_ZkEVM *ZkEVMFilterer) FilterSetVerifyBatchTimeTarget(opts *bind.FilterOpts) (*ZkEVMSetVerifyBatchTimeTargetIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "SetVerifyBatchTimeTarget") - if err != nil { - return nil, err - } - return &ZkEVMSetVerifyBatchTimeTargetIterator{contract: _ZkEVM.contract, event: "SetVerifyBatchTimeTarget", logs: logs, sub: sub}, nil -} - -// WatchSetVerifyBatchTimeTarget is a free log subscription operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. -// -// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) -func (_ZkEVM *ZkEVMFilterer) WatchSetVerifyBatchTimeTarget(opts *bind.WatchOpts, sink chan<- *ZkEVMSetVerifyBatchTimeTarget) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "SetVerifyBatchTimeTarget") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMSetVerifyBatchTimeTarget) - if err := _ZkEVM.contract.UnpackLog(event, "SetVerifyBatchTimeTarget", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetVerifyBatchTimeTarget is a log parse operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. -// -// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) -func (_ZkEVM *ZkEVMFilterer) ParseSetVerifyBatchTimeTarget(log types.Log) (*ZkEVMSetVerifyBatchTimeTarget, error) { - event := new(ZkEVMSetVerifyBatchTimeTarget) - if err := _ZkEVM.contract.UnpackLog(event, "SetVerifyBatchTimeTarget", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMTransferAdminRoleIterator is returned from FilterTransferAdminRole and is used to iterate over the raw logs and unpacked data for TransferAdminRole events raised by the ZkEVM contract. -type ZkEVMTransferAdminRoleIterator struct { - Event *ZkEVMTransferAdminRole // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMTransferAdminRoleIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMTransferAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMTransferAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMTransferAdminRoleIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMTransferAdminRoleIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMTransferAdminRole represents a TransferAdminRole event raised by the ZkEVM contract. -type ZkEVMTransferAdminRole struct { - NewPendingAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransferAdminRole is a free log retrieval operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. -// -// Solidity: event TransferAdminRole(address newPendingAdmin) -func (_ZkEVM *ZkEVMFilterer) FilterTransferAdminRole(opts *bind.FilterOpts) (*ZkEVMTransferAdminRoleIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "TransferAdminRole") - if err != nil { - return nil, err - } - return &ZkEVMTransferAdminRoleIterator{contract: _ZkEVM.contract, event: "TransferAdminRole", logs: logs, sub: sub}, nil -} - -// WatchTransferAdminRole is a free log subscription operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. -// -// Solidity: event TransferAdminRole(address newPendingAdmin) -func (_ZkEVM *ZkEVMFilterer) WatchTransferAdminRole(opts *bind.WatchOpts, sink chan<- *ZkEVMTransferAdminRole) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "TransferAdminRole") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMTransferAdminRole) - if err := _ZkEVM.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransferAdminRole is a log parse operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. -// -// Solidity: event TransferAdminRole(address newPendingAdmin) -func (_ZkEVM *ZkEVMFilterer) ParseTransferAdminRole(log types.Log) (*ZkEVMTransferAdminRole, error) { - event := new(ZkEVMTransferAdminRole) - if err := _ZkEVM.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMUpdateZkEVMVersionIterator is returned from FilterUpdateZkEVMVersion and is used to iterate over the raw logs and unpacked data for UpdateZkEVMVersion events raised by the ZkEVM contract. -type ZkEVMUpdateZkEVMVersionIterator struct { - Event *ZkEVMUpdateZkEVMVersion // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMUpdateZkEVMVersionIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMUpdateZkEVMVersion) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMUpdateZkEVMVersion) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMUpdateZkEVMVersionIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMUpdateZkEVMVersionIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMUpdateZkEVMVersion represents a UpdateZkEVMVersion event raised by the ZkEVM contract. -type ZkEVMUpdateZkEVMVersion struct { - NumBatch uint64 - ForkID uint64 - Version string - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdateZkEVMVersion is a free log retrieval operation binding the contract event 0xed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd6. -// -// Solidity: event UpdateZkEVMVersion(uint64 numBatch, uint64 forkID, string version) -func (_ZkEVM *ZkEVMFilterer) FilterUpdateZkEVMVersion(opts *bind.FilterOpts) (*ZkEVMUpdateZkEVMVersionIterator, error) { - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "UpdateZkEVMVersion") - if err != nil { - return nil, err - } - return &ZkEVMUpdateZkEVMVersionIterator{contract: _ZkEVM.contract, event: "UpdateZkEVMVersion", logs: logs, sub: sub}, nil -} - -// WatchUpdateZkEVMVersion is a free log subscription operation binding the contract event 0xed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd6. -// -// Solidity: event UpdateZkEVMVersion(uint64 numBatch, uint64 forkID, string version) -func (_ZkEVM *ZkEVMFilterer) WatchUpdateZkEVMVersion(opts *bind.WatchOpts, sink chan<- *ZkEVMUpdateZkEVMVersion) (event.Subscription, error) { - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "UpdateZkEVMVersion") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMUpdateZkEVMVersion) - if err := _ZkEVM.contract.UnpackLog(event, "UpdateZkEVMVersion", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdateZkEVMVersion is a log parse operation binding the contract event 0xed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd6. -// -// Solidity: event UpdateZkEVMVersion(uint64 numBatch, uint64 forkID, string version) -func (_ZkEVM *ZkEVMFilterer) ParseUpdateZkEVMVersion(log types.Log) (*ZkEVMUpdateZkEVMVersion, error) { - event := new(ZkEVMUpdateZkEVMVersion) - if err := _ZkEVM.contract.UnpackLog(event, "UpdateZkEVMVersion", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMVerifyBatchesIterator is returned from FilterVerifyBatches and is used to iterate over the raw logs and unpacked data for VerifyBatches events raised by the ZkEVM contract. -type ZkEVMVerifyBatchesIterator struct { - Event *ZkEVMVerifyBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMVerifyBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMVerifyBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMVerifyBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMVerifyBatches represents a VerifyBatches event raised by the ZkEVM contract. -type ZkEVMVerifyBatches struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterVerifyBatches is a free log retrieval operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) FilterVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*ZkEVMVerifyBatchesIterator, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &ZkEVMVerifyBatchesIterator{contract: _ZkEVM.contract, event: "VerifyBatches", logs: logs, sub: sub}, nil -} - -// WatchVerifyBatches is a free log subscription operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) WatchVerifyBatches(opts *bind.WatchOpts, sink chan<- *ZkEVMVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMVerifyBatches) - if err := _ZkEVM.contract.UnpackLog(event, "VerifyBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseVerifyBatches is a log parse operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) ParseVerifyBatches(log types.Log) (*ZkEVMVerifyBatches, error) { - event := new(ZkEVMVerifyBatches) - if err := _ZkEVM.contract.UnpackLog(event, "VerifyBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZkEVMVerifyBatchesTrustedAggregatorIterator is returned from FilterVerifyBatchesTrustedAggregator and is used to iterate over the raw logs and unpacked data for VerifyBatchesTrustedAggregator events raised by the ZkEVM contract. -type ZkEVMVerifyBatchesTrustedAggregatorIterator struct { - Event *ZkEVMVerifyBatchesTrustedAggregator // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZkEVMVerifyBatchesTrustedAggregatorIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZkEVMVerifyBatchesTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZkEVMVerifyBatchesTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZkEVMVerifyBatchesTrustedAggregatorIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZkEVMVerifyBatchesTrustedAggregatorIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZkEVMVerifyBatchesTrustedAggregator represents a VerifyBatchesTrustedAggregator event raised by the ZkEVM contract. -type ZkEVMVerifyBatchesTrustedAggregator struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterVerifyBatchesTrustedAggregator is a free log retrieval operation binding the contract event 0xcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe. -// -// Solidity: event VerifyBatchesTrustedAggregator(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) FilterVerifyBatchesTrustedAggregator(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*ZkEVMVerifyBatchesTrustedAggregatorIterator, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _ZkEVM.contract.FilterLogs(opts, "VerifyBatchesTrustedAggregator", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &ZkEVMVerifyBatchesTrustedAggregatorIterator{contract: _ZkEVM.contract, event: "VerifyBatchesTrustedAggregator", logs: logs, sub: sub}, nil -} - -// WatchVerifyBatchesTrustedAggregator is a free log subscription operation binding the contract event 0xcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe. -// -// Solidity: event VerifyBatchesTrustedAggregator(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) WatchVerifyBatchesTrustedAggregator(opts *bind.WatchOpts, sink chan<- *ZkEVMVerifyBatchesTrustedAggregator, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _ZkEVM.contract.WatchLogs(opts, "VerifyBatchesTrustedAggregator", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZkEVMVerifyBatchesTrustedAggregator) - if err := _ZkEVM.contract.UnpackLog(event, "VerifyBatchesTrustedAggregator", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseVerifyBatchesTrustedAggregator is a log parse operation binding the contract event 0xcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe. -// -// Solidity: event VerifyBatchesTrustedAggregator(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_ZkEVM *ZkEVMFilterer) ParseVerifyBatchesTrustedAggregator(log types.Log) (*ZkEVMVerifyBatchesTrustedAggregator, error) { - event := new(ZkEVMVerifyBatchesTrustedAggregator) - if err := _ZkEVM.contract.UnpackLog(event, "VerifyBatchesTrustedAggregator", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/internal/schema/blob.go b/internal/schema/blob.go new file mode 100644 index 0000000..aebc67d --- /dev/null +++ b/internal/schema/blob.go @@ -0,0 +1,17 @@ +package schema + +type BlobInfo struct { + Base + BlockNumber int64 `json:"block_number"` + BlockHashHex string `json:"block_hash_hex"` + BlockTime uint64 `json:"block_time"` + BlobVersionedHash string `json:"blob_versioned_hash"` + BlobHashesIndex uint64 `json:"blob_hashes_index"` + BlobSideCarIndex uint64 `json:"blob_side_car_index"` + BlobSideCarCommitment string `json:"blob_side_car_commitment"` + Blob string `json:"blob"` +} + +func (BlobInfo) TableName() string { + return "blob_info" +} diff --git a/internal/schema/proposal.go b/internal/schema/proposal.go index 5aae254..163c412 100644 --- a/internal/schema/proposal.go +++ b/internal/schema/proposal.go @@ -1,27 +1,19 @@ package schema -const ( - VotingStatus = 0 - PendingStatus = 1 - SucceedStatus = 2 - TimeoutStatus = 3 -) - type Proposal struct { Base - ProposalID uint64 `json:"proposal_id"` - Proposer string `json:"proposer"` - StateRootHash string `json:"state_root_hash"` - ProofRootHash string `json:"proof_root_hash"` - StartBatchNum uint64 `json:"start_batch_num"` - EndBatchNum uint64 `json:"end_batch_num"` - BtcCommitTxHash string `json:"btc_commit_tx_hash"` - BtcRevealTxHash string `json:"btc_reveal_tx_hash"` - BlockHeight uint64 `json:"block_height"` - Winner string `json:"winner"` - Status uint64 `json:"status"` + ProposalID uint64 `json:"proposal_id"` + StateRootHash string `json:"state_root_hash"` + ProofRootHash string `json:"proof_root_hash"` + StartBatchNum uint64 `json:"start_batch_num"` + EndBatchNum uint64 `json:"end_batch_num"` + BtcTxHash string `json:"btc_tx_hash"` + Winner string `json:"winner"` + Status uint64 `json:"status"` + GenerateDetailsFile bool `json:"generate_details_file"` + ArTxHash string `json:"ar_tx_hash"` } func (Proposal) TableName() string { - return "`proposal`" + return "proposal" } diff --git a/internal/schema/proposal_status.go b/internal/schema/proposal_status.go new file mode 100644 index 0000000..928534a --- /dev/null +++ b/internal/schema/proposal_status.go @@ -0,0 +1,13 @@ +package schema + +const ( + ProposalVotingStatus = 0 // 0 Proposer can submit proof and vote for the proposal + ProposalPendingStatus = 1 // 1 Proposer can submit decentralized storage tx for the proposal + ProposalCommitting = 2 // 2 Proposer can submit bitcoin tx for the proposal + ProposalSucceedStatus = 3 // 3 Proposal is success + ProposalTimeoutStatus = 4 // 4 Proposal is timed out + + ProposalTypeStateRoot = 0 + ProposalTypeTxsRoot = 1 + DsTypeArWeave = 0 +) diff --git a/internal/schema/sync_blocks.go b/internal/schema/sync_blocks.go index 3972ffe..0afa244 100644 --- a/internal/schema/sync_blocks.go +++ b/internal/schema/sync_blocks.go @@ -22,11 +22,11 @@ type SyncBlock struct { } func (SyncBlock) TableName() string { - return "`sync_blocks`" + return "sync_blocks" } type SyncBlockHistory SyncBlock func (SyncBlockHistory) TableName() string { - return "`sync_blocks_history`" + return "sync_blocks_history" } diff --git a/internal/schema/sync_events.go b/internal/schema/sync_events.go index ea2bce8..a5fd184 100644 --- a/internal/schema/sync_events.go +++ b/internal/schema/sync_events.go @@ -26,11 +26,11 @@ type SyncEvent struct { } func (SyncEvent) TableName() string { - return "`sync_events`" + return "sync_events" } type SyncEventHistory SyncEvent func (SyncEventHistory) TableName() string { - return "`sync_events_history`" + return "sync_events_history" } diff --git a/internal/schema/txs_proposal.go b/internal/schema/txs_proposal.go new file mode 100644 index 0000000..babf29e --- /dev/null +++ b/internal/schema/txs_proposal.go @@ -0,0 +1,24 @@ +package schema + +import ( + "github.com/ethereum/go-ethereum/common" +) + +type TxsProposal struct { + Base + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address + BlockList string +} + +func (TxsProposal) TableName() string { + return "txs_proposal" +} diff --git a/internal/svc/svc.go b/internal/svc/svc.go index ee164e1..d0e134d 100644 --- a/internal/svc/svc.go +++ b/internal/svc/svc.go @@ -1,15 +1,22 @@ package svc import ( + "math/big" "time" + "github.com/b2network/b2committer/internal/types" "github.com/b2network/b2committer/pkg/b2node" - + "github.com/b2network/b2committer/pkg/beacon" + "github.com/b2network/b2committer/pkg/client" + "github.com/b2network/b2committer/pkg/contract/op" "github.com/b2network/b2committer/pkg/log" - - "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/store" + "github.com/b2network/b2committer/pkg/unisat" + "github.com/ethereum-optimism/optimism/op-service/sources" "github.com/ethereum/go-ethereum/common" + ethTypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/ethclient" + "github.com/everFinance/goar" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" @@ -18,21 +25,26 @@ import ( var svc *ServiceContext type ServiceContext struct { - Config *types.Config - RPC *ethclient.Client - DB *gorm.DB - BTCConfig *types.BitcoinRPCConfig - B2NodeConfig *types.B2NODEConfig - LatestBlockNumber int64 - SyncedBlockNumber int64 - SyncedBlockHash common.Hash - NodeClient *b2node.NodeClient - LatestBTCBlockNumber int64 + Config *types.Config + RPC *ethclient.Client + DB *gorm.DB + BTCConfig *types.BitcoinRPCConfig + B2NodeConfig *types.B2NODEConfig + LatestBlockNumber int64 + SyncedBlockNumber int64 + SyncedBlockHash common.Hash + LatestBTCBlockNumber int64 + BlobDataSource *beacon.BlobDataSource + SyncedBlobBlockNumber int64 + SyncedBlobBlockHash common.Hash + OpCommitterClient *b2node.OpCommitterClient + DecentralizedStore store.DecentralizedStore + UnisatHTTPClient *unisat.UstHTTPClient } func NewServiceContext(cfg *types.Config, bitcoinCfg *types.BitcoinRPCConfig, b2nodeConfig *types.B2NODEConfig) *ServiceContext { storage, err := gorm.Open(mysql.Open(cfg.MySQLDataSource), &gorm.Config{ - Logger: logger.Default.LogMode(logger.Info), + Logger: logger.Default.LogMode(logger.Error), }) if err != nil { log.Panicf("[svc]gorm get db panic: %s\n", err) @@ -42,11 +54,11 @@ func NewServiceContext(cfg *types.Config, bitcoinCfg *types.BitcoinRPCConfig, b2 if err != nil { log.Panicf("[svc]gorm get sqlDB panic: %s\n", err) } - // SetMaxIdleConns 设置空闲连接池中连接的最大数量 + // SetMaxIdleConns sqlDB.SetMaxIdleConns(cfg.MySQLMaxIdleConns) - // SetMaxOpenConns 设置打开数据库连接的最大数量。 + // SetMaxOpenConns sqlDB.SetMaxOpenConns(cfg.MySQLMaxOpenConns) - // SetConnMaxLifetime 设置了连接可复用的最大时间。 + // SetConnMaxLifetime sqlDB.SetConnMaxLifetime(time.Duration(cfg.MySQLConnMaxLifetime) * time.Second) rpc, err := ethclient.Dial(cfg.RPCUrl) @@ -54,15 +66,30 @@ func NewServiceContext(cfg *types.Config, bitcoinCfg *types.BitcoinRPCConfig, b2 log.Panicf("[svc] get eth client panic: %s\n", err) } - privateKeHex := b2nodeConfig.PrivateKey - chainID := b2nodeConfig.ChainID - address := b2nodeConfig.Address - grpcConn, err := types.GetClientConnection(b2nodeConfig.GRPCHost, types.WithClientPortOption(b2nodeConfig.GRPCPort)) + b2rpc, err := ethclient.Dial(b2nodeConfig.RPCUrl) if err != nil { log.Panicf("[svc] init b2node grpc panic: %s\n", err) } - nodeClient := b2node.NewNodeClient(privateKeHex, chainID, address, grpcConn, b2nodeConfig.RPCUrl, b2nodeConfig.CoinDenom) + l1Signer := ethTypes.NewCancunSigner(big.NewInt(cfg.BeaconChainID)) + l1Beacon := sources.NewBeaconHTTPClient(client.NewBasicHTTPClient(cfg.BeaconChainRPCUrl)) + l1BlobFetcher := sources.NewL1BeaconClient(l1Beacon, sources.L1BeaconClientConfig{FetchAllSidecars: false}) + bds := beacon.NewBlobDataSource(l1Signer, common.HexToAddress(cfg.BatcherInbox), common.HexToAddress(cfg.BatcherSender), l1BlobFetcher, rpc) + + proposer, err := op.NewProposer(common.HexToAddress(b2nodeConfig.OpProposersAddress), b2rpc) + if err != nil { + log.Panicf("[svc] init proposer contract panic: %s\n", err) + } + proposalManager, err := op.NewOpProposalManager(common.HexToAddress(b2nodeConfig.OpProposalManagerAddress), b2rpc) + if err != nil { + log.Panicf("[svc] init proposal manager contract panic: %s\n", err) + } + committer, err := op.NewOpCommitter(common.HexToAddress(b2nodeConfig.OpCommitterAddress), b2rpc) + if err != nil { + log.Panicf("[svc] init committer contract panic: %s\n", err) + } + opCommitterClient := b2node.NewOpCommitterClient(b2nodeConfig.PrivateKey, b2nodeConfig.ChainID, proposer, committer, proposalManager) + unisatClient := unisat.NewUnisatHTTPClient(client.NewBasicHTTPClient(cfg.UnisatURL), cfg.UnisatAuth) svc = &ServiceContext{ BTCConfig: bitcoinCfg, DB: storage, @@ -70,7 +97,32 @@ func NewServiceContext(cfg *types.Config, bitcoinCfg *types.BitcoinRPCConfig, b2 RPC: rpc, LatestBlockNumber: cfg.InitBlockNumber, B2NodeConfig: b2nodeConfig, - NodeClient: nodeClient, + BlobDataSource: bds, + OpCommitterClient: opCommitterClient, + UnisatHTTPClient: unisatClient, + } + + dsType := cfg.DSType + if dsType == "" { + panic("Invalid dsType") + } + if dsType == "arweave" { + if cfg.ArweaveRPC == "" { + panic("Invalid arweave rpc") + } + if cfg.ArweaveWallet == "" { + panic("Invalid arweaveWallet path") + } + arClient := goar.NewClient(cfg.ArweaveRPC) + wallet := cfg.ArweaveWallet + arNode := cfg.ArweaveRPC + w, err := goar.NewWalletFromPath(wallet, arNode) + if err != nil { + log.Panicf("[svc] init arweave wallet panic: %s\n", err) + } + + svc.DecentralizedStore = store.NewArWeave(w, arClient) } + return svc } diff --git a/internal/types/config.go b/internal/types/config.go index 46e37d9..dd41dcd 100644 --- a/internal/types/config.go +++ b/internal/types/config.go @@ -9,34 +9,45 @@ type Config struct { // debug", "info", "warn", "error", "panic", "fatal" LogLevel string `env:"LOG_LEVEL" envDefault:"info"` // "console","json" - LogFormat string `env:"LOG_FORMAT" envDefault:"console"` - MySQLDataSource string `env:"MYSQL_DATA_SOURCE" envDefault:"root:root@tcp(127.0.0.1:3306)/b2_committer3?charset=utf8mb4&parseTime=True&loc=Local&multiStatements=true"` - MySQLMaxIdleConns int `env:"MYSQL_MAX_IDLE_CONNS" envDefault:"10"` - MySQLMaxOpenConns int `env:"MYSQL_MAX_OPEN_CONNS" envDefault:"20"` - MySQLConnMaxLifetime int `env:"MYSQL_CONN_MAX_LIFETIME" envDefault:"3600"` - RPCUrl string `env:"RPC_URL" envDefault:"https://habitat-b2-nodes.bsquared.network"` - Blockchain string `env:"BLOCKCHAIN" envDefault:"b2-node"` - InitBlockNumber int64 `env:"INIT_BLOCK_NUMBER" envDefault:"70000"` - InitBlockHash string `env:"INIT_BLOCK_HASH" envDefault:"0xb2fa3c8011ce25bb1d261403107b58b6aeda8a2af3827e86ad70ee081966d99c"` - PolygonZKEVMAddress string `env:"POLYGON_ZKEVM_ADDRESS" envDefault:"0xd9571Aaf414b0F51d40D6738813FA4eA782d18B7"` - LimitNum int `evn:"PROPOSAL_BATCHES_LIMITNUM" envDefault:"10"` - InitProposalID uint64 `evn:"INIT_PROPOSAL_ID" envDefault:"1"` + LogFormat string `env:"LOG_FORMAT" envDefault:"console"` + MySQLDataSource string `env:"MYSQL_DATA_SOURCE" envDefault:"root:root@tcp(127.0.0.1:3366)/b2_committer_main?charset=utf8mb4&parseTime=True&loc=Local&multiStatements=true"` + MySQLMaxIdleConns int `env:"MYSQL_MAX_IDLE_CONNS" envDefault:"10"` + MySQLMaxOpenConns int `env:"MYSQL_MAX_OPEN_CONNS" envDefault:"20"` + MySQLConnMaxLifetime int `env:"MYSQL_CONN_MAX_LIFETIME" envDefault:"3600"` + RPCUrl string `env:"RPC_URL" envDefault:"https://quaint-white-season.ethereum-sepolia.quiknode.pro/b5c30cbb548d8743f08dd175fe50e3e923259d30"` + BeaconChainID int64 `env:"BEACON_CHAIN_ID" envDefault:"11155111"` + BeaconChainRPCUrl string `env:"BEACON_CHAIN_RPC_URL" envDefault:"https://quaint-white-season.ethereum-sepolia.quiknode.pro/b5c30cbb548d8743f08dd175fe50e3e923259d30"` + Blockchain string `env:"BLOCKCHAIN" envDefault:"b2-node"` + InitBlockNumber int64 `env:"INIT_BLOCK_NUMBER" envDefault:"4102885"` + InitBlockHash string `env:"INIT_BLOCK_HASH" envDefault:"0x9612534dc810c9c51211c77def2db781d7cc7979b0cb076a47c9fc6fb6dc475c"` + InitBlobBlockNumber int64 `env:"INIT_BLOB_BLOCK_NUMBER" envDefault:"5687501"` + InitBlobBlockHash string `env:"INIT_BLOB_BLOCK_HASH" envDefault:"0x6218666b40fce4153e8f5349ab2f9d2590a601e5a178e4b6d4580094d5c0c2ee"` + BlobIntervalTime uint64 `env:"BLOB_INTERVAL_TIME" envDefault:"1800"` + OutputIntervalTime uint64 `env:"OUTPUT_INTERVAL_TIME" envDefault:"1800"` + L2OutputOracleProxyContract string `env:"L2_OUTPUT_ORACLE_PROXY_CONTRACT" envDefault:"0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F"` + BatcherInbox string `env:"BATCHER_INBOX" envDefault:"0xff00000000000000000000000000000011155420"` + BatcherSender string `env:"BATCHER_SENDER" envDefault:"0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c"` + DSType string `env:"DSTYPE" envDefault:"arweave"` + ArweaveWallet string `env:"B2NODE_ARWEAVE_WALLET" envDefault:"/tmp/wallet/account.json"` + ArweaveRPC string `env:"B2NODE_ARWEAVE_RPC" envDefault:"https://arweave.net"` + UnisatURL string `env:"UNISAT_URL" envDefault:"https://open-api-testnet.unisat.io/"` + UnisatAuth string `env:"UNISAT_PRIVATE_KEY" envDefault:"4cb09e6eec9a0c3ebd07135b3817a3dcedcc9791d50fade4cb564e8ad68a7ac3"` } type B2NODEConfig struct { - Address string `env:"B2NODE_ADDRESS" envDefault:"ethm1nexknt73vdv6cm3h6ep6u7pe9vg8kr6kqwyl0a"` - ChainID string `env:"B2NODE_CHAIN_ID" envDefault:"ethermint_9000-1"` - GRPCHost string `env:"B2NODE_GRPC_HOST" envDefault:"127.0.0.1"` - GRPCPort uint32 `env:"B2NODE_GRPC_PORT" envDefault:"9090"` - RPCUrl string `env:"B2NODE_RPC_URL" envDefault:"http://localhost:8545"` - CoinDenom string `env:"B2NODE_COIN_DENOM" envDefault:"aphoton"` - PrivateKey string `env:"B2NODE_PRIVATE_KEY" envDefault:"b2dd35d83b69d0d572616713148e83ba7d7f02fb14f442ffc4246319c61a3fa3"` + ChainID int64 `env:"B2NODE_CHAIN_ID" envDefault:"11155111"` + RPCUrl string `env:"B2NODE_RPC_URL" envDefault:"https://quaint-white-season.ethereum-sepolia.quiknode.pro/b5c30cbb548d8743f08dd175fe50e3e923259d30"` + OpCommitterAddress string `env:"B2NODE_OP_COMMITTER_ADDRESS" envDefault:"0x270794Fc3ca753CDE033D2AeF9D00EAf71EbC386"` + OpProposersAddress string `env:"B2NODE_OP_PROPOSERS_ADDRESS" envDefault:"0xcbC418ce125d806087da0DAb15d6ad50E035a250"` + OpProposalManagerAddress string `env:"B2NODE_OP_PROPOSAL_MANAGER_ADDRESS" envDefault:"0x837596C1Aa783E3B06C7Efb10a51Fe6699208D1D"` + Address string `env:"B2NODE_CREATOR_ADDRESS" envDefault:"0xb634434CA448c39b05b460dEC51f458EaC1e2759"` + PrivateKey string `env:"B2NODE_CREATOR_PRIVATE_KEY" envDefault:"0a81baab0ca0b65d406d68c79945054b092cbe77499ca55c57b3ecfd33f1d551"` } type BitcoinRPCConfig struct { - NetworkName string `env:"BITCOIN_NETWORK_NAME" envDefault:"signet"` - PrivateKey string `env:"BITCOIN_PRIVATE_KEY" envDefault:"c545a409ff7f2e66b4bc863a59dcccf0f4387668a92152a058446bcb58a57027"` - DestinationAddress string `env:"COMMITTER_DESTINATION_ADDRESS" envDefault:"tb1pvhr4e58yatk9uve22rr5umxs0jh9g0j0gtcj0ry2wf23lddhjptsf6c360"` + NetworkName string `env:"BITCOIN_NETWORK_NAME" envDefault:"testnet3"` + PrivateKey string `env:"BITCOIN_PRIVATE_KEY" envDefault:"55968c09fb90a496096bafdeaac0f791f527b17324d1d0e63d3550e68a7b0cc5"` + DestinationAddress string `env:"COMMITTER_DESTINATION_ADDRESS" envDefault:"tb1q6t5py7fqml8patll2jzfc26q7987xqthslyvj4"` } var ( diff --git a/internal/types/ds.go b/internal/types/ds.go new file mode 100644 index 0000000..1999459 --- /dev/null +++ b/internal/types/ds.go @@ -0,0 +1,91 @@ +package types + +import ( + "encoding/json" + + "github.com/b2network/b2committer/internal/schema" +) + +type DsTxsProposal struct { + ChainID int64 + ProposalID uint64 + TxsRoot string + Blobs []DsBlob +} + +type DsStateRootProposal struct { + ChainID int64 + ProposalID uint64 + OutputRoot string + OutputEvents []OutputEvent +} + +type DsBlob struct { + BlockID int64 + Blob string +} + +func NewDsTxsProposal(chainID int64, proposalID uint64, txsRoot string, blobs []schema.BlobInfo) *DsTxsProposal { + return &DsTxsProposal{ + ChainID: chainID, + ProposalID: proposalID, + TxsRoot: txsRoot, + Blobs: convertBlobToDsBlob(blobs), + } +} + +func NewDsStateRootProposal(chainID int64, proposalID uint64, outputRoot string, events []schema.SyncEvent) (*DsStateRootProposal, error) { + outputEvents, err := ConvertEventDataToOutputEvent(events) + if err != nil { + return nil, err + } + return &DsStateRootProposal{ + ChainID: chainID, + ProposalID: proposalID, + OutputRoot: outputRoot, + OutputEvents: outputEvents, + }, nil +} + +func convertBlobToDsBlob(blobs []schema.BlobInfo) []DsBlob { + dsBlobs := make([]DsBlob, len(blobs)) + for i, blob := range blobs { + dsBlobs[i] = DsBlob{ + BlockID: blob.BlockNumber, + Blob: blob.Blob, + } + } + return dsBlobs +} + +func (b *DsTxsProposal) GetDBBlobInfos() ([]schema.BlobInfo, error) { + var dbBlobs []schema.BlobInfo + for i, blob := range b.Blobs { + dbBlobs[i] = schema.BlobInfo{ + BlockNumber: blob.BlockID, + Blob: blob.Blob, + } + } + return dbBlobs, nil +} + +func (b *DsTxsProposal) ToJSONBytes() ([]byte, error) { + marshal, err := json.Marshal(b) + if err != nil { + return nil, err + } + return marshal, nil +} + +func (s *DsStateRootProposal) ToJSONBytes() ([]byte, error) { + marshal, err := json.Marshal(s) + if err != nil { + return nil, err + } + return marshal, nil +} + +type BtcStateRootProposal struct { + Proposal *StateRootProposal + ChainID int64 +} diff --git a/internal/types/proposal.go b/internal/types/proposal.go new file mode 100644 index 0000000..65fe68b --- /dev/null +++ b/internal/types/proposal.go @@ -0,0 +1,177 @@ +package types + +import ( + "encoding/json" + "strconv" + "strings" + + "github.com/b2network/b2committer/internal/schema" +) + +type TxsRootProposal struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + BlockList []uint64 + BlockListStr string +} + +func convertBlockListToString(blockList []uint64) string { + strArr := make([]string, 0) + for _, block := range blockList { + number := strconv.FormatUint(block, 10) + if !stringExistsInSlice(strArr, number) { + strArr = append(strArr, number) + } + } + return strings.Join(strArr, ",") +} + +func stringExistsInSlice(slice []string, target string) bool { + for _, element := range slice { + if element == target { + return true + } + } + return false +} + +func uintExistsInSlice(slice []uint64, target uint64) bool { + for _, element := range slice { + if element == target { + return true + } + } + return false +} + +func NewTxsRootProposal(proposalID uint64, txsRoot string, blobs []schema.BlobInfo) *TxsRootProposal { + proposal := &TxsRootProposal{ + ProposalID: proposalID, + StartBlockNumber: uint64(blobs[0].BlockNumber), + EndBlockNumber: uint64(blobs[len(blobs)-1].BlockNumber), + StartTimestamp: blobs[0].BlockTime, + EndTimestamp: blobs[len(blobs)-1].BlockTime, + TxsRoot: txsRoot, + } + fillBlockListAndBlockInfo(blobs, proposal) + proposal.BlockListStr = convertBlockListToString(proposal.BlockList) + return proposal +} + +func fillBlockListAndBlockInfo(blobs []schema.BlobInfo, proposal *TxsRootProposal) { + blockList := make([]uint64, 0) + + for _, blob := range blobs { + if proposal.StartBlockNumber > uint64(blob.BlockNumber) { + proposal.StartBlockNumber = uint64(blob.BlockNumber) + } + if proposal.EndBlockNumber < uint64(blob.BlockNumber) { + proposal.EndBlockNumber = uint64(blob.BlockNumber) + } + if proposal.StartTimestamp > blob.BlockTime { + proposal.StartTimestamp = blob.BlockTime + } + if proposal.EndTimestamp < blob.BlockTime { + proposal.EndTimestamp = blob.BlockTime + } + if !uintExistsInSlice(blockList, uint64(blob.BlockNumber)) { + blockList = append(blockList, uint64(blob.BlockNumber)) + } + } + proposal.BlockList = blockList +} + +type StateRootProposal struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 +} + +func NewStateRootProposal(proposalID uint64, output string, events []schema.SyncEvent) (*StateRootProposal, error) { + proposal := &StateRootProposal{ + ProposalID: proposalID, + OutputRoot: output, + } + err := fillStateRootProposal(events, proposal) + if err != nil { + return nil, err + } + return proposal, nil +} + +func fillStateRootProposal(events []schema.SyncEvent, proposal *StateRootProposal) error { + var data OutputEvent + for _, event := range events { + err := json.Unmarshal([]byte(event.Data), &data) + if err != nil { + return err + } + if proposal.StartL1Timestamp == 0 && proposal.StartL2BlockNumber == 0 && proposal.OutputStartIndex == 0 { + proposal.StartL1Timestamp = data.L1Timestamp + proposal.StartL2BlockNumber = data.L2blockNumber + proposal.OutputStartIndex = data.L2OutputIndex + } + if proposal.StartL1Timestamp > data.L1Timestamp { + proposal.StartL1Timestamp = data.L1Timestamp + } + if proposal.EndL1Timestamp < data.L1Timestamp { + proposal.EndL1Timestamp = data.L1Timestamp + } + if proposal.StartL2BlockNumber > data.L2blockNumber { + proposal.StartL2BlockNumber = data.L2blockNumber + } + if proposal.EndL2BlockNumber < data.L2blockNumber { + proposal.EndL2BlockNumber = data.L2blockNumber + } + if proposal.OutputStartIndex > data.L2OutputIndex { + proposal.OutputStartIndex = data.L2OutputIndex + } + if proposal.OutputEndIndex < data.L2OutputIndex { + proposal.OutputEndIndex = data.L2OutputIndex + } + } + return nil +} + +type OutputEvent struct { + OutputRoot string `json:"outputRoot"` + L1Timestamp uint64 `json:"l1Timestamp"` + L2blockNumber uint64 `json:"l2blockNumber"` + L2OutputIndex uint64 `json:"l2OutputIndex"` +} + +func ConvertEventDataToOutputEvent(events []schema.SyncEvent) ([]OutputEvent, error) { + outputs := make([]OutputEvent, 0) + for _, event := range events { + var data OutputEvent + err := json.Unmarshal([]byte(event.Data), &data) + if err != nil { + return nil, err + } + outputs = append(outputs, data) + } + return outputs, nil +} + +func ConvertOutputsToEventData(outputs []OutputEvent) ([]schema.SyncEvent, error) { + events := make([]schema.SyncEvent, 0) + for _, output := range outputs { + var event schema.SyncEvent + data, err := json.Marshal(output) + if err != nil { + return nil, err + } + event.Data = string(data) + events = append(events, event) + } + return events, nil +} diff --git a/internal/types/unisat.go b/internal/types/unisat.go new file mode 100644 index 0000000..00e247b --- /dev/null +++ b/internal/types/unisat.go @@ -0,0 +1,26 @@ +package types + +type BTCTxOutputs struct { + TxID string `json:"txid"` + Vout uint64 `json:"vout"` + Address string `json:"address"` + CodeType uint64 `json:"codeType"` + Satoshi uint64 `json:"satoshi"` + ScriptType string `json:"scriptType"` + Height uint64 `json:"height"` + Idx uint64 `json:"idx"` + Inscriptions []Inscriptions `json:"inscriptions"` +} + +type Inscriptions struct { + InscriptionNumber uint64 `json:"inscriptionNumber"` + InscriptionID string `json:"inscriptionId"` + Offset uint64 `json:"offset"` + Moved bool `json:"moved"` + Sequence uint64 `json:"sequence"` + IsBRC20 bool `json:"isBRC20"` +} + +type APIBTCTxOutputs struct { + Data []BTCTxOutputs `json:"data"` +} diff --git a/pkg/b2node/b2node.go b/pkg/b2node/b2node.go deleted file mode 100644 index 32f0dea..0000000 --- a/pkg/b2node/b2node.go +++ /dev/null @@ -1,313 +0,0 @@ -package b2node - -import ( - "context" - "encoding/hex" - "encoding/json" - "fmt" - "strconv" - - "github.com/b2network/b2committer/pkg/rpc" - - sdkmath "cosmossdk.io/math" - - clientTx "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/cosmos/cosmos-sdk/simapp" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/cosmos/cosmos-sdk/types/tx/signing" - xauthsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - authTypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/evmos/ethermint/crypto/ethsecp256k1" - eTypes "github.com/evmos/ethermint/types" - committerTypes "github.com/evmos/ethermint/x/committer/types" - feeTypes "github.com/evmos/ethermint/x/feemarket/types" - "google.golang.org/grpc" -) - -const ( - DefaultBaseGasPrice = 10_000_000 -) - -type NodeClient struct { - PrivateKey ethsecp256k1.PrivKey - Address string - ChainID string - GrpcConn *grpc.ClientConn - RPCUrl string - Denom string -} - -type GasPriceRsp struct { - ID int64 `json:"id"` - Jsonrpc string `json:"jsonrpc"` - Result string `json:"result"` -} - -func NewNodeClient(privateKeyHex string, chainID string, address string, grpcConn *grpc.ClientConn, - rpcURL string, denom string, -) *NodeClient { - privatekeyBytes, err := hex.DecodeString(privateKeyHex) - if nil != err { - panic(err) - } - return &NodeClient{ - PrivateKey: ethsecp256k1.PrivKey{ - Key: privatekeyBytes, - }, - Address: address, - ChainID: chainID, - GrpcConn: grpcConn, - RPCUrl: rpcURL, - Denom: denom, - } -} - -func (n NodeClient) AddCommitter(address string) (string, error) { - msg := committerTypes.NewMsgAddCommitter(n.Address, address) - msgResponse, err := n.broadcastTx(msg) - if err != nil { - return "", fmt.Errorf("[AddCommitter] err: %s", err) - } - code := msgResponse.TxResponse.Code - rawLog := msgResponse.TxResponse.RawLog - if code != 0 { - return "", fmt.Errorf("[AddCommitter][msgResponse.TxResponse.Code] err: %s", rawLog) - } - hexData := msgResponse.TxResponse.Data - byteData, err := hex.DecodeString(hexData) - if err != nil { - return "", fmt.Errorf("[AddCommitter][hex.DecodeString] err: %s", err) - } - pbMsg := &sdk.TxMsgData{} - err = pbMsg.Unmarshal(byteData) - if err != nil { - return "", fmt.Errorf("[AddCommitter][pbMsg.Unmarshal] err: %s", err) - } - resMsgRes := &committerTypes.MsgAddCommitterResponse{} - err = resMsgRes.Unmarshal(pbMsg.MsgResponses[0].GetValue()) - if err != nil { - return "", fmt.Errorf("[AddCommitter][resMsgRes.Unmarshal] err: %s", err) - } - return resMsgRes.Committer, err -} - -func (n NodeClient) GetAccountInfo(address string) (*eTypes.EthAccount, error) { - authClient := authTypes.NewQueryClient(n.GrpcConn) - res, err := authClient.Account(context.Background(), &authTypes.QueryAccountRequest{Address: address}) - if err != nil { - return nil, fmt.Errorf("[NodeClient] GetAccountInfo err: %s", err) - } - ethAccount := &eTypes.EthAccount{} - err = ethAccount.Unmarshal(res.GetAccount().GetValue()) - if err != nil { - return nil, fmt.Errorf("[NodeClient][ethAccount.Unmarshal] err: %s", err) - } - return ethAccount, nil -} - -func (n NodeClient) SubmitProof(id uint64, from string, proofHash string, stateRootHash string, - startIndex uint64, endIndex uint64, -) (uint64, error) { - msg := committerTypes.NewMsgSubmitProof(id, from, proofHash, stateRootHash, startIndex, endIndex) - msgResponse, err := n.broadcastTx(msg) - if err != nil { - return 0, fmt.Errorf("[SubmitProof] err: %s", err) - } - code := msgResponse.TxResponse.Code - rawLog := msgResponse.TxResponse.RawLog - if code != 0 { - return 0, fmt.Errorf("[SubmitProof][msgResponse.TxResponse.Code] err: %s", rawLog) - } - hexData := msgResponse.TxResponse.Data - byteData, err := hex.DecodeString(hexData) - if err != nil { - return 0, fmt.Errorf("[SubmitProof][hex.DecodeString] err: %s", err) - } - pbMsg := &sdk.TxMsgData{} - err = pbMsg.Unmarshal(byteData) - if err != nil { - return 0, fmt.Errorf("[SubmitProof][pbMsg.Unmarshal] err: %s", err) - } - - resMsgRes := &committerTypes.MsgSubmitProofResponse{} - err = resMsgRes.Unmarshal(pbMsg.MsgResponses[0].GetValue()) - if err != nil { - return 0, fmt.Errorf("[SubmitProof][resMsgRes.Unmarshal] err: %s", err) - } - return resMsgRes.Id, err -} - -func (n NodeClient) BitcoinTx(proposalID uint64, from string, bitcoinTxHash string) (uint64, error) { - msg := committerTypes.NewMsgBitcoinTx(proposalID, from, bitcoinTxHash) - msgResponse, err := n.broadcastTx(msg) - if err != nil { - return 0, fmt.Errorf("[BitcoinTx] err: %s", err) - } - code := msgResponse.TxResponse.Code - rawLog := msgResponse.TxResponse.RawLog - if code != 0 { - return 0, fmt.Errorf("[BitcoinTx][msgResponse.TxResponse.Code] err: %s", rawLog) - } - hexData := msgResponse.TxResponse.Data - byteData, err := hex.DecodeString(hexData) - if err != nil { - return 0, fmt.Errorf("[BitcoinTx][hex.DecodeString] err: %s", err) - } - pbMsg := &sdk.TxMsgData{} - err = pbMsg.Unmarshal(byteData) - if err != nil { - return 0, fmt.Errorf("[BitcoinTx][pbMsg.Unmarshal] err: %s", err) - } - - resMsgRes := &committerTypes.MsgSubmitProofResponse{} - err = resMsgRes.Unmarshal(pbMsg.MsgResponses[0].GetValue()) - if err != nil { - return 0, fmt.Errorf("[BitcoinTx][resMsgRes.Unmarshal] err: %s", err) - } - return resMsgRes.Id, err -} - -func (n NodeClient) GetEthGasPrice() (uint64, error) { - gasPriceByte, err := rpc.HTTPPostJSON("", n.RPCUrl, `{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}`) - if err != nil { - return 0, fmt.Errorf("[GetEthGasPrice] err: %s", err) - } - var g GasPriceRsp - if err := json.Unmarshal(gasPriceByte, &g); err != nil { - return 0, fmt.Errorf("[GetEthGasPrice.json.Unmarshal] err: %s", err) - } - parseUint, err := strconv.ParseUint(g.Result, 0, 64) - if err != nil { - return 0, fmt.Errorf("[GetEthGasPrice.strconv.ParseUint] err: %s", err) - } - return parseUint, nil -} - -func (n NodeClient) GetGasPrice() (uint64, error) { - queryClient := feeTypes.NewQueryClient(n.GrpcConn) - res, err := queryClient.Params(context.Background(), &feeTypes.QueryParamsRequest{}) - if err != nil { - return 0, fmt.Errorf("[GetGasPrice] err: %s", err) - } - return res.Params.BaseFee.Uint64(), nil -} - -func (n NodeClient) broadcastTx(msgs ...sdk.Msg) (*tx.BroadcastTxResponse, error) { - gasPrice, err := n.GetGasPrice() - if err != nil { - return nil, fmt.Errorf("[broadcastTx][GetGasPrice] err: %s", err) - } - txBytes, err := n.buildSimTx(gasPrice, msgs...) - if err != nil { - return nil, fmt.Errorf("[SubmitProof] err: %s", err) - } - txClient := tx.NewServiceClient(n.GrpcConn) - res, err := txClient.BroadcastTx(context.Background(), &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, - TxBytes: txBytes, - }) - if err != nil { - return nil, fmt.Errorf("[SubmitProof][BroadcastTx] err: %s", err) - } - return res, err -} - -func (n NodeClient) buildSimTx(gasPrice uint64, msgs ...sdk.Msg) ([]byte, error) { - encCfg := simapp.MakeTestEncodingConfig() - txBuilder := encCfg.TxConfig.NewTxBuilder() - err := txBuilder.SetMsgs(msgs...) - if err != nil { - return nil, fmt.Errorf("[BuildSimTx][SetMsgs] err: %s", err) - } - ethAccount, err := n.GetAccountInfo(n.Address) - if nil != err { - return nil, fmt.Errorf("[BuildSimTx][GetAccountInfo]err: %s", err) - } - signV2 := signing.SignatureV2{ - PubKey: n.PrivateKey.PubKey(), - Data: &signing.SingleSignatureData{ - SignMode: encCfg.TxConfig.SignModeHandler().DefaultMode(), - }, - Sequence: ethAccount.BaseAccount.Sequence, - } - err = txBuilder.SetSignatures(signV2) - if err != nil { - return nil, fmt.Errorf("[BuildSimTx][SetSignatures 1]err: %s", err) - } - txBuilder.SetGasLimit(DefaultBaseGasPrice) - txBuilder.SetFeeAmount(sdk.NewCoins(sdk.Coin{ - Denom: n.Denom, - Amount: sdkmath.NewIntFromUint64(gasPrice * DefaultBaseGasPrice), - })) - - signerData := xauthsigning.SignerData{ - ChainID: n.ChainID, - AccountNumber: ethAccount.BaseAccount.AccountNumber, - Sequence: ethAccount.BaseAccount.Sequence, - } - - sigV2, err := clientTx.SignWithPrivKey( - encCfg.TxConfig.SignModeHandler().DefaultMode(), signerData, - txBuilder, &n.PrivateKey, encCfg.TxConfig, ethAccount.BaseAccount.Sequence) - if err != nil { - return nil, fmt.Errorf("[BuildSimTx][SignWithPrivKey] err: %s", err) - } - - err = txBuilder.SetSignatures(sigV2) - if err != nil { - return nil, fmt.Errorf("[BuildSimTx][SetSignatures 2] err: %s", err) - } - txBytes, err := encCfg.TxConfig.TxEncoder()(txBuilder.GetTx()) - if err != nil { - return nil, fmt.Errorf("[BuildSimTx][GetTx] err: %s", err) - } - return txBytes, err -} - -func (n NodeClient) QueryLastProposalID() (uint64, uint64, error) { - queryClient := committerTypes.NewQueryClient(n.GrpcConn) - res, err := queryClient.LastProposalID(context.Background(), &committerTypes.QueryLastProposalIdRequest{}) - if err != nil { - return 0, 0, fmt.Errorf("[QueryLastProposalID] err: %s", err) - } - return res.LastProposalId, res.EndIndex, nil -} - -func (n NodeClient) QueryProposalByID(id uint64) (*committerTypes.Proposal, error) { - queryClient := committerTypes.NewQueryClient(n.GrpcConn) - res, err := queryClient.Proposal(context.Background(), &committerTypes.QueryProposalRequest{ProposalId: id}) - if err != nil { - return nil, fmt.Errorf("[QueryProposalByID] err: %s", err) - } - return res.Proposal, nil -} - -func (n NodeClient) CommitterBitcoinTx(msg *committerTypes.MsgBitcoinTx) (*tx.BroadcastTxResponse, error) { - gasPrice, err := n.GetGasPrice() - if err != nil { - return nil, fmt.Errorf("[CommitterBitcoinTx][GetGasPrice] err: %s", err) - } - txBytes, err := n.buildSimTx(gasPrice, msg) - if err != nil { - return nil, fmt.Errorf("[SubmitProof] err: %s", err) - } - txClient := tx.NewServiceClient(n.GrpcConn) - res, err := txClient.BroadcastTx(context.Background(), &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, - TxBytes: txBytes, - }) - if err != nil { - return nil, fmt.Errorf("[SubmitProof][BroadcastTx] err: %s", err) - } - return res, err -} - -func (n NodeClient) TimeoutProposal(id uint64) error { - msg := &committerTypes.MsgTimeoutProposal{Id: id, From: n.Address} - _, err := n.broadcastTx(msg) - if err != nil { - return fmt.Errorf("[TimeoutProposal] err: %s", err) - } - return nil -} diff --git a/pkg/b2node/b2node_test.go b/pkg/b2node/b2node_test.go deleted file mode 100644 index 4ed4487..0000000 --- a/pkg/b2node/b2node_test.go +++ /dev/null @@ -1,164 +0,0 @@ -package b2node - -import ( - "encoding/hex" - "fmt" - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - - "github.com/b2network/b2committer/internal/types" - xcommitterTypes "github.com/evmos/ethermint/x/committer/types" -) - -func TestGetAccountInfo(t *testing.T) { - privateKeHex := "234def6d66bb45c288521bbbd20b7b3cd542e5b6e26386dcec24f8e918251f5a" - chainID := "ethermint_9000-1" - address := "ethm1jvqt5echmshc8gjsqdzk9unclt8qkx4knxcjdj" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - addInfo, err := nodeClient.GetAccountInfo(address) - // - fmt.Println(addInfo.CodeHash) - fmt.Println(addInfo.BaseAccount.Sequence) - fmt.Println(addInfo.BaseAccount.Address) -} - -func TestSubmitProof(t *testing.T) { - privateKeHex := "234def6d66bb45c288521bbbd20b7b3cd542e5b6e26386dcec24f8e918251f5a" - chainID := "ethermint_9000-1" - address := "ethm1jvqt5echmshc8gjsqdzk9unclt8qkx4knxcjdj" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - proposalID, err := nodeClient.SubmitProof(0, address, "proof7", "stateRoot", 1, 70) - require.NoError(t, err) - fmt.Println(proposalID) -} - -func TestDecodeTxResponseData(t *testing.T) { - byteData, _ := hex.DecodeString("12370A312F65766D6F732E65746865726D696E742E636F6D6D69747465722E4D73675375626D697450726F6F66526573706F6E736512020808") - pbMsg := &sdk.TxMsgData{} - // proto.Marshal(&sdk.TxMsgData{MsgResponses: msgResponses}) - pbMsg.Unmarshal(byteData) - fmt.Println(pbMsg.MsgResponses[0].TypeUrl) - resMsgRes := &xcommitterTypes.MsgSubmitProofResponse{} - resMsgRes.Unmarshal(pbMsg.MsgResponses[0].GetValue()) - fmt.Println(resMsgRes.Id) -} - -func TestQueryLastProposalID(t *testing.T) { - privateKeHex := "53da55319c649af5dec2d9ff11c0476698b27cf3bf8dfbce55fd29ab78caadf0" - chainID := "ethermint_9000-1" - address := "ethm17ezey9h6zw0yzaxq00w3gmt0rdet063v3vfmee" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - lastID, endIndex, err := nodeClient.QueryLastProposalID() - if err != nil { - panic(err) - } - fmt.Println("lastID:", lastID) - fmt.Println("index:", endIndex) -} - -func TestQueryProposalByID(t *testing.T) { - privateKeHex := "53da55319c649af5dec2d9ff11c0476698b27cf3bf8dfbce55fd29ab78caadf0" - chainID := "ethermint_9000-1" - address := "ethm17ezey9h6zw0yzaxq00w3gmt0rdet063v3vfmee" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - proposal, err := nodeClient.QueryProposalByID(6) - fmt.Println("id:", proposal.Id) - fmt.Println("proposer:", proposal.Proposer) - fmt.Println("status:", proposal.Status) - fmt.Println("stateRootHash:", proposal.StateRootHash) - fmt.Println("winner:", proposal.Winner) - fmt.Println("voteList:", proposal.VotedListPhaseCommit) - fmt.Println("start index:", proposal.StartIndex) - fmt.Println("end index:", proposal.EndIndex) - fmt.Println("bitcoinTx:", proposal.BitcoinTxHash) -} - -func TestCommitterBitcoinTx(t *testing.T) { - privateKeHex := "53da55319c649af5dec2d9ff11c0476698b27cf3bf8dfbce55fd29ab78caadf0" - chainID := "ethermint_9000-1" - address := "ethm17ezey9h6zw0yzaxq00w3gmt0rdet063v3vfmee" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - res, err := nodeClient.CommitterBitcoinTx(&xcommitterTypes.MsgBitcoinTx{Id: 1, From: "ethm10ky5utnz5ddlmus5t2mm5ftxal3u0u6rsnx5nl", BitcoinTxHash: "1234567890"}) - require.NoError(t, err) - fmt.Println(res) -} - -func TestGetETHGasPrice(t *testing.T) { - privateKeHex := "0c993419ff40521f20370c45721c92626c2f1fd35267258fb3d093ed0826b611" - chainID := "ethermint_9000-1" - address := "ethm1mffw0yzmusgm9fwd40jaal3vwustuhhx8rh03q" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - gasprice, err := nodeClient.GetEthGasPrice() - require.NoError(t, err) - fmt.Println(gasprice) -} - -func TestGetGasPrice(t *testing.T) { - privateKeHex := "37927fcde10259a7114a58487cb6303d04c33291ba29bbb8e488eef150e6a59a" - chainID := "ethermint_9000-1" - address := "ethm1nexknt73vdv6cm3h6ep6u7pe9vg8kr6kqwyl0a" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - gasPrice, err := nodeClient.GetGasPrice() - require.NoError(t, err) - fmt.Println(gasPrice) -} - -func TestAddCommitter(t *testing.T) { - privateKeHex := "37927fcde10259a7114a58487cb6303d04c33291ba29bbb8e488eef150e6a59a" - chainID := "ethermint_9000-1" - address := "ethm1nexknt73vdv6cm3h6ep6u7pe9vg8kr6kqwyl0a" - rpcUrl := "http://localhost:8545" - denom := "aphoton" - grpcConn, err := types.GetClientConnection("127.0.0.1", types.WithClientPortOption(9090)) - if err != nil { - panic(err) - } - nodeClient := NewNodeClient(privateKeHex, chainID, address, grpcConn, rpcUrl, denom) - add, err := nodeClient.AddCommitter("ethm1c3csplac80qt22p5qwx3l5telv6ge9ycmzwe3w") - require.NoError(t, err) - fmt.Println(add) -} diff --git a/pkg/b2node/committer.go b/pkg/b2node/committer.go new file mode 100644 index 0000000..d5e1f0f --- /dev/null +++ b/pkg/b2node/committer.go @@ -0,0 +1,111 @@ +package b2node + +import ( + "math/big" + + "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/contract/op" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + ethTypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" +) + +type OpCommitterClient struct { + Proposer *op.Proposer + Committer *op.OpCommitter + ProposalManager *op.OpProposalManager + Auth *bind.TransactOpts +} + +func NewOpCommitterClient(privateKeyStr string, chainID int64, proposer *op.Proposer, committer *op.OpCommitter, proposalManager *op.OpProposalManager) *OpCommitterClient { + privateKey, err := crypto.HexToECDSA(privateKeyStr) + if nil != err { + panic(err) + } + auth, err := bind.NewKeyedTransactorWithChainID(privateKey, big.NewInt(chainID)) + if nil != err { + panic(err) + } + return &OpCommitterClient{ + Proposer: proposer, + Committer: committer, + ProposalManager: proposalManager, + Auth: auth, + } +} + +func (client *OpCommitterClient) QueryAllProposers() ([]common.Address, error) { + res, err := client.Proposer.AllProposers(&bind.CallOpts{}) + if err != nil { + return nil, err + } + return res, nil +} + +func (client *OpCommitterClient) AddProposer(address common.Address) (*ethTypes.Transaction, error) { + tx, err := client.Proposer.AddProposer(&bind.TransactOpts{ + From: client.Auth.From, + Signer: client.Auth.Signer, + }, address) + if err != nil { + return nil, err + } + return tx, nil +} + +func (client *OpCommitterClient) SubmitTxsRoot(proposal *types.TxsRootProposal) (*ethTypes.Transaction, error) { + tx, err := client.Committer.SubmitTxsRoot(&bind.TransactOpts{ + From: client.Auth.From, + Signer: client.Auth.Signer, + }, proposal.ProposalID, proposal.StartTimestamp, proposal.EndTimestamp, proposal.StartBlockNumber, proposal.EndBlockNumber, proposal.TxsRoot, proposal.BlockList) + if err != nil { + return nil, err + } + return tx, nil +} + +func (client *OpCommitterClient) SubmitStateRoot(proposal *types.StateRootProposal) (*ethTypes.Transaction, error) { + tx, err := client.Committer.SubmitStateRoot(&bind.TransactOpts{ + From: client.Auth.From, + Signer: client.Auth.Signer, + }, proposal.ProposalID, proposal.OutputRoot, proposal.StartL1Timestamp, proposal.EndL1Timestamp, proposal.StartL2BlockNumber, + proposal.EndL2BlockNumber, proposal.OutputStartIndex, proposal.OutputEndIndex) + if err != nil { + return nil, err + } + return tx, nil +} + +func (client *OpCommitterClient) DsHash(proposalID uint64, proposalType uint64, dsType uint64, txsHash string) (*ethTypes.Transaction, error) { + tx, err := client.Committer.DsTxHash(&bind.TransactOpts{ + From: client.Auth.From, + Signer: client.Auth.Signer, + }, proposalID, proposalType, dsType, txsHash) + if err != nil { + return nil, err + } + return tx, nil +} + +func (client *OpCommitterClient) BitcoinTxHash(proposalID uint64, btcTxHash string) (*ethTypes.Transaction, error) { + tx, err := client.Committer.BitcoinTxHash(&bind.TransactOpts{ + From: client.Auth.From, + Signer: client.Auth.Signer, + }, proposalID, btcTxHash) + if err != nil { + return nil, err + } + return tx, nil +} + +func (client *OpCommitterClient) SetCommitter(committerContractAddress string) (*ethTypes.Transaction, error) { + tx, err := client.ProposalManager.SetCommitter(&bind.TransactOpts{ + From: client.Auth.From, + Signer: client.Auth.Signer, + }, common.HexToAddress(committerContractAddress)) + if err != nil { + return nil, err + } + return tx, nil +} diff --git a/pkg/b2node/committer_test.go b/pkg/b2node/committer_test.go new file mode 100644 index 0000000..7f04b39 --- /dev/null +++ b/pkg/b2node/committer_test.go @@ -0,0 +1,93 @@ +package b2node + +import ( + "fmt" + "github.com/b2network/b2committer/pkg/contract/op" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/stretchr/testify/require" + "testing" +) + +const ( + WalletAddress = "0xb634434CA448c39b05b460dEC51f458EaC1e2759" + + WalletPrivateKey = "0a81baab0ca0b65d406d68c79945054b092cbe77499ca55c57b3ecfd33f1d551" + Sepolia_URL = "https://quaint-white-season.ethereum-sepolia.quiknode.pro/b5c30cbb548d8743f08dd175fe50e3e923259d30/" + Sepolia_chainID = 11155111 + proposerContractAddress = "0xcbC418ce125d806087da0DAb15d6ad50E035a250" + proposalManagerContract = "0x837596C1Aa783E3B06C7Efb10a51Fe6699208D1D" + committerContractAddress = "0x270794Fc3ca753CDE033D2AeF9D00EAf71EbC386" +) + +var opCommitterClient *OpCommitterClient + +func setup(t *testing.T) { + conn, err := ethclient.Dial(Sepolia_URL) + require.NoError(t, err) + defer conn.Close() + + proposer, err := op.NewProposer(common.HexToAddress(proposerContractAddress), conn) + require.NoError(t, err) + proposalManager, err := op.NewOpProposalManager(common.HexToAddress(proposalManagerContract), conn) + require.NoError(t, err) + committer, err := op.NewOpCommitter(common.HexToAddress(committerContractAddress), conn) + require.NoError(t, err) + opCommitterClient = NewOpCommitterClient(WalletPrivateKey, Sepolia_chainID, proposer, committer, proposalManager) +} + +func TestQueryAllProposals(t *testing.T) { + setup(t) + res, err := opCommitterClient.QueryAllProposers() + require.NoError(t, err) + fmt.Println(res) +} + +func TestAddProposer(t *testing.T) { + setup(t) + tx, err := opCommitterClient.AddProposer(common.HexToAddress(WalletAddress)) + require.NoError(t, err) + fmt.Println(tx) +} + +func TestIsProposer(t *testing.T) { + setup(t) + res, err := opCommitterClient.Proposer.IsProposer(&bind.CallOpts{}, common.HexToAddress(WalletAddress)) + require.NoError(t, err) + fmt.Println(res) +} + +func TestSetCommitterContract(t *testing.T) { + setup(t) + tx, err := opCommitterClient.SetCommitter(committerContractAddress) + require.NoError(t, err) + fmt.Println(tx) +} + +func TestGetLastTxsRootProposal(t *testing.T) { + setup(t) + proposal, err := opCommitterClient.ProposalManager.GetLastTxsRootProposal(&bind.CallOpts{}) + require.NoError(t, err) + fmt.Println(proposal) +} + +func TestGetTxsRootProposalByID(t *testing.T) { + setup(t) + proposal1, err := opCommitterClient.ProposalManager.GetTxsRootProposal(&bind.CallOpts{}, 1) + require.NoError(t, err) + fmt.Println(proposal1) + proposal2, err := opCommitterClient.ProposalManager.GetTxsRootProposal(&bind.CallOpts{}, 2) + require.NoError(t, err) + fmt.Println(proposal2) + proposal3, err := opCommitterClient.ProposalManager.GetTxsRootProposal(&bind.CallOpts{}, 3) + require.NoError(t, err) + fmt.Println(proposal3) +} + +func TestQueryCommitterProposer(t *testing.T) { + setup(t) + proposer, err := opCommitterClient.Committer.Proposer(&bind.CallOpts{}) + require.NoError(t, err) + fmt.Println(proposer) +} diff --git a/pkg/beacon/l1_beacon_client.go b/pkg/beacon/l1_beacon_client.go new file mode 100644 index 0000000..4454e12 --- /dev/null +++ b/pkg/beacon/l1_beacon_client.go @@ -0,0 +1,139 @@ +package beacon + +import ( + "context" + "errors" + "fmt" + "math/big" + + "github.com/b2network/b2committer/pkg/errcode" + "github.com/b2network/b2committer/pkg/log" + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum-optimism/optimism/op-service/sources" + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" +) + +type BlobDataSource struct { + L1Signer types.Signer + BatchInboxAddress common.Address + BatchSenderAddress common.Address + //nolint:unused + data []BlockBlobInfo + BlobsFetcher *sources.L1BeaconClient + EthRPC *ethclient.Client +} + +func NewBlobDataSource(l1Signer types.Signer, batchInboxAddress common.Address, batchSenderAddress common.Address, + blobsFetcher *sources.L1BeaconClient, ethRPC *ethclient.Client, +) *BlobDataSource { + return &BlobDataSource{ + L1Signer: l1Signer, + BatchInboxAddress: batchInboxAddress, + BatchSenderAddress: batchSenderAddress, + BlobsFetcher: blobsFetcher, + EthRPC: ethRPC, + } +} + +func (bds *BlobDataSource) GetBlobByBlockNum(ctx context.Context, blockNum *big.Int) ([]BlockBlobInfo, error) { + block, err := bds.EthRPC.BlockByNumber(ctx, blockNum) + if err != nil { + return nil, fmt.Errorf("failed to get block %d: %v", blockNum, err) + } + txs := block.Transactions() + hashes := DataAndHashesFromTxs(txs, bds.L1Signer, bds.BatchInboxAddress, bds.BatchSenderAddress) + if len(hashes) == 0 { + // there are no blobs to fetch so we can return immediately + + return nil, errcode.ErrNoBlobFoundInBlock + } + l1Block := eth.L1BlockRef{ + Hash: block.Hash(), + Number: block.Number().Uint64(), + ParentHash: block.ParentHash(), + Time: block.Time(), + } + + blobSidecars, err := bds.BlobsFetcher.GetBlobSidecars(context.Background(), l1Block, hashes) + + if errors.Is(err, ethereum.NotFound) { + // If the L1 block was available, then the blobs should be available too. The only + // exception is if the blob retention window has expired, which we will ultimately handle + // by failing over to a blob archival service. + return nil, fmt.Errorf("failed to fetch blobs: %w", err) + } else if err != nil { + return nil, fmt.Errorf("failed to fetch blobs: %w", err) + } + //nolint:prealloc + var data []BlockBlobInfo + for i, hash := range hashes { + if blobSidecars[i] == nil { + log.Errorf("blob %d not found in block %d", hash.Index, blockNum) + continue + } + //nolint:gosec,exportloopref + data = append(data, BlockBlobInfo{ + BlobSidecar: blobSidecars[i], + Hash: &hash, + }) + } + return data, nil +} + +// dataAndHashesFromTxs extracts calldata and datahashes from the input transactions and returns them. It +// creates a placeholder blobOrCalldata element for each returned blob hash that must be populated +// by fillBlobPointers after blob bodies are retrieved. +func DataAndHashesFromTxs(txs types.Transactions, l1Signer types.Signer, batchInboxAddress common.Address, batcherAddr common.Address) []eth.IndexedBlobHash { + var hashes []eth.IndexedBlobHash + blobIndex := 0 // index of each blob in the block's blob sidecar + for _, tx := range txs { + // skip any non-batcher transactions + if !isValidBatchTx(tx, l1Signer, batchInboxAddress, batcherAddr) { + continue + } + // handle non-blob batcher transactions by extracting their calldata + if tx.Type() != types.BlobTxType { + continue + } + // handle blob batcher transactions by extracting their blob hashes, ignoring any calldata. + if len(tx.Data()) > 0 { + log.Errorf("blob tx has calldata, which will be ignored %s, %s", "txhash", tx.Hash()) + } + for _, h := range tx.BlobHashes() { + idh := eth.IndexedBlobHash{ + Index: uint64(blobIndex), + Hash: h, + } + hashes = append(hashes, idh) + blobIndex++ + } + } + return hashes +} + +// isValidBatchTx returns true if: +// 1. the transaction has a To() address that matches the batch inbox address, and +// 2. the transaction has a valid signature from the batcher address +func isValidBatchTx(tx *types.Transaction, l1Signer types.Signer, batchInboxAddr, batcherAddr common.Address) bool { + to := tx.To() + if to == nil || *to != batchInboxAddr { + return false + } + seqDataSubmitter, err := l1Signer.Sender(tx) // optimization: only derive sender if To is correct + if err != nil { + return false + } + // some random L1 user might have sent a transaction to our batch inbox, ignore them + if seqDataSubmitter != batcherAddr { + return false + } + return true +} + +type BlockBlobInfo struct { + BlobSidecar *eth.BlobSidecar + Hash *eth.IndexedBlobHash +} diff --git a/pkg/beacon/l1_beacon_client_test.go b/pkg/beacon/l1_beacon_client_test.go new file mode 100644 index 0000000..f98b5f9 --- /dev/null +++ b/pkg/beacon/l1_beacon_client_test.go @@ -0,0 +1,150 @@ +package beacon + +import ( + "context" + "crypto/sha256" + "encoding/hex" + "fmt" + "github.com/b2network/b2committer/pkg/client" + "github.com/b2network/b2committer/pkg/log" + "github.com/b2network/b2committer/pkg/merkle" + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum-optimism/optimism/op-service/sources" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/stretchr/testify/require" + mt "github.com/txaty/go-merkletree" + "math/big" + "testing" +) + +const ( + URL = "https://quaint-white-season.ethereum-sepolia.quiknode.pro/b5c30cbb548d8743f08dd175fe50e3e923259d30/" + chainID = 11155111 + SepoliaBatcherSender = "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c" + SepoliaBatcherInbox = "0xff00000000000000000000000000000011155420" +) + +func TestBlockByNumber(t *testing.T) { + l1Signer := types.NewCancunSigner(big.NewInt(chainID)) + fmt.Println(l1Signer.ChainID()) + conn, err := ethclient.Dial(URL) + require.NoError(t, err) + defer conn.Close() + + block, _ := conn.BlockByNumber(context.Background(), big.NewInt(5679002)) + fmt.Println(block.Number()) + tx1, _, _ := conn.TransactionByHash(context.Background(), common.HexToHash("0x3f343bbaa8dd0d76365fad90c87ef6df1fb66fa0342ace6f545aa3e2c8cf7c95")) + fmt.Println(tx1.Hash()) + from, err := l1Signer.Sender(tx1) + fmt.Println(from.Hex()) + blobIndex := 0 // index of each blob in the block's blob sidecar + var hashes []eth.IndexedBlobHash + for _, tx := range block.Transactions() { + if !isValidBatchTx(tx, l1Signer, common.HexToAddress(SepoliaBatcherInbox), common.HexToAddress(SepoliaBatcherSender)) { + blobIndex += len(tx.BlobHashes()) + continue + } + if tx.Type() != types.BlobTxType { + continue + } + for _, h := range tx.BlobHashes() { + idh := eth.IndexedBlobHash{ + Index: uint64(blobIndex), + Hash: h, + } + hashes = append(hashes, idh) + blobIndex += 1 + } + } + fmt.Println(hashes) +} + +func TestNodeVersion(t *testing.T) { + log.Info("test beacon node...") + l1Beacon := sources.NewBeaconHTTPClient(client.NewBasicHTTPClient(URL)) + version, _ := l1Beacon.NodeVersion(context.Background()) + fmt.Println(version) +} + +func TestConfigSpec(t *testing.T) { + l1Beacon := sources.NewBeaconHTTPClient(client.NewBasicHTTPClient(URL)) + config, _ := l1Beacon.ConfigSpec(context.Background()) + fmt.Println(config.Data.SecondsPerSlot) +} + +func TestGetGenesis(t *testing.T) { + //logger := testlog.Logger(t, 0).New("component", "beaconClient") + l1Beacon := sources.NewBeaconHTTPClient(client.NewBasicHTTPClient(URL)) + config, _ := l1Beacon.BeaconGenesis(context.Background()) + fmt.Println(config.Data.GenesisTime) +} + +func TestBeaconBlobSidecars(t *testing.T) { + conn, err := ethclient.Dial(URL) + require.NoError(t, err) + defer conn.Close() + block, _ := conn.BlockByNumber(context.Background(), big.NewInt(5679002)) + fmt.Println(block.Number()) + txs := block.Transactions() + l1Beacon := sources.NewBeaconHTTPClient(client.NewBasicHTTPClient(URL)) + l1BlobFetcher := sources.NewL1BeaconClient(l1Beacon, sources.L1BeaconClientConfig{FetchAllSidecars: false}) + l1Signer := types.NewCancunSigner(big.NewInt(chainID)) + hashes := DataAndHashesFromTxs(txs, l1Signer, common.HexToAddress(SepoliaBatcherInbox), common.HexToAddress(SepoliaBatcherSender)) + l1Block := eth.L1BlockRef{ + Hash: block.Hash(), + Number: block.Number().Uint64(), + ParentHash: block.ParentHash(), + Time: block.Time(), + } + for _, bHash := range hashes { + fmt.Println(bHash) + } + blobs, err := l1BlobFetcher.GetBlobs(context.Background(), l1Block, hashes) + fmt.Println(blobs) +} + +func TestGetBlobByBlockNum(t *testing.T) { + conn, err := ethclient.Dial(URL) + require.NoError(t, err) + defer conn.Close() + l1Signer := types.NewCancunSigner(big.NewInt(chainID)) + l1Beacon := sources.NewBeaconHTTPClient(client.NewBasicHTTPClient(URL)) + l1BlobFetcher := sources.NewL1BeaconClient(l1Beacon, sources.L1BeaconClientConfig{FetchAllSidecars: false}) + bds := NewBlobDataSource(l1Signer, common.HexToAddress(SepoliaBatcherInbox), common.HexToAddress(SepoliaBatcherSender), l1BlobFetcher, conn) + blockBlobInfo, err := bds.GetBlobByBlockNum(context.Background(), big.NewInt(5687502)) + fmt.Println(blockBlobInfo[0].Hash.Index) + fmt.Println(blockBlobInfo[0].Hash.Hash) + fmt.Println(blockBlobInfo[0].BlobSidecar.KZGCommitment) + //fmt.Println(blockBlobInfo[0].BlobSidecar.Blob.String()) + + hash := sha256.Sum256([]byte(blockBlobInfo[0].BlobSidecar.Blob.String())) + fmt.Println(hex.EncodeToString(hash[:])) + + newStateRoots := make([]string, 0) + newStateRoots = append(newStateRoots, hex.EncodeToString(hash[:])) + newStateRoots = append(newStateRoots, hex.EncodeToString(hash[:])) + stateBlocks := merkle.GenerateBlocks(newStateRoots) + stateTree, _ := mt.New(nil, stateBlocks) + stateRootHash := stateTree.Root + println("stateRootHash: ", hex.EncodeToString(stateRootHash)) +} + +func TestGetBlobByBlockNumMainNet(t *testing.T) { + conn, err := ethclient.Dial("https://ethereum-rpc.publicnode.com") + require.NoError(t, err) + defer conn.Close() + l1Signer := types.NewCancunSigner(big.NewInt(1)) + l1Beacon := sources.NewBeaconHTTPClient(client.NewBasicHTTPClient("https://ethereum-beacon-api.publicnode.com")) + l1BlobFetcher := sources.NewL1BeaconClient(l1Beacon, sources.L1BeaconClientConfig{FetchAllSidecars: false}) + bds := NewBlobDataSource(l1Signer, common.HexToAddress("0xFF00000000000000000000000000000000000010"), common.HexToAddress("0x6887246668a3b87F54DeB3b94Ba47a6f63F32985"), l1BlobFetcher, conn) + blockBlobInfo, err := bds.GetBlobByBlockNum(context.Background(), big.NewInt(19645654)) + require.NoError(t, err) + if len(blockBlobInfo) != 0 { + fmt.Println(blockBlobInfo[0].Hash.Index) + fmt.Println(blockBlobInfo[0].Hash.Hash) + fmt.Println(blockBlobInfo[0].BlobSidecar.KZGCommitment) + fmt.Println(blockBlobInfo[0].BlobSidecar.Index) + } +} diff --git a/pkg/client/http.go b/pkg/client/http.go new file mode 100644 index 0000000..d03ed9c --- /dev/null +++ b/pkg/client/http.go @@ -0,0 +1,88 @@ +package client + +import ( + "context" + "errors" + "fmt" + "net/http" + "net/url" + "time" +) + +const ( + DefaultTimeoutSeconds = 30 +) + +var _ HTTP = (*BasicHTTPClient)(nil) + +type HTTP interface { + Get(ctx context.Context, path string, query url.Values, headers http.Header) (*http.Response, error) +} + +type BasicHTTPClient struct { + endpoint string + header http.Header // optional header to use in every request + client *http.Client +} + +func NewBasicHTTPClient(endpoint string, opts ...BasicHTTPClientOption) *BasicHTTPClient { + c := &BasicHTTPClient{ + endpoint: endpoint, + client: &http.Client{Timeout: DefaultTimeoutSeconds * time.Second}, + } + + for _, opt := range opts { + opt.Apply(c) + } + + return c +} + +type BasicHTTPClientOption interface { + Apply(c *BasicHTTPClient) +} + +type BasicHTTPClientOptionFn func(*BasicHTTPClient) + +func (fn BasicHTTPClientOptionFn) Apply(c *BasicHTTPClient) { + fn(c) +} + +func WithHeader(h http.Header) BasicHTTPClientOption { + return BasicHTTPClientOptionFn(func(c *BasicHTTPClient) { + c.header = h + }) +} + +var ErrNoEndpoint = errors.New("no endpoint is configured") + +func (cl *BasicHTTPClient) Get(ctx context.Context, p string, query url.Values, headers http.Header) (*http.Response, error) { + if cl.endpoint == "" { + return nil, ErrNoEndpoint + } + target, err := url.Parse(cl.endpoint) + if err != nil { + return nil, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + // If we include the raw query in the path-join, it gets url-encoded, + // and fails to parse as query, and ends up in the url.URL.Path part on the server side. + // We want to avoid that, and insert the query manually. Real footgun in the url package. + target = target.JoinPath(p) + target.RawQuery = query.Encode() + req, err := http.NewRequestWithContext(ctx, http.MethodGet, target.String(), nil) + if err != nil { + return nil, fmt.Errorf("%w: failed to construct request", err) + } + addHTTPHeaders(req.Header, cl.header, headers) + return cl.client.Do(req) +} + +func addHTTPHeaders(header http.Header, hs ...http.Header) { + for _, h := range hs { + for key, values := range h { + for _, value := range values { + header.Add(key, value) + } + } + } +} diff --git a/pkg/client/http_test.go b/pkg/client/http_test.go new file mode 100644 index 0000000..e288ee0 --- /dev/null +++ b/pkg/client/http_test.go @@ -0,0 +1,43 @@ +package client + +import ( + "context" + "encoding/json" + "fmt" + "github.com/b2network/b2committer/internal/types" + "github.com/stretchr/testify/require" + "io" + "net/http" + "testing" +) + +func TestHttp(t *testing.T) { + url := "https://open-api-testnet.unisat.io/" + client := NewBasicHTTPClient(url) + headers := http.Header{} + headers.Add("Authorization", "Bearer 4cb09e6eec9a0c3ebd07135b3817a3dcedcc9791d50fade4cb564e8ad68a7ac3") + resp, err := client.Get(context.Background(), "/v1/indexer/tx/2f0025a6c5173a4cc5ea6c3eb85b5433c700dfeae34503394933712f8b3ffb26/outs", nil, headers) + require.NoError(t, err) + //b, _ := io.ReadAll(resp.Body) + //fmt.Println(string(b)) + + var res types.APIBTCTxOutputs + json.NewDecoder(resp.Body).Decode(&res) + fmt.Println(res.Data) +} + +func TestContent(t *testing.T) { + url := "https://open-api-testnet.unisat.io/" + client := NewBasicHTTPClient(url) + headers := http.Header{} + headers.Add("Authorization", "Bearer 4cb09e6eec9a0c3ebd07135b3817a3dcedcc9791d50fade4cb564e8ad68a7ac3") + resp, err := client.Get(context.Background(), "/v1/indexer/inscription/content/2f0025a6c5173a4cc5ea6c3eb85b5433c700dfeae34503394933712f8b3ffb26i0", nil, headers) + require.NoError(t, err) + b, _ := io.ReadAll(resp.Body) + fmt.Println(string(b)) + + var res types.StateRootProposal + err = json.Unmarshal(b, &res) + require.NoError(t, err) + fmt.Println(res) +} diff --git a/pkg/contract/op/op_committer.go b/pkg/contract/op/op_committer.go new file mode 100644 index 0000000..04144dc --- /dev/null +++ b/pkg/contract/op/op_committer.go @@ -0,0 +1,1671 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package op + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// OpCommitterMetaData contains all meta data concerning the OpCommitter contract. +var OpCommitterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"}],\"name\":\"StateRootSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"}],\"name\":\"TxsRootSubmitted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txHash\",\"type\":\"string\"}],\"name\":\"bitcoinTxHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalType\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"dsType\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txHash\",\"type\":\"string\"}],\"name\":\"dsTxHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_proposalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalManager\",\"outputs\":[{\"internalType\":\"contractIOpProposalManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposer\",\"outputs\":[{\"internalType\":\"contractIProposer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proposalManager\",\"type\":\"address\"}],\"name\":\"setProposalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"}],\"name\":\"setProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"setStateRootTimeoutPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"setTxsRootTimeoutPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateRootTimeoutPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"}],\"name\":\"submitStateRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"},{\"internalType\":\"uint64[]\",\"name\":\"blockList\",\"type\":\"uint64[]\"}],\"name\":\"submitTxsRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalType\",\"type\":\"uint64\"}],\"name\":\"timeoutProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"txsRootTimeoutPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// OpCommitterABI is the input ABI used to generate the binding from. +// Deprecated: Use OpCommitterMetaData.ABI instead. +var OpCommitterABI = OpCommitterMetaData.ABI + +// OpCommitter is an auto generated Go binding around an Ethereum contract. +type OpCommitter struct { + OpCommitterCaller // Read-only binding to the contract + OpCommitterTransactor // Write-only binding to the contract + OpCommitterFilterer // Log filterer for contract events +} + +// OpCommitterCaller is an auto generated read-only Go binding around an Ethereum contract. +type OpCommitterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OpCommitterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OpCommitterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OpCommitterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OpCommitterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OpCommitterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OpCommitterSession struct { + Contract *OpCommitter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OpCommitterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OpCommitterCallerSession struct { + Contract *OpCommitterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OpCommitterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OpCommitterTransactorSession struct { + Contract *OpCommitterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OpCommitterRaw is an auto generated low-level Go binding around an Ethereum contract. +type OpCommitterRaw struct { + Contract *OpCommitter // Generic contract binding to access the raw methods on +} + +// OpCommitterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OpCommitterCallerRaw struct { + Contract *OpCommitterCaller // Generic read-only contract binding to access the raw methods on +} + +// OpCommitterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OpCommitterTransactorRaw struct { + Contract *OpCommitterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOpCommitter creates a new instance of OpCommitter, bound to a specific deployed contract. +func NewOpCommitter(address common.Address, backend bind.ContractBackend) (*OpCommitter, error) { + contract, err := bindOpCommitter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &OpCommitter{OpCommitterCaller: OpCommitterCaller{contract: contract}, OpCommitterTransactor: OpCommitterTransactor{contract: contract}, OpCommitterFilterer: OpCommitterFilterer{contract: contract}}, nil +} + +// NewOpCommitterCaller creates a new read-only instance of OpCommitter, bound to a specific deployed contract. +func NewOpCommitterCaller(address common.Address, caller bind.ContractCaller) (*OpCommitterCaller, error) { + contract, err := bindOpCommitter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OpCommitterCaller{contract: contract}, nil +} + +// NewOpCommitterTransactor creates a new write-only instance of OpCommitter, bound to a specific deployed contract. +func NewOpCommitterTransactor(address common.Address, transactor bind.ContractTransactor) (*OpCommitterTransactor, error) { + contract, err := bindOpCommitter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OpCommitterTransactor{contract: contract}, nil +} + +// NewOpCommitterFilterer creates a new log filterer instance of OpCommitter, bound to a specific deployed contract. +func NewOpCommitterFilterer(address common.Address, filterer bind.ContractFilterer) (*OpCommitterFilterer, error) { + contract, err := bindOpCommitter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OpCommitterFilterer{contract: contract}, nil +} + +// bindOpCommitter binds a generic wrapper to an already deployed contract. +func bindOpCommitter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OpCommitterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OpCommitter *OpCommitterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OpCommitter.Contract.OpCommitterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OpCommitter *OpCommitterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OpCommitter.Contract.OpCommitterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OpCommitter *OpCommitterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OpCommitter.Contract.OpCommitterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OpCommitter *OpCommitterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OpCommitter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OpCommitter *OpCommitterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OpCommitter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OpCommitter *OpCommitterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OpCommitter.Contract.contract.Transact(opts, method, params...) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_OpCommitter *OpCommitterCaller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_OpCommitter *OpCommitterSession) ADMINROLE() ([32]byte, error) { + return _OpCommitter.Contract.ADMINROLE(&_OpCommitter.CallOpts) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_OpCommitter *OpCommitterCallerSession) ADMINROLE() ([32]byte, error) { + return _OpCommitter.Contract.ADMINROLE(&_OpCommitter.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_OpCommitter *OpCommitterCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_OpCommitter *OpCommitterSession) DEFAULTADMINROLE() ([32]byte, error) { + return _OpCommitter.Contract.DEFAULTADMINROLE(&_OpCommitter.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_OpCommitter *OpCommitterCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _OpCommitter.Contract.DEFAULTADMINROLE(&_OpCommitter.CallOpts) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_OpCommitter *OpCommitterCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_OpCommitter *OpCommitterSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _OpCommitter.Contract.GetRoleAdmin(&_OpCommitter.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_OpCommitter *OpCommitterCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _OpCommitter.Contract.GetRoleAdmin(&_OpCommitter.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_OpCommitter *OpCommitterCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_OpCommitter *OpCommitterSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _OpCommitter.Contract.HasRole(&_OpCommitter.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_OpCommitter *OpCommitterCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _OpCommitter.Contract.HasRole(&_OpCommitter.CallOpts, role, account) +} + +// ProposalManager is a free data retrieval call binding the contract method 0x02f89be2. +// +// Solidity: function proposalManager() view returns(address) +func (_OpCommitter *OpCommitterCaller) ProposalManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "proposalManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ProposalManager is a free data retrieval call binding the contract method 0x02f89be2. +// +// Solidity: function proposalManager() view returns(address) +func (_OpCommitter *OpCommitterSession) ProposalManager() (common.Address, error) { + return _OpCommitter.Contract.ProposalManager(&_OpCommitter.CallOpts) +} + +// ProposalManager is a free data retrieval call binding the contract method 0x02f89be2. +// +// Solidity: function proposalManager() view returns(address) +func (_OpCommitter *OpCommitterCallerSession) ProposalManager() (common.Address, error) { + return _OpCommitter.Contract.ProposalManager(&_OpCommitter.CallOpts) +} + +// Proposer is a free data retrieval call binding the contract method 0xa8e4fb90. +// +// Solidity: function proposer() view returns(address) +func (_OpCommitter *OpCommitterCaller) Proposer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "proposer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Proposer is a free data retrieval call binding the contract method 0xa8e4fb90. +// +// Solidity: function proposer() view returns(address) +func (_OpCommitter *OpCommitterSession) Proposer() (common.Address, error) { + return _OpCommitter.Contract.Proposer(&_OpCommitter.CallOpts) +} + +// Proposer is a free data retrieval call binding the contract method 0xa8e4fb90. +// +// Solidity: function proposer() view returns(address) +func (_OpCommitter *OpCommitterCallerSession) Proposer() (common.Address, error) { + return _OpCommitter.Contract.Proposer(&_OpCommitter.CallOpts) +} + +// StateRootTimeoutPeriod is a free data retrieval call binding the contract method 0x77361d85. +// +// Solidity: function stateRootTimeoutPeriod() view returns(uint256) +func (_OpCommitter *OpCommitterCaller) StateRootTimeoutPeriod(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "stateRootTimeoutPeriod") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StateRootTimeoutPeriod is a free data retrieval call binding the contract method 0x77361d85. +// +// Solidity: function stateRootTimeoutPeriod() view returns(uint256) +func (_OpCommitter *OpCommitterSession) StateRootTimeoutPeriod() (*big.Int, error) { + return _OpCommitter.Contract.StateRootTimeoutPeriod(&_OpCommitter.CallOpts) +} + +// StateRootTimeoutPeriod is a free data retrieval call binding the contract method 0x77361d85. +// +// Solidity: function stateRootTimeoutPeriod() view returns(uint256) +func (_OpCommitter *OpCommitterCallerSession) StateRootTimeoutPeriod() (*big.Int, error) { + return _OpCommitter.Contract.StateRootTimeoutPeriod(&_OpCommitter.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_OpCommitter *OpCommitterCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_OpCommitter *OpCommitterSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _OpCommitter.Contract.SupportsInterface(&_OpCommitter.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_OpCommitter *OpCommitterCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _OpCommitter.Contract.SupportsInterface(&_OpCommitter.CallOpts, interfaceId) +} + +// TxsRootTimeoutPeriod is a free data retrieval call binding the contract method 0x15c4441f. +// +// Solidity: function txsRootTimeoutPeriod() view returns(uint256) +func (_OpCommitter *OpCommitterCaller) TxsRootTimeoutPeriod(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _OpCommitter.contract.Call(opts, &out, "txsRootTimeoutPeriod") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TxsRootTimeoutPeriod is a free data retrieval call binding the contract method 0x15c4441f. +// +// Solidity: function txsRootTimeoutPeriod() view returns(uint256) +func (_OpCommitter *OpCommitterSession) TxsRootTimeoutPeriod() (*big.Int, error) { + return _OpCommitter.Contract.TxsRootTimeoutPeriod(&_OpCommitter.CallOpts) +} + +// TxsRootTimeoutPeriod is a free data retrieval call binding the contract method 0x15c4441f. +// +// Solidity: function txsRootTimeoutPeriod() view returns(uint256) +func (_OpCommitter *OpCommitterCallerSession) TxsRootTimeoutPeriod() (*big.Int, error) { + return _OpCommitter.Contract.TxsRootTimeoutPeriod(&_OpCommitter.CallOpts) +} + +// BitcoinTxHash is a paid mutator transaction binding the contract method 0xa5772e5e. +// +// Solidity: function bitcoinTxHash(uint64 proposalID, string txHash) returns() +func (_OpCommitter *OpCommitterTransactor) BitcoinTxHash(opts *bind.TransactOpts, proposalID uint64, txHash string) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "bitcoinTxHash", proposalID, txHash) +} + +// BitcoinTxHash is a paid mutator transaction binding the contract method 0xa5772e5e. +// +// Solidity: function bitcoinTxHash(uint64 proposalID, string txHash) returns() +func (_OpCommitter *OpCommitterSession) BitcoinTxHash(proposalID uint64, txHash string) (*types.Transaction, error) { + return _OpCommitter.Contract.BitcoinTxHash(&_OpCommitter.TransactOpts, proposalID, txHash) +} + +// BitcoinTxHash is a paid mutator transaction binding the contract method 0xa5772e5e. +// +// Solidity: function bitcoinTxHash(uint64 proposalID, string txHash) returns() +func (_OpCommitter *OpCommitterTransactorSession) BitcoinTxHash(proposalID uint64, txHash string) (*types.Transaction, error) { + return _OpCommitter.Contract.BitcoinTxHash(&_OpCommitter.TransactOpts, proposalID, txHash) +} + +// DsTxHash is a paid mutator transaction binding the contract method 0xe61bd62f. +// +// Solidity: function dsTxHash(uint64 proposalID, uint64 proposalType, uint64 dsType, string txHash) returns() +func (_OpCommitter *OpCommitterTransactor) DsTxHash(opts *bind.TransactOpts, proposalID uint64, proposalType uint64, dsType uint64, txHash string) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "dsTxHash", proposalID, proposalType, dsType, txHash) +} + +// DsTxHash is a paid mutator transaction binding the contract method 0xe61bd62f. +// +// Solidity: function dsTxHash(uint64 proposalID, uint64 proposalType, uint64 dsType, string txHash) returns() +func (_OpCommitter *OpCommitterSession) DsTxHash(proposalID uint64, proposalType uint64, dsType uint64, txHash string) (*types.Transaction, error) { + return _OpCommitter.Contract.DsTxHash(&_OpCommitter.TransactOpts, proposalID, proposalType, dsType, txHash) +} + +// DsTxHash is a paid mutator transaction binding the contract method 0xe61bd62f. +// +// Solidity: function dsTxHash(uint64 proposalID, uint64 proposalType, uint64 dsType, string txHash) returns() +func (_OpCommitter *OpCommitterTransactorSession) DsTxHash(proposalID uint64, proposalType uint64, dsType uint64, txHash string) (*types.Transaction, error) { + return _OpCommitter.Contract.DsTxHash(&_OpCommitter.TransactOpts, proposalID, proposalType, dsType, txHash) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_OpCommitter *OpCommitterTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_OpCommitter *OpCommitterSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.GrantRole(&_OpCommitter.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_OpCommitter *OpCommitterTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.GrantRole(&_OpCommitter.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _proposer, address _proposalManager) returns() +func (_OpCommitter *OpCommitterTransactor) Initialize(opts *bind.TransactOpts, _proposer common.Address, _proposalManager common.Address) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "initialize", _proposer, _proposalManager) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _proposer, address _proposalManager) returns() +func (_OpCommitter *OpCommitterSession) Initialize(_proposer common.Address, _proposalManager common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.Initialize(&_OpCommitter.TransactOpts, _proposer, _proposalManager) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _proposer, address _proposalManager) returns() +func (_OpCommitter *OpCommitterTransactorSession) Initialize(_proposer common.Address, _proposalManager common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.Initialize(&_OpCommitter.TransactOpts, _proposer, _proposalManager) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_OpCommitter *OpCommitterTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_OpCommitter *OpCommitterSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.RenounceRole(&_OpCommitter.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_OpCommitter *OpCommitterTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.RenounceRole(&_OpCommitter.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_OpCommitter *OpCommitterTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_OpCommitter *OpCommitterSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.RevokeRole(&_OpCommitter.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_OpCommitter *OpCommitterTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.RevokeRole(&_OpCommitter.TransactOpts, role, account) +} + +// SetProposalManager is a paid mutator transaction binding the contract method 0x25023f0b. +// +// Solidity: function setProposalManager(address _proposalManager) returns() +func (_OpCommitter *OpCommitterTransactor) SetProposalManager(opts *bind.TransactOpts, _proposalManager common.Address) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "setProposalManager", _proposalManager) +} + +// SetProposalManager is a paid mutator transaction binding the contract method 0x25023f0b. +// +// Solidity: function setProposalManager(address _proposalManager) returns() +func (_OpCommitter *OpCommitterSession) SetProposalManager(_proposalManager common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.SetProposalManager(&_OpCommitter.TransactOpts, _proposalManager) +} + +// SetProposalManager is a paid mutator transaction binding the contract method 0x25023f0b. +// +// Solidity: function setProposalManager(address _proposalManager) returns() +func (_OpCommitter *OpCommitterTransactorSession) SetProposalManager(_proposalManager common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.SetProposalManager(&_OpCommitter.TransactOpts, _proposalManager) +} + +// SetProposer is a paid mutator transaction binding the contract method 0x1fb4a228. +// +// Solidity: function setProposer(address _proposer) returns() +func (_OpCommitter *OpCommitterTransactor) SetProposer(opts *bind.TransactOpts, _proposer common.Address) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "setProposer", _proposer) +} + +// SetProposer is a paid mutator transaction binding the contract method 0x1fb4a228. +// +// Solidity: function setProposer(address _proposer) returns() +func (_OpCommitter *OpCommitterSession) SetProposer(_proposer common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.SetProposer(&_OpCommitter.TransactOpts, _proposer) +} + +// SetProposer is a paid mutator transaction binding the contract method 0x1fb4a228. +// +// Solidity: function setProposer(address _proposer) returns() +func (_OpCommitter *OpCommitterTransactorSession) SetProposer(_proposer common.Address) (*types.Transaction, error) { + return _OpCommitter.Contract.SetProposer(&_OpCommitter.TransactOpts, _proposer) +} + +// SetStateRootTimeoutPeriod is a paid mutator transaction binding the contract method 0x6ed9808a. +// +// Solidity: function setStateRootTimeoutPeriod(uint256 period) returns() +func (_OpCommitter *OpCommitterTransactor) SetStateRootTimeoutPeriod(opts *bind.TransactOpts, period *big.Int) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "setStateRootTimeoutPeriod", period) +} + +// SetStateRootTimeoutPeriod is a paid mutator transaction binding the contract method 0x6ed9808a. +// +// Solidity: function setStateRootTimeoutPeriod(uint256 period) returns() +func (_OpCommitter *OpCommitterSession) SetStateRootTimeoutPeriod(period *big.Int) (*types.Transaction, error) { + return _OpCommitter.Contract.SetStateRootTimeoutPeriod(&_OpCommitter.TransactOpts, period) +} + +// SetStateRootTimeoutPeriod is a paid mutator transaction binding the contract method 0x6ed9808a. +// +// Solidity: function setStateRootTimeoutPeriod(uint256 period) returns() +func (_OpCommitter *OpCommitterTransactorSession) SetStateRootTimeoutPeriod(period *big.Int) (*types.Transaction, error) { + return _OpCommitter.Contract.SetStateRootTimeoutPeriod(&_OpCommitter.TransactOpts, period) +} + +// SetTxsRootTimeoutPeriod is a paid mutator transaction binding the contract method 0x23f7743d. +// +// Solidity: function setTxsRootTimeoutPeriod(uint256 period) returns() +func (_OpCommitter *OpCommitterTransactor) SetTxsRootTimeoutPeriod(opts *bind.TransactOpts, period *big.Int) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "setTxsRootTimeoutPeriod", period) +} + +// SetTxsRootTimeoutPeriod is a paid mutator transaction binding the contract method 0x23f7743d. +// +// Solidity: function setTxsRootTimeoutPeriod(uint256 period) returns() +func (_OpCommitter *OpCommitterSession) SetTxsRootTimeoutPeriod(period *big.Int) (*types.Transaction, error) { + return _OpCommitter.Contract.SetTxsRootTimeoutPeriod(&_OpCommitter.TransactOpts, period) +} + +// SetTxsRootTimeoutPeriod is a paid mutator transaction binding the contract method 0x23f7743d. +// +// Solidity: function setTxsRootTimeoutPeriod(uint256 period) returns() +func (_OpCommitter *OpCommitterTransactorSession) SetTxsRootTimeoutPeriod(period *big.Int) (*types.Transaction, error) { + return _OpCommitter.Contract.SetTxsRootTimeoutPeriod(&_OpCommitter.TransactOpts, period) +} + +// SubmitStateRoot is a paid mutator transaction binding the contract method 0xc7b41985. +// +// Solidity: function submitStateRoot(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex) returns() +func (_OpCommitter *OpCommitterTransactor) SubmitStateRoot(opts *bind.TransactOpts, proposalID uint64, outputRoot string, startL1Timestamp uint64, endL1Timestamp uint64, startL2BlockNumber uint64, endL2BlockNumber uint64, outputStartIndex uint64, outputEndIndex uint64) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "submitStateRoot", proposalID, outputRoot, startL1Timestamp, endL1Timestamp, startL2BlockNumber, endL2BlockNumber, outputStartIndex, outputEndIndex) +} + +// SubmitStateRoot is a paid mutator transaction binding the contract method 0xc7b41985. +// +// Solidity: function submitStateRoot(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex) returns() +func (_OpCommitter *OpCommitterSession) SubmitStateRoot(proposalID uint64, outputRoot string, startL1Timestamp uint64, endL1Timestamp uint64, startL2BlockNumber uint64, endL2BlockNumber uint64, outputStartIndex uint64, outputEndIndex uint64) (*types.Transaction, error) { + return _OpCommitter.Contract.SubmitStateRoot(&_OpCommitter.TransactOpts, proposalID, outputRoot, startL1Timestamp, endL1Timestamp, startL2BlockNumber, endL2BlockNumber, outputStartIndex, outputEndIndex) +} + +// SubmitStateRoot is a paid mutator transaction binding the contract method 0xc7b41985. +// +// Solidity: function submitStateRoot(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex) returns() +func (_OpCommitter *OpCommitterTransactorSession) SubmitStateRoot(proposalID uint64, outputRoot string, startL1Timestamp uint64, endL1Timestamp uint64, startL2BlockNumber uint64, endL2BlockNumber uint64, outputStartIndex uint64, outputEndIndex uint64) (*types.Transaction, error) { + return _OpCommitter.Contract.SubmitStateRoot(&_OpCommitter.TransactOpts, proposalID, outputRoot, startL1Timestamp, endL1Timestamp, startL2BlockNumber, endL2BlockNumber, outputStartIndex, outputEndIndex) +} + +// SubmitTxsRoot is a paid mutator transaction binding the contract method 0xc4bd5e19. +// +// Solidity: function submitTxsRoot(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint64[] blockList) returns() +func (_OpCommitter *OpCommitterTransactor) SubmitTxsRoot(opts *bind.TransactOpts, proposalID uint64, startTimestamp uint64, endTimestamp uint64, startBlockNumber uint64, endBlockNumber uint64, txsRoot string, blockList []uint64) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "submitTxsRoot", proposalID, startTimestamp, endTimestamp, startBlockNumber, endBlockNumber, txsRoot, blockList) +} + +// SubmitTxsRoot is a paid mutator transaction binding the contract method 0xc4bd5e19. +// +// Solidity: function submitTxsRoot(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint64[] blockList) returns() +func (_OpCommitter *OpCommitterSession) SubmitTxsRoot(proposalID uint64, startTimestamp uint64, endTimestamp uint64, startBlockNumber uint64, endBlockNumber uint64, txsRoot string, blockList []uint64) (*types.Transaction, error) { + return _OpCommitter.Contract.SubmitTxsRoot(&_OpCommitter.TransactOpts, proposalID, startTimestamp, endTimestamp, startBlockNumber, endBlockNumber, txsRoot, blockList) +} + +// SubmitTxsRoot is a paid mutator transaction binding the contract method 0xc4bd5e19. +// +// Solidity: function submitTxsRoot(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint64[] blockList) returns() +func (_OpCommitter *OpCommitterTransactorSession) SubmitTxsRoot(proposalID uint64, startTimestamp uint64, endTimestamp uint64, startBlockNumber uint64, endBlockNumber uint64, txsRoot string, blockList []uint64) (*types.Transaction, error) { + return _OpCommitter.Contract.SubmitTxsRoot(&_OpCommitter.TransactOpts, proposalID, startTimestamp, endTimestamp, startBlockNumber, endBlockNumber, txsRoot, blockList) +} + +// TimeoutProposal is a paid mutator transaction binding the contract method 0x04956a75. +// +// Solidity: function timeoutProposal(uint64 proposalID, uint64 proposalType) returns() +func (_OpCommitter *OpCommitterTransactor) TimeoutProposal(opts *bind.TransactOpts, proposalID uint64, proposalType uint64) (*types.Transaction, error) { + return _OpCommitter.contract.Transact(opts, "timeoutProposal", proposalID, proposalType) +} + +// TimeoutProposal is a paid mutator transaction binding the contract method 0x04956a75. +// +// Solidity: function timeoutProposal(uint64 proposalID, uint64 proposalType) returns() +func (_OpCommitter *OpCommitterSession) TimeoutProposal(proposalID uint64, proposalType uint64) (*types.Transaction, error) { + return _OpCommitter.Contract.TimeoutProposal(&_OpCommitter.TransactOpts, proposalID, proposalType) +} + +// TimeoutProposal is a paid mutator transaction binding the contract method 0x04956a75. +// +// Solidity: function timeoutProposal(uint64 proposalID, uint64 proposalType) returns() +func (_OpCommitter *OpCommitterTransactorSession) TimeoutProposal(proposalID uint64, proposalType uint64) (*types.Transaction, error) { + return _OpCommitter.Contract.TimeoutProposal(&_OpCommitter.TransactOpts, proposalID, proposalType) +} + +// OpCommitterInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OpCommitter contract. +type OpCommitterInitializedIterator struct { + Event *OpCommitterInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpCommitterInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpCommitterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpCommitterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpCommitterInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpCommitterInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpCommitterInitialized represents a Initialized event raised by the OpCommitter contract. +type OpCommitterInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OpCommitter *OpCommitterFilterer) FilterInitialized(opts *bind.FilterOpts) (*OpCommitterInitializedIterator, error) { + + logs, sub, err := _OpCommitter.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &OpCommitterInitializedIterator{contract: _OpCommitter.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OpCommitter *OpCommitterFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OpCommitterInitialized) (event.Subscription, error) { + + logs, sub, err := _OpCommitter.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpCommitterInitialized) + if err := _OpCommitter.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OpCommitter *OpCommitterFilterer) ParseInitialized(log types.Log) (*OpCommitterInitialized, error) { + event := new(OpCommitterInitialized) + if err := _OpCommitter.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpCommitterRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the OpCommitter contract. +type OpCommitterRoleAdminChangedIterator struct { + Event *OpCommitterRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpCommitterRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpCommitterRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpCommitterRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpCommitterRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpCommitterRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpCommitterRoleAdminChanged represents a RoleAdminChanged event raised by the OpCommitter contract. +type OpCommitterRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_OpCommitter *OpCommitterFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*OpCommitterRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _OpCommitter.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &OpCommitterRoleAdminChangedIterator{contract: _OpCommitter.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_OpCommitter *OpCommitterFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *OpCommitterRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _OpCommitter.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpCommitterRoleAdminChanged) + if err := _OpCommitter.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_OpCommitter *OpCommitterFilterer) ParseRoleAdminChanged(log types.Log) (*OpCommitterRoleAdminChanged, error) { + event := new(OpCommitterRoleAdminChanged) + if err := _OpCommitter.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpCommitterRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the OpCommitter contract. +type OpCommitterRoleGrantedIterator struct { + Event *OpCommitterRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpCommitterRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpCommitterRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpCommitterRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpCommitterRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpCommitterRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpCommitterRoleGranted represents a RoleGranted event raised by the OpCommitter contract. +type OpCommitterRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpCommitter *OpCommitterFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*OpCommitterRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpCommitter.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &OpCommitterRoleGrantedIterator{contract: _OpCommitter.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpCommitter *OpCommitterFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *OpCommitterRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpCommitter.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpCommitterRoleGranted) + if err := _OpCommitter.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpCommitter *OpCommitterFilterer) ParseRoleGranted(log types.Log) (*OpCommitterRoleGranted, error) { + event := new(OpCommitterRoleGranted) + if err := _OpCommitter.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpCommitterRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the OpCommitter contract. +type OpCommitterRoleRevokedIterator struct { + Event *OpCommitterRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpCommitterRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpCommitterRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpCommitterRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpCommitterRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpCommitterRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpCommitterRoleRevoked represents a RoleRevoked event raised by the OpCommitter contract. +type OpCommitterRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpCommitter *OpCommitterFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*OpCommitterRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpCommitter.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &OpCommitterRoleRevokedIterator{contract: _OpCommitter.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpCommitter *OpCommitterFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *OpCommitterRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpCommitter.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpCommitterRoleRevoked) + if err := _OpCommitter.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpCommitter *OpCommitterFilterer) ParseRoleRevoked(log types.Log) (*OpCommitterRoleRevoked, error) { + event := new(OpCommitterRoleRevoked) + if err := _OpCommitter.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpCommitterStateRootSubmittedIterator is returned from FilterStateRootSubmitted and is used to iterate over the raw logs and unpacked data for StateRootSubmitted events raised by the OpCommitter contract. +type OpCommitterStateRootSubmittedIterator struct { + Event *OpCommitterStateRootSubmitted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpCommitterStateRootSubmittedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpCommitterStateRootSubmitted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpCommitterStateRootSubmitted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpCommitterStateRootSubmittedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpCommitterStateRootSubmittedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpCommitterStateRootSubmitted represents a StateRootSubmitted event raised by the OpCommitter contract. +type OpCommitterStateRootSubmitted struct { + Proposer common.Address + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStateRootSubmitted is a free log retrieval operation binding the contract event 0x1c0e748730db48af63aa72cf24a6070a26522decb8e17f58bd44ed079be45804. +// +// Solidity: event StateRootSubmitted(address indexed proposer, uint64 indexed proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex) +func (_OpCommitter *OpCommitterFilterer) FilterStateRootSubmitted(opts *bind.FilterOpts, proposer []common.Address, proposalID []uint64) (*OpCommitterStateRootSubmittedIterator, error) { + + var proposerRule []interface{} + for _, proposerItem := range proposer { + proposerRule = append(proposerRule, proposerItem) + } + var proposalIDRule []interface{} + for _, proposalIDItem := range proposalID { + proposalIDRule = append(proposalIDRule, proposalIDItem) + } + + logs, sub, err := _OpCommitter.contract.FilterLogs(opts, "StateRootSubmitted", proposerRule, proposalIDRule) + if err != nil { + return nil, err + } + return &OpCommitterStateRootSubmittedIterator{contract: _OpCommitter.contract, event: "StateRootSubmitted", logs: logs, sub: sub}, nil +} + +// WatchStateRootSubmitted is a free log subscription operation binding the contract event 0x1c0e748730db48af63aa72cf24a6070a26522decb8e17f58bd44ed079be45804. +// +// Solidity: event StateRootSubmitted(address indexed proposer, uint64 indexed proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex) +func (_OpCommitter *OpCommitterFilterer) WatchStateRootSubmitted(opts *bind.WatchOpts, sink chan<- *OpCommitterStateRootSubmitted, proposer []common.Address, proposalID []uint64) (event.Subscription, error) { + + var proposerRule []interface{} + for _, proposerItem := range proposer { + proposerRule = append(proposerRule, proposerItem) + } + var proposalIDRule []interface{} + for _, proposalIDItem := range proposalID { + proposalIDRule = append(proposalIDRule, proposalIDItem) + } + + logs, sub, err := _OpCommitter.contract.WatchLogs(opts, "StateRootSubmitted", proposerRule, proposalIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpCommitterStateRootSubmitted) + if err := _OpCommitter.contract.UnpackLog(event, "StateRootSubmitted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStateRootSubmitted is a log parse operation binding the contract event 0x1c0e748730db48af63aa72cf24a6070a26522decb8e17f58bd44ed079be45804. +// +// Solidity: event StateRootSubmitted(address indexed proposer, uint64 indexed proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex) +func (_OpCommitter *OpCommitterFilterer) ParseStateRootSubmitted(log types.Log) (*OpCommitterStateRootSubmitted, error) { + event := new(OpCommitterStateRootSubmitted) + if err := _OpCommitter.contract.UnpackLog(event, "StateRootSubmitted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpCommitterTxsRootSubmittedIterator is returned from FilterTxsRootSubmitted and is used to iterate over the raw logs and unpacked data for TxsRootSubmitted events raised by the OpCommitter contract. +type OpCommitterTxsRootSubmittedIterator struct { + Event *OpCommitterTxsRootSubmitted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpCommitterTxsRootSubmittedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpCommitterTxsRootSubmitted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpCommitterTxsRootSubmitted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpCommitterTxsRootSubmittedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpCommitterTxsRootSubmittedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpCommitterTxsRootSubmitted represents a TxsRootSubmitted event raised by the OpCommitter contract. +type OpCommitterTxsRootSubmitted struct { + Proposer common.Address + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTxsRootSubmitted is a free log retrieval operation binding the contract event 0x3ef8030bfab26ec3eaa1bb9e561677860e6794684c43e6b8a5bb50729281abad. +// +// Solidity: event TxsRootSubmitted(address indexed proposer, uint64 indexed proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot) +func (_OpCommitter *OpCommitterFilterer) FilterTxsRootSubmitted(opts *bind.FilterOpts, proposer []common.Address, proposalID []uint64) (*OpCommitterTxsRootSubmittedIterator, error) { + + var proposerRule []interface{} + for _, proposerItem := range proposer { + proposerRule = append(proposerRule, proposerItem) + } + var proposalIDRule []interface{} + for _, proposalIDItem := range proposalID { + proposalIDRule = append(proposalIDRule, proposalIDItem) + } + + logs, sub, err := _OpCommitter.contract.FilterLogs(opts, "TxsRootSubmitted", proposerRule, proposalIDRule) + if err != nil { + return nil, err + } + return &OpCommitterTxsRootSubmittedIterator{contract: _OpCommitter.contract, event: "TxsRootSubmitted", logs: logs, sub: sub}, nil +} + +// WatchTxsRootSubmitted is a free log subscription operation binding the contract event 0x3ef8030bfab26ec3eaa1bb9e561677860e6794684c43e6b8a5bb50729281abad. +// +// Solidity: event TxsRootSubmitted(address indexed proposer, uint64 indexed proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot) +func (_OpCommitter *OpCommitterFilterer) WatchTxsRootSubmitted(opts *bind.WatchOpts, sink chan<- *OpCommitterTxsRootSubmitted, proposer []common.Address, proposalID []uint64) (event.Subscription, error) { + + var proposerRule []interface{} + for _, proposerItem := range proposer { + proposerRule = append(proposerRule, proposerItem) + } + var proposalIDRule []interface{} + for _, proposalIDItem := range proposalID { + proposalIDRule = append(proposalIDRule, proposalIDItem) + } + + logs, sub, err := _OpCommitter.contract.WatchLogs(opts, "TxsRootSubmitted", proposerRule, proposalIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpCommitterTxsRootSubmitted) + if err := _OpCommitter.contract.UnpackLog(event, "TxsRootSubmitted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTxsRootSubmitted is a log parse operation binding the contract event 0x3ef8030bfab26ec3eaa1bb9e561677860e6794684c43e6b8a5bb50729281abad. +// +// Solidity: event TxsRootSubmitted(address indexed proposer, uint64 indexed proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot) +func (_OpCommitter *OpCommitterFilterer) ParseTxsRootSubmitted(log types.Log) (*OpCommitterTxsRootSubmitted, error) { + event := new(OpCommitterTxsRootSubmitted) + if err := _OpCommitter.contract.UnpackLog(event, "TxsRootSubmitted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contract/op/op_proposal_manager.go b/pkg/contract/op/op_proposal_manager.go new file mode 100644 index 0000000..3c760ef --- /dev/null +++ b/pkg/contract/op/op_proposal_manager.go @@ -0,0 +1,2169 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package op + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// OpProposalStateRootProposal is an auto generated low-level Go binding around an user-defined struct. +type OpProposalStateRootProposal struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address +} + +// OpProposalTxsRootProposal is an auto generated low-level Go binding around an user-defined struct. +type OpProposalTxsRootProposal struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address + BlockList []uint64 +} + +// OpProposalManagerMetaData contains all meta data concerning the OpProposalManager contract. +var OpProposalManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"allBitcoinTxVotes\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalType\",\"type\":\"uint64\"}],\"name\":\"allDSTxVotes\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"proposalType\",\"type\":\"uint8\"}],\"name\":\"allProposalVotes\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"proposalType\",\"type\":\"uint8\"}],\"name\":\"cleanVotes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastStateRootProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bitcoinTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"internalType\":\"structOpProposal.StateRootProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastTxsRootProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"blockList\",\"type\":\"uint64[]\"}],\"internalType\":\"structOpProposal.TxsRootProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"getStateRootProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bitcoinTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"internalType\":\"structOpProposal.StateRootProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"getTxsRootProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"blockList\",\"type\":\"uint64[]\"}],\"internalType\":\"structOpProposal.TxsRootProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVotedOnStateRootDSTxPhase\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVotedOnStateRootProposalPhase\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVotedOnSubmitBitcoinTxPhase\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVotedOnTxsRootProposalPhase\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVotedOntxsRootDSTxPhase\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastStateRootProposal\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bitcoinTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTxsRootProposal\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"opCommitter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"committer\",\"type\":\"address\"}],\"name\":\"setCommitter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bitcoinTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"internalType\":\"structOpProposal.StateRootProposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"setLastStateRootProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"blockList\",\"type\":\"uint64[]\"}],\"internalType\":\"structOpProposal.TxsRootProposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"setLastTxsRootProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bitcoinTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"internalType\":\"structOpProposal.StateRootProposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"setStateRootProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"blockList\",\"type\":\"uint64[]\"}],\"internalType\":\"structOpProposal.TxsRootProposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"setTxsRootProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stateBitcoinTxVotes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stateDSTxVotes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stateRootProposalVotes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"stateRootProposals\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"outputRoot\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL1Timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endL2BlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputStartIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"outputEndIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bitcoinTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"txsDSTxVotes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"txsRootProposalVotes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"txsRootProposals\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txsRoot\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dsType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"dsTxHash\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"proposalType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"proposers\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"voteAndUpdateStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// OpProposalManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use OpProposalManagerMetaData.ABI instead. +var OpProposalManagerABI = OpProposalManagerMetaData.ABI + +// OpProposalManager is an auto generated Go binding around an Ethereum contract. +type OpProposalManager struct { + OpProposalManagerCaller // Read-only binding to the contract + OpProposalManagerTransactor // Write-only binding to the contract + OpProposalManagerFilterer // Log filterer for contract events +} + +// OpProposalManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type OpProposalManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OpProposalManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OpProposalManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OpProposalManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OpProposalManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OpProposalManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OpProposalManagerSession struct { + Contract *OpProposalManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OpProposalManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OpProposalManagerCallerSession struct { + Contract *OpProposalManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OpProposalManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OpProposalManagerTransactorSession struct { + Contract *OpProposalManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OpProposalManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type OpProposalManagerRaw struct { + Contract *OpProposalManager // Generic contract binding to access the raw methods on +} + +// OpProposalManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OpProposalManagerCallerRaw struct { + Contract *OpProposalManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// OpProposalManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OpProposalManagerTransactorRaw struct { + Contract *OpProposalManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOpProposalManager creates a new instance of OpProposalManager, bound to a specific deployed contract. +func NewOpProposalManager(address common.Address, backend bind.ContractBackend) (*OpProposalManager, error) { + contract, err := bindOpProposalManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &OpProposalManager{OpProposalManagerCaller: OpProposalManagerCaller{contract: contract}, OpProposalManagerTransactor: OpProposalManagerTransactor{contract: contract}, OpProposalManagerFilterer: OpProposalManagerFilterer{contract: contract}}, nil +} + +// NewOpProposalManagerCaller creates a new read-only instance of OpProposalManager, bound to a specific deployed contract. +func NewOpProposalManagerCaller(address common.Address, caller bind.ContractCaller) (*OpProposalManagerCaller, error) { + contract, err := bindOpProposalManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OpProposalManagerCaller{contract: contract}, nil +} + +// NewOpProposalManagerTransactor creates a new write-only instance of OpProposalManager, bound to a specific deployed contract. +func NewOpProposalManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*OpProposalManagerTransactor, error) { + contract, err := bindOpProposalManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OpProposalManagerTransactor{contract: contract}, nil +} + +// NewOpProposalManagerFilterer creates a new log filterer instance of OpProposalManager, bound to a specific deployed contract. +func NewOpProposalManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*OpProposalManagerFilterer, error) { + contract, err := bindOpProposalManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OpProposalManagerFilterer{contract: contract}, nil +} + +// bindOpProposalManager binds a generic wrapper to an already deployed contract. +func bindOpProposalManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OpProposalManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OpProposalManager *OpProposalManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OpProposalManager.Contract.OpProposalManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OpProposalManager *OpProposalManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OpProposalManager.Contract.OpProposalManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OpProposalManager *OpProposalManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OpProposalManager.Contract.OpProposalManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OpProposalManager *OpProposalManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OpProposalManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OpProposalManager *OpProposalManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OpProposalManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OpProposalManager *OpProposalManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OpProposalManager.Contract.contract.Transact(opts, method, params...) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_OpProposalManager *OpProposalManagerCaller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_OpProposalManager *OpProposalManagerSession) ADMINROLE() ([32]byte, error) { + return _OpProposalManager.Contract.ADMINROLE(&_OpProposalManager.CallOpts) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_OpProposalManager *OpProposalManagerCallerSession) ADMINROLE() ([32]byte, error) { + return _OpProposalManager.Contract.ADMINROLE(&_OpProposalManager.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_OpProposalManager *OpProposalManagerCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_OpProposalManager *OpProposalManagerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _OpProposalManager.Contract.DEFAULTADMINROLE(&_OpProposalManager.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_OpProposalManager *OpProposalManagerCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _OpProposalManager.Contract.DEFAULTADMINROLE(&_OpProposalManager.CallOpts) +} + +// AllBitcoinTxVotes is a free data retrieval call binding the contract method 0x4f8bcb3d. +// +// Solidity: function allBitcoinTxVotes(uint64 proposalID) view returns(address[]) +func (_OpProposalManager *OpProposalManagerCaller) AllBitcoinTxVotes(opts *bind.CallOpts, proposalID uint64) ([]common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "allBitcoinTxVotes", proposalID) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// AllBitcoinTxVotes is a free data retrieval call binding the contract method 0x4f8bcb3d. +// +// Solidity: function allBitcoinTxVotes(uint64 proposalID) view returns(address[]) +func (_OpProposalManager *OpProposalManagerSession) AllBitcoinTxVotes(proposalID uint64) ([]common.Address, error) { + return _OpProposalManager.Contract.AllBitcoinTxVotes(&_OpProposalManager.CallOpts, proposalID) +} + +// AllBitcoinTxVotes is a free data retrieval call binding the contract method 0x4f8bcb3d. +// +// Solidity: function allBitcoinTxVotes(uint64 proposalID) view returns(address[]) +func (_OpProposalManager *OpProposalManagerCallerSession) AllBitcoinTxVotes(proposalID uint64) ([]common.Address, error) { + return _OpProposalManager.Contract.AllBitcoinTxVotes(&_OpProposalManager.CallOpts, proposalID) +} + +// AllDSTxVotes is a free data retrieval call binding the contract method 0x44d2e4e0. +// +// Solidity: function allDSTxVotes(uint64 proposalID, uint64 proposalType) view returns(address[]) +func (_OpProposalManager *OpProposalManagerCaller) AllDSTxVotes(opts *bind.CallOpts, proposalID uint64, proposalType uint64) ([]common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "allDSTxVotes", proposalID, proposalType) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// AllDSTxVotes is a free data retrieval call binding the contract method 0x44d2e4e0. +// +// Solidity: function allDSTxVotes(uint64 proposalID, uint64 proposalType) view returns(address[]) +func (_OpProposalManager *OpProposalManagerSession) AllDSTxVotes(proposalID uint64, proposalType uint64) ([]common.Address, error) { + return _OpProposalManager.Contract.AllDSTxVotes(&_OpProposalManager.CallOpts, proposalID, proposalType) +} + +// AllDSTxVotes is a free data retrieval call binding the contract method 0x44d2e4e0. +// +// Solidity: function allDSTxVotes(uint64 proposalID, uint64 proposalType) view returns(address[]) +func (_OpProposalManager *OpProposalManagerCallerSession) AllDSTxVotes(proposalID uint64, proposalType uint64) ([]common.Address, error) { + return _OpProposalManager.Contract.AllDSTxVotes(&_OpProposalManager.CallOpts, proposalID, proposalType) +} + +// AllProposalVotes is a free data retrieval call binding the contract method 0x49b97431. +// +// Solidity: function allProposalVotes(uint64 proposalID, uint8 proposalType) view returns(address[]) +func (_OpProposalManager *OpProposalManagerCaller) AllProposalVotes(opts *bind.CallOpts, proposalID uint64, proposalType uint8) ([]common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "allProposalVotes", proposalID, proposalType) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// AllProposalVotes is a free data retrieval call binding the contract method 0x49b97431. +// +// Solidity: function allProposalVotes(uint64 proposalID, uint8 proposalType) view returns(address[]) +func (_OpProposalManager *OpProposalManagerSession) AllProposalVotes(proposalID uint64, proposalType uint8) ([]common.Address, error) { + return _OpProposalManager.Contract.AllProposalVotes(&_OpProposalManager.CallOpts, proposalID, proposalType) +} + +// AllProposalVotes is a free data retrieval call binding the contract method 0x49b97431. +// +// Solidity: function allProposalVotes(uint64 proposalID, uint8 proposalType) view returns(address[]) +func (_OpProposalManager *OpProposalManagerCallerSession) AllProposalVotes(proposalID uint64, proposalType uint8) ([]common.Address, error) { + return _OpProposalManager.Contract.AllProposalVotes(&_OpProposalManager.CallOpts, proposalID, proposalType) +} + +// GetLastStateRootProposal is a free data retrieval call binding the contract method 0x418f1657. +// +// Solidity: function getLastStateRootProposal() view returns((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address)) +func (_OpProposalManager *OpProposalManagerCaller) GetLastStateRootProposal(opts *bind.CallOpts) (OpProposalStateRootProposal, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "getLastStateRootProposal") + + if err != nil { + return *new(OpProposalStateRootProposal), err + } + + out0 := *abi.ConvertType(out[0], new(OpProposalStateRootProposal)).(*OpProposalStateRootProposal) + + return out0, err + +} + +// GetLastStateRootProposal is a free data retrieval call binding the contract method 0x418f1657. +// +// Solidity: function getLastStateRootProposal() view returns((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address)) +func (_OpProposalManager *OpProposalManagerSession) GetLastStateRootProposal() (OpProposalStateRootProposal, error) { + return _OpProposalManager.Contract.GetLastStateRootProposal(&_OpProposalManager.CallOpts) +} + +// GetLastStateRootProposal is a free data retrieval call binding the contract method 0x418f1657. +// +// Solidity: function getLastStateRootProposal() view returns((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address)) +func (_OpProposalManager *OpProposalManagerCallerSession) GetLastStateRootProposal() (OpProposalStateRootProposal, error) { + return _OpProposalManager.Contract.GetLastStateRootProposal(&_OpProposalManager.CallOpts) +} + +// GetLastTxsRootProposal is a free data retrieval call binding the contract method 0x182a2cdb. +// +// Solidity: function getLastTxsRootProposal() view returns((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[])) +func (_OpProposalManager *OpProposalManagerCaller) GetLastTxsRootProposal(opts *bind.CallOpts) (OpProposalTxsRootProposal, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "getLastTxsRootProposal") + + if err != nil { + return *new(OpProposalTxsRootProposal), err + } + + out0 := *abi.ConvertType(out[0], new(OpProposalTxsRootProposal)).(*OpProposalTxsRootProposal) + + return out0, err + +} + +// GetLastTxsRootProposal is a free data retrieval call binding the contract method 0x182a2cdb. +// +// Solidity: function getLastTxsRootProposal() view returns((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[])) +func (_OpProposalManager *OpProposalManagerSession) GetLastTxsRootProposal() (OpProposalTxsRootProposal, error) { + return _OpProposalManager.Contract.GetLastTxsRootProposal(&_OpProposalManager.CallOpts) +} + +// GetLastTxsRootProposal is a free data retrieval call binding the contract method 0x182a2cdb. +// +// Solidity: function getLastTxsRootProposal() view returns((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[])) +func (_OpProposalManager *OpProposalManagerCallerSession) GetLastTxsRootProposal() (OpProposalTxsRootProposal, error) { + return _OpProposalManager.Contract.GetLastTxsRootProposal(&_OpProposalManager.CallOpts) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_OpProposalManager *OpProposalManagerCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_OpProposalManager *OpProposalManagerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _OpProposalManager.Contract.GetRoleAdmin(&_OpProposalManager.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_OpProposalManager *OpProposalManagerCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _OpProposalManager.Contract.GetRoleAdmin(&_OpProposalManager.CallOpts, role) +} + +// GetStateRootProposal is a free data retrieval call binding the contract method 0xacb340b8. +// +// Solidity: function getStateRootProposal(uint64 proposalID) view returns((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address)) +func (_OpProposalManager *OpProposalManagerCaller) GetStateRootProposal(opts *bind.CallOpts, proposalID uint64) (OpProposalStateRootProposal, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "getStateRootProposal", proposalID) + + if err != nil { + return *new(OpProposalStateRootProposal), err + } + + out0 := *abi.ConvertType(out[0], new(OpProposalStateRootProposal)).(*OpProposalStateRootProposal) + + return out0, err + +} + +// GetStateRootProposal is a free data retrieval call binding the contract method 0xacb340b8. +// +// Solidity: function getStateRootProposal(uint64 proposalID) view returns((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address)) +func (_OpProposalManager *OpProposalManagerSession) GetStateRootProposal(proposalID uint64) (OpProposalStateRootProposal, error) { + return _OpProposalManager.Contract.GetStateRootProposal(&_OpProposalManager.CallOpts, proposalID) +} + +// GetStateRootProposal is a free data retrieval call binding the contract method 0xacb340b8. +// +// Solidity: function getStateRootProposal(uint64 proposalID) view returns((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address)) +func (_OpProposalManager *OpProposalManagerCallerSession) GetStateRootProposal(proposalID uint64) (OpProposalStateRootProposal, error) { + return _OpProposalManager.Contract.GetStateRootProposal(&_OpProposalManager.CallOpts, proposalID) +} + +// GetTxsRootProposal is a free data retrieval call binding the contract method 0xac536038. +// +// Solidity: function getTxsRootProposal(uint64 proposalID) view returns((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[])) +func (_OpProposalManager *OpProposalManagerCaller) GetTxsRootProposal(opts *bind.CallOpts, proposalID uint64) (OpProposalTxsRootProposal, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "getTxsRootProposal", proposalID) + + if err != nil { + return *new(OpProposalTxsRootProposal), err + } + + out0 := *abi.ConvertType(out[0], new(OpProposalTxsRootProposal)).(*OpProposalTxsRootProposal) + + return out0, err + +} + +// GetTxsRootProposal is a free data retrieval call binding the contract method 0xac536038. +// +// Solidity: function getTxsRootProposal(uint64 proposalID) view returns((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[])) +func (_OpProposalManager *OpProposalManagerSession) GetTxsRootProposal(proposalID uint64) (OpProposalTxsRootProposal, error) { + return _OpProposalManager.Contract.GetTxsRootProposal(&_OpProposalManager.CallOpts, proposalID) +} + +// GetTxsRootProposal is a free data retrieval call binding the contract method 0xac536038. +// +// Solidity: function getTxsRootProposal(uint64 proposalID) view returns((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[])) +func (_OpProposalManager *OpProposalManagerCallerSession) GetTxsRootProposal(proposalID uint64) (OpProposalTxsRootProposal, error) { + return _OpProposalManager.Contract.GetTxsRootProposal(&_OpProposalManager.CallOpts, proposalID) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_OpProposalManager *OpProposalManagerCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_OpProposalManager *OpProposalManagerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _OpProposalManager.Contract.HasRole(&_OpProposalManager.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_OpProposalManager *OpProposalManagerCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _OpProposalManager.Contract.HasRole(&_OpProposalManager.CallOpts, role, account) +} + +// IsVotedOnStateRootDSTxPhase is a free data retrieval call binding the contract method 0xb48ec5f1. +// +// Solidity: function isVotedOnStateRootDSTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCaller) IsVotedOnStateRootDSTxPhase(opts *bind.CallOpts, proposalID uint64, voter common.Address) (bool, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "isVotedOnStateRootDSTxPhase", proposalID, voter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsVotedOnStateRootDSTxPhase is a free data retrieval call binding the contract method 0xb48ec5f1. +// +// Solidity: function isVotedOnStateRootDSTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerSession) IsVotedOnStateRootDSTxPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnStateRootDSTxPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOnStateRootDSTxPhase is a free data retrieval call binding the contract method 0xb48ec5f1. +// +// Solidity: function isVotedOnStateRootDSTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCallerSession) IsVotedOnStateRootDSTxPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnStateRootDSTxPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOnStateRootProposalPhase is a free data retrieval call binding the contract method 0x641d1f67. +// +// Solidity: function isVotedOnStateRootProposalPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCaller) IsVotedOnStateRootProposalPhase(opts *bind.CallOpts, proposalID uint64, voter common.Address) (bool, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "isVotedOnStateRootProposalPhase", proposalID, voter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsVotedOnStateRootProposalPhase is a free data retrieval call binding the contract method 0x641d1f67. +// +// Solidity: function isVotedOnStateRootProposalPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerSession) IsVotedOnStateRootProposalPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnStateRootProposalPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOnStateRootProposalPhase is a free data retrieval call binding the contract method 0x641d1f67. +// +// Solidity: function isVotedOnStateRootProposalPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCallerSession) IsVotedOnStateRootProposalPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnStateRootProposalPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOnSubmitBitcoinTxPhase is a free data retrieval call binding the contract method 0xfab0c232. +// +// Solidity: function isVotedOnSubmitBitcoinTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCaller) IsVotedOnSubmitBitcoinTxPhase(opts *bind.CallOpts, proposalID uint64, voter common.Address) (bool, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "isVotedOnSubmitBitcoinTxPhase", proposalID, voter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsVotedOnSubmitBitcoinTxPhase is a free data retrieval call binding the contract method 0xfab0c232. +// +// Solidity: function isVotedOnSubmitBitcoinTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerSession) IsVotedOnSubmitBitcoinTxPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnSubmitBitcoinTxPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOnSubmitBitcoinTxPhase is a free data retrieval call binding the contract method 0xfab0c232. +// +// Solidity: function isVotedOnSubmitBitcoinTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCallerSession) IsVotedOnSubmitBitcoinTxPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnSubmitBitcoinTxPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOnTxsRootProposalPhase is a free data retrieval call binding the contract method 0xb698fcea. +// +// Solidity: function isVotedOnTxsRootProposalPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCaller) IsVotedOnTxsRootProposalPhase(opts *bind.CallOpts, proposalID uint64, voter common.Address) (bool, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "isVotedOnTxsRootProposalPhase", proposalID, voter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsVotedOnTxsRootProposalPhase is a free data retrieval call binding the contract method 0xb698fcea. +// +// Solidity: function isVotedOnTxsRootProposalPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerSession) IsVotedOnTxsRootProposalPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnTxsRootProposalPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOnTxsRootProposalPhase is a free data retrieval call binding the contract method 0xb698fcea. +// +// Solidity: function isVotedOnTxsRootProposalPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCallerSession) IsVotedOnTxsRootProposalPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOnTxsRootProposalPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOntxsRootDSTxPhase is a free data retrieval call binding the contract method 0x34c8f27e. +// +// Solidity: function isVotedOntxsRootDSTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCaller) IsVotedOntxsRootDSTxPhase(opts *bind.CallOpts, proposalID uint64, voter common.Address) (bool, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "isVotedOntxsRootDSTxPhase", proposalID, voter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsVotedOntxsRootDSTxPhase is a free data retrieval call binding the contract method 0x34c8f27e. +// +// Solidity: function isVotedOntxsRootDSTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerSession) IsVotedOntxsRootDSTxPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOntxsRootDSTxPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// IsVotedOntxsRootDSTxPhase is a free data retrieval call binding the contract method 0x34c8f27e. +// +// Solidity: function isVotedOntxsRootDSTxPhase(uint64 proposalID, address voter) view returns(bool) +func (_OpProposalManager *OpProposalManagerCallerSession) IsVotedOntxsRootDSTxPhase(proposalID uint64, voter common.Address) (bool, error) { + return _OpProposalManager.Contract.IsVotedOntxsRootDSTxPhase(&_OpProposalManager.CallOpts, proposalID, voter) +} + +// LastStateRootProposal is a free data retrieval call binding the contract method 0x50613301. +// +// Solidity: function lastStateRootProposal() view returns(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, string bitcoinTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCaller) LastStateRootProposal(opts *bind.CallOpts) (struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address +}, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "lastStateRootProposal") + + outstruct := new(struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address + }) + if err != nil { + return *outstruct, err + } + + outstruct.ProposalID = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.OutputRoot = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.StartL1Timestamp = *abi.ConvertType(out[2], new(uint64)).(*uint64) + outstruct.EndL1Timestamp = *abi.ConvertType(out[3], new(uint64)).(*uint64) + outstruct.StartL2BlockNumber = *abi.ConvertType(out[4], new(uint64)).(*uint64) + outstruct.EndL2BlockNumber = *abi.ConvertType(out[5], new(uint64)).(*uint64) + outstruct.OutputStartIndex = *abi.ConvertType(out[6], new(uint64)).(*uint64) + outstruct.OutputEndIndex = *abi.ConvertType(out[7], new(uint64)).(*uint64) + outstruct.Timeout = *abi.ConvertType(out[8], new(*big.Int)).(**big.Int) + outstruct.Status = *abi.ConvertType(out[9], new(uint8)).(*uint8) + outstruct.DsType = *abi.ConvertType(out[10], new(uint8)).(*uint8) + outstruct.DsTxHash = *abi.ConvertType(out[11], new(string)).(*string) + outstruct.BitcoinTxHash = *abi.ConvertType(out[12], new(string)).(*string) + outstruct.Winner = *abi.ConvertType(out[13], new(common.Address)).(*common.Address) + + return *outstruct, err + +} + +// LastStateRootProposal is a free data retrieval call binding the contract method 0x50613301. +// +// Solidity: function lastStateRootProposal() view returns(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, string bitcoinTxHash, address winner) +func (_OpProposalManager *OpProposalManagerSession) LastStateRootProposal() (struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.LastStateRootProposal(&_OpProposalManager.CallOpts) +} + +// LastStateRootProposal is a free data retrieval call binding the contract method 0x50613301. +// +// Solidity: function lastStateRootProposal() view returns(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, string bitcoinTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCallerSession) LastStateRootProposal() (struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.LastStateRootProposal(&_OpProposalManager.CallOpts) +} + +// LastTxsRootProposal is a free data retrieval call binding the contract method 0xdba274ab. +// +// Solidity: function lastTxsRootProposal() view returns(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCaller) LastTxsRootProposal(opts *bind.CallOpts) (struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address +}, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "lastTxsRootProposal") + + outstruct := new(struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address + }) + if err != nil { + return *outstruct, err + } + + outstruct.ProposalID = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.StartTimestamp = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.EndTimestamp = *abi.ConvertType(out[2], new(uint64)).(*uint64) + outstruct.StartBlockNumber = *abi.ConvertType(out[3], new(uint64)).(*uint64) + outstruct.EndBlockNumber = *abi.ConvertType(out[4], new(uint64)).(*uint64) + outstruct.TxsRoot = *abi.ConvertType(out[5], new(string)).(*string) + outstruct.Timeout = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int) + outstruct.Status = *abi.ConvertType(out[7], new(uint8)).(*uint8) + outstruct.DsType = *abi.ConvertType(out[8], new(uint8)).(*uint8) + outstruct.DsTxHash = *abi.ConvertType(out[9], new(string)).(*string) + outstruct.Winner = *abi.ConvertType(out[10], new(common.Address)).(*common.Address) + + return *outstruct, err + +} + +// LastTxsRootProposal is a free data retrieval call binding the contract method 0xdba274ab. +// +// Solidity: function lastTxsRootProposal() view returns(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, address winner) +func (_OpProposalManager *OpProposalManagerSession) LastTxsRootProposal() (struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.LastTxsRootProposal(&_OpProposalManager.CallOpts) +} + +// LastTxsRootProposal is a free data retrieval call binding the contract method 0xdba274ab. +// +// Solidity: function lastTxsRootProposal() view returns(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCallerSession) LastTxsRootProposal() (struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.LastTxsRootProposal(&_OpProposalManager.CallOpts) +} + +// OpCommitter is a free data retrieval call binding the contract method 0x960a5fce. +// +// Solidity: function opCommitter() view returns(address) +func (_OpProposalManager *OpProposalManagerCaller) OpCommitter(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "opCommitter") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OpCommitter is a free data retrieval call binding the contract method 0x960a5fce. +// +// Solidity: function opCommitter() view returns(address) +func (_OpProposalManager *OpProposalManagerSession) OpCommitter() (common.Address, error) { + return _OpProposalManager.Contract.OpCommitter(&_OpProposalManager.CallOpts) +} + +// OpCommitter is a free data retrieval call binding the contract method 0x960a5fce. +// +// Solidity: function opCommitter() view returns(address) +func (_OpProposalManager *OpProposalManagerCallerSession) OpCommitter() (common.Address, error) { + return _OpProposalManager.Contract.OpCommitter(&_OpProposalManager.CallOpts) +} + +// StateBitcoinTxVotes is a free data retrieval call binding the contract method 0xf8ebaea9. +// +// Solidity: function stateBitcoinTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCaller) StateBitcoinTxVotes(opts *bind.CallOpts, arg0 uint64, arg1 *big.Int) (common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "stateBitcoinTxVotes", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StateBitcoinTxVotes is a free data retrieval call binding the contract method 0xf8ebaea9. +// +// Solidity: function stateBitcoinTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerSession) StateBitcoinTxVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.StateBitcoinTxVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// StateBitcoinTxVotes is a free data retrieval call binding the contract method 0xf8ebaea9. +// +// Solidity: function stateBitcoinTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCallerSession) StateBitcoinTxVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.StateBitcoinTxVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// StateDSTxVotes is a free data retrieval call binding the contract method 0x5914f79b. +// +// Solidity: function stateDSTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCaller) StateDSTxVotes(opts *bind.CallOpts, arg0 uint64, arg1 *big.Int) (common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "stateDSTxVotes", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StateDSTxVotes is a free data retrieval call binding the contract method 0x5914f79b. +// +// Solidity: function stateDSTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerSession) StateDSTxVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.StateDSTxVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// StateDSTxVotes is a free data retrieval call binding the contract method 0x5914f79b. +// +// Solidity: function stateDSTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCallerSession) StateDSTxVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.StateDSTxVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// StateRootProposalVotes is a free data retrieval call binding the contract method 0x2820260d. +// +// Solidity: function stateRootProposalVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCaller) StateRootProposalVotes(opts *bind.CallOpts, arg0 uint64, arg1 *big.Int) (common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "stateRootProposalVotes", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StateRootProposalVotes is a free data retrieval call binding the contract method 0x2820260d. +// +// Solidity: function stateRootProposalVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerSession) StateRootProposalVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.StateRootProposalVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// StateRootProposalVotes is a free data retrieval call binding the contract method 0x2820260d. +// +// Solidity: function stateRootProposalVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCallerSession) StateRootProposalVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.StateRootProposalVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// StateRootProposals is a free data retrieval call binding the contract method 0x09a99a33. +// +// Solidity: function stateRootProposals(uint64 ) view returns(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, string bitcoinTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCaller) StateRootProposals(opts *bind.CallOpts, arg0 uint64) (struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address +}, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "stateRootProposals", arg0) + + outstruct := new(struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address + }) + if err != nil { + return *outstruct, err + } + + outstruct.ProposalID = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.OutputRoot = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.StartL1Timestamp = *abi.ConvertType(out[2], new(uint64)).(*uint64) + outstruct.EndL1Timestamp = *abi.ConvertType(out[3], new(uint64)).(*uint64) + outstruct.StartL2BlockNumber = *abi.ConvertType(out[4], new(uint64)).(*uint64) + outstruct.EndL2BlockNumber = *abi.ConvertType(out[5], new(uint64)).(*uint64) + outstruct.OutputStartIndex = *abi.ConvertType(out[6], new(uint64)).(*uint64) + outstruct.OutputEndIndex = *abi.ConvertType(out[7], new(uint64)).(*uint64) + outstruct.Timeout = *abi.ConvertType(out[8], new(*big.Int)).(**big.Int) + outstruct.Status = *abi.ConvertType(out[9], new(uint8)).(*uint8) + outstruct.DsType = *abi.ConvertType(out[10], new(uint8)).(*uint8) + outstruct.DsTxHash = *abi.ConvertType(out[11], new(string)).(*string) + outstruct.BitcoinTxHash = *abi.ConvertType(out[12], new(string)).(*string) + outstruct.Winner = *abi.ConvertType(out[13], new(common.Address)).(*common.Address) + + return *outstruct, err + +} + +// StateRootProposals is a free data retrieval call binding the contract method 0x09a99a33. +// +// Solidity: function stateRootProposals(uint64 ) view returns(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, string bitcoinTxHash, address winner) +func (_OpProposalManager *OpProposalManagerSession) StateRootProposals(arg0 uint64) (struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.StateRootProposals(&_OpProposalManager.CallOpts, arg0) +} + +// StateRootProposals is a free data retrieval call binding the contract method 0x09a99a33. +// +// Solidity: function stateRootProposals(uint64 ) view returns(uint64 proposalID, string outputRoot, uint64 startL1Timestamp, uint64 endL1Timestamp, uint64 startL2BlockNumber, uint64 endL2BlockNumber, uint64 outputStartIndex, uint64 outputEndIndex, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, string bitcoinTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCallerSession) StateRootProposals(arg0 uint64) (struct { + ProposalID uint64 + OutputRoot string + StartL1Timestamp uint64 + EndL1Timestamp uint64 + StartL2BlockNumber uint64 + EndL2BlockNumber uint64 + OutputStartIndex uint64 + OutputEndIndex uint64 + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + BitcoinTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.StateRootProposals(&_OpProposalManager.CallOpts, arg0) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_OpProposalManager *OpProposalManagerCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_OpProposalManager *OpProposalManagerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _OpProposalManager.Contract.SupportsInterface(&_OpProposalManager.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_OpProposalManager *OpProposalManagerCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _OpProposalManager.Contract.SupportsInterface(&_OpProposalManager.CallOpts, interfaceId) +} + +// TxsDSTxVotes is a free data retrieval call binding the contract method 0x7aef9daa. +// +// Solidity: function txsDSTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCaller) TxsDSTxVotes(opts *bind.CallOpts, arg0 uint64, arg1 *big.Int) (common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "txsDSTxVotes", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TxsDSTxVotes is a free data retrieval call binding the contract method 0x7aef9daa. +// +// Solidity: function txsDSTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerSession) TxsDSTxVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.TxsDSTxVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// TxsDSTxVotes is a free data retrieval call binding the contract method 0x7aef9daa. +// +// Solidity: function txsDSTxVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCallerSession) TxsDSTxVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.TxsDSTxVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// TxsRootProposalVotes is a free data retrieval call binding the contract method 0x79d4f0bc. +// +// Solidity: function txsRootProposalVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCaller) TxsRootProposalVotes(opts *bind.CallOpts, arg0 uint64, arg1 *big.Int) (common.Address, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "txsRootProposalVotes", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TxsRootProposalVotes is a free data retrieval call binding the contract method 0x79d4f0bc. +// +// Solidity: function txsRootProposalVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerSession) TxsRootProposalVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.TxsRootProposalVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// TxsRootProposalVotes is a free data retrieval call binding the contract method 0x79d4f0bc. +// +// Solidity: function txsRootProposalVotes(uint64 , uint256 ) view returns(address) +func (_OpProposalManager *OpProposalManagerCallerSession) TxsRootProposalVotes(arg0 uint64, arg1 *big.Int) (common.Address, error) { + return _OpProposalManager.Contract.TxsRootProposalVotes(&_OpProposalManager.CallOpts, arg0, arg1) +} + +// TxsRootProposals is a free data retrieval call binding the contract method 0x4a568b6a. +// +// Solidity: function txsRootProposals(uint64 ) view returns(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCaller) TxsRootProposals(opts *bind.CallOpts, arg0 uint64) (struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address +}, error) { + var out []interface{} + err := _OpProposalManager.contract.Call(opts, &out, "txsRootProposals", arg0) + + outstruct := new(struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address + }) + if err != nil { + return *outstruct, err + } + + outstruct.ProposalID = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.StartTimestamp = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.EndTimestamp = *abi.ConvertType(out[2], new(uint64)).(*uint64) + outstruct.StartBlockNumber = *abi.ConvertType(out[3], new(uint64)).(*uint64) + outstruct.EndBlockNumber = *abi.ConvertType(out[4], new(uint64)).(*uint64) + outstruct.TxsRoot = *abi.ConvertType(out[5], new(string)).(*string) + outstruct.Timeout = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int) + outstruct.Status = *abi.ConvertType(out[7], new(uint8)).(*uint8) + outstruct.DsType = *abi.ConvertType(out[8], new(uint8)).(*uint8) + outstruct.DsTxHash = *abi.ConvertType(out[9], new(string)).(*string) + outstruct.Winner = *abi.ConvertType(out[10], new(common.Address)).(*common.Address) + + return *outstruct, err + +} + +// TxsRootProposals is a free data retrieval call binding the contract method 0x4a568b6a. +// +// Solidity: function txsRootProposals(uint64 ) view returns(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, address winner) +func (_OpProposalManager *OpProposalManagerSession) TxsRootProposals(arg0 uint64) (struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.TxsRootProposals(&_OpProposalManager.CallOpts, arg0) +} + +// TxsRootProposals is a free data retrieval call binding the contract method 0x4a568b6a. +// +// Solidity: function txsRootProposals(uint64 ) view returns(uint64 proposalID, uint64 startTimestamp, uint64 endTimestamp, uint64 startBlockNumber, uint64 endBlockNumber, string txsRoot, uint256 timeout, uint8 status, uint8 dsType, string dsTxHash, address winner) +func (_OpProposalManager *OpProposalManagerCallerSession) TxsRootProposals(arg0 uint64) (struct { + ProposalID uint64 + StartTimestamp uint64 + EndTimestamp uint64 + StartBlockNumber uint64 + EndBlockNumber uint64 + TxsRoot string + Timeout *big.Int + Status uint8 + DsType uint8 + DsTxHash string + Winner common.Address +}, error) { + return _OpProposalManager.Contract.TxsRootProposals(&_OpProposalManager.CallOpts, arg0) +} + +// CleanVotes is a paid mutator transaction binding the contract method 0x09fa1b23. +// +// Solidity: function cleanVotes(uint64 proposalID, uint8 proposalType) returns() +func (_OpProposalManager *OpProposalManagerTransactor) CleanVotes(opts *bind.TransactOpts, proposalID uint64, proposalType uint8) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "cleanVotes", proposalID, proposalType) +} + +// CleanVotes is a paid mutator transaction binding the contract method 0x09fa1b23. +// +// Solidity: function cleanVotes(uint64 proposalID, uint8 proposalType) returns() +func (_OpProposalManager *OpProposalManagerSession) CleanVotes(proposalID uint64, proposalType uint8) (*types.Transaction, error) { + return _OpProposalManager.Contract.CleanVotes(&_OpProposalManager.TransactOpts, proposalID, proposalType) +} + +// CleanVotes is a paid mutator transaction binding the contract method 0x09fa1b23. +// +// Solidity: function cleanVotes(uint64 proposalID, uint8 proposalType) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) CleanVotes(proposalID uint64, proposalType uint8) (*types.Transaction, error) { + return _OpProposalManager.Contract.CleanVotes(&_OpProposalManager.TransactOpts, proposalID, proposalType) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_OpProposalManager *OpProposalManagerTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_OpProposalManager *OpProposalManagerSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.GrantRole(&_OpProposalManager.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.GrantRole(&_OpProposalManager.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_OpProposalManager *OpProposalManagerTransactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "initialize") +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_OpProposalManager *OpProposalManagerSession) Initialize() (*types.Transaction, error) { + return _OpProposalManager.Contract.Initialize(&_OpProposalManager.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) Initialize() (*types.Transaction, error) { + return _OpProposalManager.Contract.Initialize(&_OpProposalManager.TransactOpts) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_OpProposalManager *OpProposalManagerTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_OpProposalManager *OpProposalManagerSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.RenounceRole(&_OpProposalManager.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.RenounceRole(&_OpProposalManager.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_OpProposalManager *OpProposalManagerTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_OpProposalManager *OpProposalManagerSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.RevokeRole(&_OpProposalManager.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.RevokeRole(&_OpProposalManager.TransactOpts, role, account) +} + +// SetCommitter is a paid mutator transaction binding the contract method 0xdd51ce22. +// +// Solidity: function setCommitter(address committer) returns() +func (_OpProposalManager *OpProposalManagerTransactor) SetCommitter(opts *bind.TransactOpts, committer common.Address) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "setCommitter", committer) +} + +// SetCommitter is a paid mutator transaction binding the contract method 0xdd51ce22. +// +// Solidity: function setCommitter(address committer) returns() +func (_OpProposalManager *OpProposalManagerSession) SetCommitter(committer common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetCommitter(&_OpProposalManager.TransactOpts, committer) +} + +// SetCommitter is a paid mutator transaction binding the contract method 0xdd51ce22. +// +// Solidity: function setCommitter(address committer) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) SetCommitter(committer common.Address) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetCommitter(&_OpProposalManager.TransactOpts, committer) +} + +// SetLastStateRootProposal is a paid mutator transaction binding the contract method 0x9cb06586. +// +// Solidity: function setLastStateRootProposal((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactor) SetLastStateRootProposal(opts *bind.TransactOpts, proposal OpProposalStateRootProposal) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "setLastStateRootProposal", proposal) +} + +// SetLastStateRootProposal is a paid mutator transaction binding the contract method 0x9cb06586. +// +// Solidity: function setLastStateRootProposal((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address) proposal) returns() +func (_OpProposalManager *OpProposalManagerSession) SetLastStateRootProposal(proposal OpProposalStateRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetLastStateRootProposal(&_OpProposalManager.TransactOpts, proposal) +} + +// SetLastStateRootProposal is a paid mutator transaction binding the contract method 0x9cb06586. +// +// Solidity: function setLastStateRootProposal((uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) SetLastStateRootProposal(proposal OpProposalStateRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetLastStateRootProposal(&_OpProposalManager.TransactOpts, proposal) +} + +// SetLastTxsRootProposal is a paid mutator transaction binding the contract method 0x4d377509. +// +// Solidity: function setLastTxsRootProposal((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[]) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactor) SetLastTxsRootProposal(opts *bind.TransactOpts, proposal OpProposalTxsRootProposal) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "setLastTxsRootProposal", proposal) +} + +// SetLastTxsRootProposal is a paid mutator transaction binding the contract method 0x4d377509. +// +// Solidity: function setLastTxsRootProposal((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[]) proposal) returns() +func (_OpProposalManager *OpProposalManagerSession) SetLastTxsRootProposal(proposal OpProposalTxsRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetLastTxsRootProposal(&_OpProposalManager.TransactOpts, proposal) +} + +// SetLastTxsRootProposal is a paid mutator transaction binding the contract method 0x4d377509. +// +// Solidity: function setLastTxsRootProposal((uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[]) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) SetLastTxsRootProposal(proposal OpProposalTxsRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetLastTxsRootProposal(&_OpProposalManager.TransactOpts, proposal) +} + +// SetStateRootProposal is a paid mutator transaction binding the contract method 0x7aec53cb. +// +// Solidity: function setStateRootProposal(uint64 proposalID, (uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactor) SetStateRootProposal(opts *bind.TransactOpts, proposalID uint64, proposal OpProposalStateRootProposal) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "setStateRootProposal", proposalID, proposal) +} + +// SetStateRootProposal is a paid mutator transaction binding the contract method 0x7aec53cb. +// +// Solidity: function setStateRootProposal(uint64 proposalID, (uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address) proposal) returns() +func (_OpProposalManager *OpProposalManagerSession) SetStateRootProposal(proposalID uint64, proposal OpProposalStateRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetStateRootProposal(&_OpProposalManager.TransactOpts, proposalID, proposal) +} + +// SetStateRootProposal is a paid mutator transaction binding the contract method 0x7aec53cb. +// +// Solidity: function setStateRootProposal(uint64 proposalID, (uint64,string,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint8,uint8,string,string,address) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) SetStateRootProposal(proposalID uint64, proposal OpProposalStateRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetStateRootProposal(&_OpProposalManager.TransactOpts, proposalID, proposal) +} + +// SetTxsRootProposal is a paid mutator transaction binding the contract method 0xf5a40448. +// +// Solidity: function setTxsRootProposal(uint64 proposalID, (uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[]) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactor) SetTxsRootProposal(opts *bind.TransactOpts, proposalID uint64, proposal OpProposalTxsRootProposal) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "setTxsRootProposal", proposalID, proposal) +} + +// SetTxsRootProposal is a paid mutator transaction binding the contract method 0xf5a40448. +// +// Solidity: function setTxsRootProposal(uint64 proposalID, (uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[]) proposal) returns() +func (_OpProposalManager *OpProposalManagerSession) SetTxsRootProposal(proposalID uint64, proposal OpProposalTxsRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetTxsRootProposal(&_OpProposalManager.TransactOpts, proposalID, proposal) +} + +// SetTxsRootProposal is a paid mutator transaction binding the contract method 0xf5a40448. +// +// Solidity: function setTxsRootProposal(uint64 proposalID, (uint64,uint64,uint64,uint64,uint64,string,uint256,uint8,uint8,string,address,uint64[]) proposal) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) SetTxsRootProposal(proposalID uint64, proposal OpProposalTxsRootProposal) (*types.Transaction, error) { + return _OpProposalManager.Contract.SetTxsRootProposal(&_OpProposalManager.TransactOpts, proposalID, proposal) +} + +// VoteAndUpdateStatus is a paid mutator transaction binding the contract method 0xe4f5c160. +// +// Solidity: function voteAndUpdateStatus(uint64 proposalID, uint8 proposalType, address voter, address[] proposers, uint8 phase, uint8 status) returns() +func (_OpProposalManager *OpProposalManagerTransactor) VoteAndUpdateStatus(opts *bind.TransactOpts, proposalID uint64, proposalType uint8, voter common.Address, proposers []common.Address, phase uint8, status uint8) (*types.Transaction, error) { + return _OpProposalManager.contract.Transact(opts, "voteAndUpdateStatus", proposalID, proposalType, voter, proposers, phase, status) +} + +// VoteAndUpdateStatus is a paid mutator transaction binding the contract method 0xe4f5c160. +// +// Solidity: function voteAndUpdateStatus(uint64 proposalID, uint8 proposalType, address voter, address[] proposers, uint8 phase, uint8 status) returns() +func (_OpProposalManager *OpProposalManagerSession) VoteAndUpdateStatus(proposalID uint64, proposalType uint8, voter common.Address, proposers []common.Address, phase uint8, status uint8) (*types.Transaction, error) { + return _OpProposalManager.Contract.VoteAndUpdateStatus(&_OpProposalManager.TransactOpts, proposalID, proposalType, voter, proposers, phase, status) +} + +// VoteAndUpdateStatus is a paid mutator transaction binding the contract method 0xe4f5c160. +// +// Solidity: function voteAndUpdateStatus(uint64 proposalID, uint8 proposalType, address voter, address[] proposers, uint8 phase, uint8 status) returns() +func (_OpProposalManager *OpProposalManagerTransactorSession) VoteAndUpdateStatus(proposalID uint64, proposalType uint8, voter common.Address, proposers []common.Address, phase uint8, status uint8) (*types.Transaction, error) { + return _OpProposalManager.Contract.VoteAndUpdateStatus(&_OpProposalManager.TransactOpts, proposalID, proposalType, voter, proposers, phase, status) +} + +// OpProposalManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OpProposalManager contract. +type OpProposalManagerInitializedIterator struct { + Event *OpProposalManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpProposalManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpProposalManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpProposalManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpProposalManagerInitialized represents a Initialized event raised by the OpProposalManager contract. +type OpProposalManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OpProposalManager *OpProposalManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*OpProposalManagerInitializedIterator, error) { + + logs, sub, err := _OpProposalManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &OpProposalManagerInitializedIterator{contract: _OpProposalManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OpProposalManager *OpProposalManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OpProposalManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _OpProposalManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpProposalManagerInitialized) + if err := _OpProposalManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OpProposalManager *OpProposalManagerFilterer) ParseInitialized(log types.Log) (*OpProposalManagerInitialized, error) { + event := new(OpProposalManagerInitialized) + if err := _OpProposalManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpProposalManagerRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the OpProposalManager contract. +type OpProposalManagerRoleAdminChangedIterator struct { + Event *OpProposalManagerRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpProposalManagerRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpProposalManagerRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpProposalManagerRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpProposalManagerRoleAdminChanged represents a RoleAdminChanged event raised by the OpProposalManager contract. +type OpProposalManagerRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_OpProposalManager *OpProposalManagerFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*OpProposalManagerRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _OpProposalManager.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &OpProposalManagerRoleAdminChangedIterator{contract: _OpProposalManager.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_OpProposalManager *OpProposalManagerFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *OpProposalManagerRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _OpProposalManager.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpProposalManagerRoleAdminChanged) + if err := _OpProposalManager.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_OpProposalManager *OpProposalManagerFilterer) ParseRoleAdminChanged(log types.Log) (*OpProposalManagerRoleAdminChanged, error) { + event := new(OpProposalManagerRoleAdminChanged) + if err := _OpProposalManager.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpProposalManagerRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the OpProposalManager contract. +type OpProposalManagerRoleGrantedIterator struct { + Event *OpProposalManagerRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpProposalManagerRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpProposalManagerRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpProposalManagerRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpProposalManagerRoleGranted represents a RoleGranted event raised by the OpProposalManager contract. +type OpProposalManagerRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpProposalManager *OpProposalManagerFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*OpProposalManagerRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpProposalManager.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &OpProposalManagerRoleGrantedIterator{contract: _OpProposalManager.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpProposalManager *OpProposalManagerFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *OpProposalManagerRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpProposalManager.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpProposalManagerRoleGranted) + if err := _OpProposalManager.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpProposalManager *OpProposalManagerFilterer) ParseRoleGranted(log types.Log) (*OpProposalManagerRoleGranted, error) { + event := new(OpProposalManagerRoleGranted) + if err := _OpProposalManager.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OpProposalManagerRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the OpProposalManager contract. +type OpProposalManagerRoleRevokedIterator struct { + Event *OpProposalManagerRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OpProposalManagerRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OpProposalManagerRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OpProposalManagerRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OpProposalManagerRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OpProposalManagerRoleRevoked represents a RoleRevoked event raised by the OpProposalManager contract. +type OpProposalManagerRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpProposalManager *OpProposalManagerFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*OpProposalManagerRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpProposalManager.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &OpProposalManagerRoleRevokedIterator{contract: _OpProposalManager.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpProposalManager *OpProposalManagerFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *OpProposalManagerRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _OpProposalManager.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OpProposalManagerRoleRevoked) + if err := _OpProposalManager.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_OpProposalManager *OpProposalManagerFilterer) ParseRoleRevoked(log types.Log) (*OpProposalManagerRoleRevoked, error) { + event := new(OpProposalManagerRoleRevoked) + if err := _OpProposalManager.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contract/op/proposer.go b/pkg/contract/op/proposer.go new file mode 100644 index 0000000..72f76d6 --- /dev/null +++ b/pkg/contract/op/proposer.go @@ -0,0 +1,1206 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package op + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ProposerMetaData contains all meta data concerning the Proposer contract. +var ProposerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"}],\"name\":\"addProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProposers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isProposer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proposers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposersList\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"}],\"name\":\"removeProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// ProposerABI is the input ABI used to generate the binding from. +// Deprecated: Use ProposerMetaData.ABI instead. +var ProposerABI = ProposerMetaData.ABI + +// Proposer is an auto generated Go binding around an Ethereum contract. +type Proposer struct { + ProposerCaller // Read-only binding to the contract + ProposerTransactor // Write-only binding to the contract + ProposerFilterer // Log filterer for contract events +} + +// ProposerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProposerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProposerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProposerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProposerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProposerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProposerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProposerSession struct { + Contract *Proposer // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProposerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProposerCallerSession struct { + Contract *ProposerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProposerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProposerTransactorSession struct { + Contract *ProposerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProposerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProposerRaw struct { + Contract *Proposer // Generic contract binding to access the raw methods on +} + +// ProposerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProposerCallerRaw struct { + Contract *ProposerCaller // Generic read-only contract binding to access the raw methods on +} + +// ProposerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProposerTransactorRaw struct { + Contract *ProposerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProposer creates a new instance of Proposer, bound to a specific deployed contract. +func NewProposer(address common.Address, backend bind.ContractBackend) (*Proposer, error) { + contract, err := bindProposer(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Proposer{ProposerCaller: ProposerCaller{contract: contract}, ProposerTransactor: ProposerTransactor{contract: contract}, ProposerFilterer: ProposerFilterer{contract: contract}}, nil +} + +// NewProposerCaller creates a new read-only instance of Proposer, bound to a specific deployed contract. +func NewProposerCaller(address common.Address, caller bind.ContractCaller) (*ProposerCaller, error) { + contract, err := bindProposer(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProposerCaller{contract: contract}, nil +} + +// NewProposerTransactor creates a new write-only instance of Proposer, bound to a specific deployed contract. +func NewProposerTransactor(address common.Address, transactor bind.ContractTransactor) (*ProposerTransactor, error) { + contract, err := bindProposer(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProposerTransactor{contract: contract}, nil +} + +// NewProposerFilterer creates a new log filterer instance of Proposer, bound to a specific deployed contract. +func NewProposerFilterer(address common.Address, filterer bind.ContractFilterer) (*ProposerFilterer, error) { + contract, err := bindProposer(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProposerFilterer{contract: contract}, nil +} + +// bindProposer binds a generic wrapper to an already deployed contract. +func bindProposer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProposerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proposer *ProposerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proposer.Contract.ProposerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proposer *ProposerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proposer.Contract.ProposerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proposer *ProposerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proposer.Contract.ProposerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proposer *ProposerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proposer.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proposer *ProposerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proposer.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proposer *ProposerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proposer.Contract.contract.Transact(opts, method, params...) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_Proposer *ProposerCaller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_Proposer *ProposerSession) ADMINROLE() ([32]byte, error) { + return _Proposer.Contract.ADMINROLE(&_Proposer.CallOpts) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_Proposer *ProposerCallerSession) ADMINROLE() ([32]byte, error) { + return _Proposer.Contract.ADMINROLE(&_Proposer.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Proposer *ProposerCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Proposer *ProposerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _Proposer.Contract.DEFAULTADMINROLE(&_Proposer.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Proposer *ProposerCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _Proposer.Contract.DEFAULTADMINROLE(&_Proposer.CallOpts) +} + +// AllProposers is a free data retrieval call binding the contract method 0x239e1e3d. +// +// Solidity: function allProposers() view returns(address[]) +func (_Proposer *ProposerCaller) AllProposers(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "allProposers") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// AllProposers is a free data retrieval call binding the contract method 0x239e1e3d. +// +// Solidity: function allProposers() view returns(address[]) +func (_Proposer *ProposerSession) AllProposers() ([]common.Address, error) { + return _Proposer.Contract.AllProposers(&_Proposer.CallOpts) +} + +// AllProposers is a free data retrieval call binding the contract method 0x239e1e3d. +// +// Solidity: function allProposers() view returns(address[]) +func (_Proposer *ProposerCallerSession) AllProposers() ([]common.Address, error) { + return _Proposer.Contract.AllProposers(&_Proposer.CallOpts) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Proposer *ProposerCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Proposer *ProposerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _Proposer.Contract.GetRoleAdmin(&_Proposer.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Proposer *ProposerCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _Proposer.Contract.GetRoleAdmin(&_Proposer.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Proposer *ProposerCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Proposer *ProposerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _Proposer.Contract.HasRole(&_Proposer.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Proposer *ProposerCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _Proposer.Contract.HasRole(&_Proposer.CallOpts, role, account) +} + +// IsProposer is a free data retrieval call binding the contract method 0x74ec29a0. +// +// Solidity: function isProposer(address sender) view returns(bool) +func (_Proposer *ProposerCaller) IsProposer(opts *bind.CallOpts, sender common.Address) (bool, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "isProposer", sender) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsProposer is a free data retrieval call binding the contract method 0x74ec29a0. +// +// Solidity: function isProposer(address sender) view returns(bool) +func (_Proposer *ProposerSession) IsProposer(sender common.Address) (bool, error) { + return _Proposer.Contract.IsProposer(&_Proposer.CallOpts, sender) +} + +// IsProposer is a free data retrieval call binding the contract method 0x74ec29a0. +// +// Solidity: function isProposer(address sender) view returns(bool) +func (_Proposer *ProposerCallerSession) IsProposer(sender common.Address) (bool, error) { + return _Proposer.Contract.IsProposer(&_Proposer.CallOpts, sender) +} + +// Proposers is a free data retrieval call binding the contract method 0x18177497. +// +// Solidity: function proposers(address ) view returns(bool) +func (_Proposer *ProposerCaller) Proposers(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "proposers", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Proposers is a free data retrieval call binding the contract method 0x18177497. +// +// Solidity: function proposers(address ) view returns(bool) +func (_Proposer *ProposerSession) Proposers(arg0 common.Address) (bool, error) { + return _Proposer.Contract.Proposers(&_Proposer.CallOpts, arg0) +} + +// Proposers is a free data retrieval call binding the contract method 0x18177497. +// +// Solidity: function proposers(address ) view returns(bool) +func (_Proposer *ProposerCallerSession) Proposers(arg0 common.Address) (bool, error) { + return _Proposer.Contract.Proposers(&_Proposer.CallOpts, arg0) +} + +// ProposersList is a free data retrieval call binding the contract method 0x5ad97dd8. +// +// Solidity: function proposersList(uint256 ) view returns(address) +func (_Proposer *ProposerCaller) ProposersList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "proposersList", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ProposersList is a free data retrieval call binding the contract method 0x5ad97dd8. +// +// Solidity: function proposersList(uint256 ) view returns(address) +func (_Proposer *ProposerSession) ProposersList(arg0 *big.Int) (common.Address, error) { + return _Proposer.Contract.ProposersList(&_Proposer.CallOpts, arg0) +} + +// ProposersList is a free data retrieval call binding the contract method 0x5ad97dd8. +// +// Solidity: function proposersList(uint256 ) view returns(address) +func (_Proposer *ProposerCallerSession) ProposersList(arg0 *big.Int) (common.Address, error) { + return _Proposer.Contract.ProposersList(&_Proposer.CallOpts, arg0) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_Proposer *ProposerCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _Proposer.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_Proposer *ProposerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _Proposer.Contract.SupportsInterface(&_Proposer.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_Proposer *ProposerCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _Proposer.Contract.SupportsInterface(&_Proposer.CallOpts, interfaceId) +} + +// AddProposer is a paid mutator transaction binding the contract method 0xb03cd418. +// +// Solidity: function addProposer(address proposer) returns() +func (_Proposer *ProposerTransactor) AddProposer(opts *bind.TransactOpts, proposer common.Address) (*types.Transaction, error) { + return _Proposer.contract.Transact(opts, "addProposer", proposer) +} + +// AddProposer is a paid mutator transaction binding the contract method 0xb03cd418. +// +// Solidity: function addProposer(address proposer) returns() +func (_Proposer *ProposerSession) AddProposer(proposer common.Address) (*types.Transaction, error) { + return _Proposer.Contract.AddProposer(&_Proposer.TransactOpts, proposer) +} + +// AddProposer is a paid mutator transaction binding the contract method 0xb03cd418. +// +// Solidity: function addProposer(address proposer) returns() +func (_Proposer *ProposerTransactorSession) AddProposer(proposer common.Address) (*types.Transaction, error) { + return _Proposer.Contract.AddProposer(&_Proposer.TransactOpts, proposer) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Proposer *ProposerTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _Proposer.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Proposer *ProposerSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Proposer.Contract.GrantRole(&_Proposer.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Proposer *ProposerTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Proposer.Contract.GrantRole(&_Proposer.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Proposer *ProposerTransactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proposer.contract.Transact(opts, "initialize") +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Proposer *ProposerSession) Initialize() (*types.Transaction, error) { + return _Proposer.Contract.Initialize(&_Proposer.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Proposer *ProposerTransactorSession) Initialize() (*types.Transaction, error) { + return _Proposer.Contract.Initialize(&_Proposer.TransactOpts) +} + +// RemoveProposer is a paid mutator transaction binding the contract method 0x09d632d3. +// +// Solidity: function removeProposer(address proposer) returns() +func (_Proposer *ProposerTransactor) RemoveProposer(opts *bind.TransactOpts, proposer common.Address) (*types.Transaction, error) { + return _Proposer.contract.Transact(opts, "removeProposer", proposer) +} + +// RemoveProposer is a paid mutator transaction binding the contract method 0x09d632d3. +// +// Solidity: function removeProposer(address proposer) returns() +func (_Proposer *ProposerSession) RemoveProposer(proposer common.Address) (*types.Transaction, error) { + return _Proposer.Contract.RemoveProposer(&_Proposer.TransactOpts, proposer) +} + +// RemoveProposer is a paid mutator transaction binding the contract method 0x09d632d3. +// +// Solidity: function removeProposer(address proposer) returns() +func (_Proposer *ProposerTransactorSession) RemoveProposer(proposer common.Address) (*types.Transaction, error) { + return _Proposer.Contract.RemoveProposer(&_Proposer.TransactOpts, proposer) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_Proposer *ProposerTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _Proposer.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_Proposer *ProposerSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _Proposer.Contract.RenounceRole(&_Proposer.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_Proposer *ProposerTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _Proposer.Contract.RenounceRole(&_Proposer.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Proposer *ProposerTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _Proposer.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Proposer *ProposerSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Proposer.Contract.RevokeRole(&_Proposer.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Proposer *ProposerTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Proposer.Contract.RevokeRole(&_Proposer.TransactOpts, role, account) +} + +// ProposerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Proposer contract. +type ProposerInitializedIterator struct { + Event *ProposerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProposerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProposerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProposerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProposerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProposerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProposerInitialized represents a Initialized event raised by the Proposer contract. +type ProposerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Proposer *ProposerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ProposerInitializedIterator, error) { + + logs, sub, err := _Proposer.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ProposerInitializedIterator{contract: _Proposer.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Proposer *ProposerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ProposerInitialized) (event.Subscription, error) { + + logs, sub, err := _Proposer.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProposerInitialized) + if err := _Proposer.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Proposer *ProposerFilterer) ParseInitialized(log types.Log) (*ProposerInitialized, error) { + event := new(ProposerInitialized) + if err := _Proposer.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProposerRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the Proposer contract. +type ProposerRoleAdminChangedIterator struct { + Event *ProposerRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProposerRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProposerRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProposerRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProposerRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProposerRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProposerRoleAdminChanged represents a RoleAdminChanged event raised by the Proposer contract. +type ProposerRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Proposer *ProposerFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*ProposerRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _Proposer.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &ProposerRoleAdminChangedIterator{contract: _Proposer.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Proposer *ProposerFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *ProposerRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _Proposer.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProposerRoleAdminChanged) + if err := _Proposer.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Proposer *ProposerFilterer) ParseRoleAdminChanged(log types.Log) (*ProposerRoleAdminChanged, error) { + event := new(ProposerRoleAdminChanged) + if err := _Proposer.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProposerRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the Proposer contract. +type ProposerRoleGrantedIterator struct { + Event *ProposerRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProposerRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProposerRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProposerRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProposerRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProposerRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProposerRoleGranted represents a RoleGranted event raised by the Proposer contract. +type ProposerRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Proposer *ProposerFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ProposerRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Proposer.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ProposerRoleGrantedIterator{contract: _Proposer.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Proposer *ProposerFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *ProposerRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Proposer.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProposerRoleGranted) + if err := _Proposer.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Proposer *ProposerFilterer) ParseRoleGranted(log types.Log) (*ProposerRoleGranted, error) { + event := new(ProposerRoleGranted) + if err := _Proposer.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProposerRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the Proposer contract. +type ProposerRoleRevokedIterator struct { + Event *ProposerRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProposerRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProposerRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProposerRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProposerRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProposerRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProposerRoleRevoked represents a RoleRevoked event raised by the Proposer contract. +type ProposerRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Proposer *ProposerFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ProposerRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Proposer.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ProposerRoleRevokedIterator{contract: _Proposer.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Proposer *ProposerFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *ProposerRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Proposer.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProposerRoleRevoked) + if err := _Proposer.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Proposer *ProposerFilterer) ParseRoleRevoked(log types.Log) (*ProposerRoleRevoked, error) { + event := new(ProposerRoleRevoked) + if err := _Proposer.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contract/zk/committer.go b/pkg/contract/zk/committer.go new file mode 100644 index 0000000..572c468 --- /dev/null +++ b/pkg/contract/zk/committer.go @@ -0,0 +1,2442 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zk + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// CommitterProposal is an auto generated low-level Go binding around an user-defined struct. +type CommitterProposal struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string +} + +// CommitterMetaData contains all meta data concerning the Committer contract. +var CommitterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProposalIsNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"proofHash\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"stateRootHash\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"ProposalSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"ProposalTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"}],\"name\":\"VoteProposal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"}],\"name\":\"addChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"}],\"name\":\"addProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allChains\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProposers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"allSubmitBitcoinTxVotes\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"allSubmitProofVotes\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txHash\",\"type\":\"string\"}],\"name\":\"arweaveTx\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"txHash\",\"type\":\"string\"}],\"name\":\"bitcoinTx\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"chains\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"chainsList\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"a\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"b\",\"type\":\"string\"}],\"name\":\"compareStrings\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"}],\"name\":\"getLastProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"proofHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"stateRootHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"btcTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"arweaveTxHash\",\"type\":\"string\"}],\"internalType\":\"structCommitter.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"isProposalTimeout\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isProposer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"}],\"name\":\"isSupportedChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVotedOnBitcoinTxPhase\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVotedOnSubmitProofPhase\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"lastProposal\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"proofHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"stateRootHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"btcTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"arweaveTxHash\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"proposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"proofHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"stateRootHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"btcTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"arweaveTxHash\",\"type\":\"string\"}],\"internalType\":\"structCommitter.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"proofHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"stateRootHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"btcTxHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"arweaveTxHash\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proposers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposersList\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"}],\"name\":\"removeChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"}],\"name\":\"removeProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"setTimeoutPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"submitBitcoinTxPhaseVotes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"proofHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"stateRootHash\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"startIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endIndex\",\"type\":\"uint64\"}],\"name\":\"submitProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"submitProofPhaseVotes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timeoutPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposalID\",\"type\":\"uint64\"}],\"name\":\"timeoutProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// CommitterABI is the input ABI used to generate the binding from. +// Deprecated: Use CommitterMetaData.ABI instead. +var CommitterABI = CommitterMetaData.ABI + +// Committer is an auto generated Go binding around an Ethereum contract. +type Committer struct { + CommitterCaller // Read-only binding to the contract + CommitterTransactor // Write-only binding to the contract + CommitterFilterer // Log filterer for contract events +} + +// CommitterCaller is an auto generated read-only Go binding around an Ethereum contract. +type CommitterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CommitterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type CommitterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CommitterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type CommitterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CommitterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type CommitterSession struct { + Contract *Committer // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CommitterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type CommitterCallerSession struct { + Contract *CommitterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// CommitterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type CommitterTransactorSession struct { + Contract *CommitterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CommitterRaw is an auto generated low-level Go binding around an Ethereum contract. +type CommitterRaw struct { + Contract *Committer // Generic contract binding to access the raw methods on +} + +// CommitterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type CommitterCallerRaw struct { + Contract *CommitterCaller // Generic read-only contract binding to access the raw methods on +} + +// CommitterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type CommitterTransactorRaw struct { + Contract *CommitterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewCommitter creates a new instance of Committer, bound to a specific deployed contract. +func NewCommitter(address common.Address, backend bind.ContractBackend) (*Committer, error) { + contract, err := bindCommitter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Committer{CommitterCaller: CommitterCaller{contract: contract}, CommitterTransactor: CommitterTransactor{contract: contract}, CommitterFilterer: CommitterFilterer{contract: contract}}, nil +} + +// NewCommitterCaller creates a new read-only instance of Committer, bound to a specific deployed contract. +func NewCommitterCaller(address common.Address, caller bind.ContractCaller) (*CommitterCaller, error) { + contract, err := bindCommitter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &CommitterCaller{contract: contract}, nil +} + +// NewCommitterTransactor creates a new write-only instance of Committer, bound to a specific deployed contract. +func NewCommitterTransactor(address common.Address, transactor bind.ContractTransactor) (*CommitterTransactor, error) { + contract, err := bindCommitter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &CommitterTransactor{contract: contract}, nil +} + +// NewCommitterFilterer creates a new log filterer instance of Committer, bound to a specific deployed contract. +func NewCommitterFilterer(address common.Address, filterer bind.ContractFilterer) (*CommitterFilterer, error) { + contract, err := bindCommitter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &CommitterFilterer{contract: contract}, nil +} + +// bindCommitter binds a generic wrapper to an already deployed contract. +func bindCommitter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CommitterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Committer *CommitterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Committer.Contract.CommitterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Committer *CommitterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Committer.Contract.CommitterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Committer *CommitterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Committer.Contract.CommitterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Committer *CommitterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Committer.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Committer *CommitterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Committer.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Committer *CommitterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Committer.Contract.contract.Transact(opts, method, params...) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_Committer *CommitterCaller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_Committer *CommitterSession) ADMINROLE() ([32]byte, error) { + return _Committer.Contract.ADMINROLE(&_Committer.CallOpts) +} + +// ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. +// +// Solidity: function ADMIN_ROLE() view returns(bytes32) +func (_Committer *CommitterCallerSession) ADMINROLE() ([32]byte, error) { + return _Committer.Contract.ADMINROLE(&_Committer.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Committer *CommitterCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Committer *CommitterSession) DEFAULTADMINROLE() ([32]byte, error) { + return _Committer.Contract.DEFAULTADMINROLE(&_Committer.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Committer *CommitterCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _Committer.Contract.DEFAULTADMINROLE(&_Committer.CallOpts) +} + +// AllChains is a free data retrieval call binding the contract method 0x7f3f94b1. +// +// Solidity: function allChains() view returns(uint64[]) +func (_Committer *CommitterCaller) AllChains(opts *bind.CallOpts) ([]uint64, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "allChains") + + if err != nil { + return *new([]uint64), err + } + + out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64) + + return out0, err + +} + +// AllChains is a free data retrieval call binding the contract method 0x7f3f94b1. +// +// Solidity: function allChains() view returns(uint64[]) +func (_Committer *CommitterSession) AllChains() ([]uint64, error) { + return _Committer.Contract.AllChains(&_Committer.CallOpts) +} + +// AllChains is a free data retrieval call binding the contract method 0x7f3f94b1. +// +// Solidity: function allChains() view returns(uint64[]) +func (_Committer *CommitterCallerSession) AllChains() ([]uint64, error) { + return _Committer.Contract.AllChains(&_Committer.CallOpts) +} + +// AllProposers is a free data retrieval call binding the contract method 0x239e1e3d. +// +// Solidity: function allProposers() view returns(address[]) +func (_Committer *CommitterCaller) AllProposers(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "allProposers") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// AllProposers is a free data retrieval call binding the contract method 0x239e1e3d. +// +// Solidity: function allProposers() view returns(address[]) +func (_Committer *CommitterSession) AllProposers() ([]common.Address, error) { + return _Committer.Contract.AllProposers(&_Committer.CallOpts) +} + +// AllProposers is a free data retrieval call binding the contract method 0x239e1e3d. +// +// Solidity: function allProposers() view returns(address[]) +func (_Committer *CommitterCallerSession) AllProposers() ([]common.Address, error) { + return _Committer.Contract.AllProposers(&_Committer.CallOpts) +} + +// AllSubmitBitcoinTxVotes is a free data retrieval call binding the contract method 0xbedc7561. +// +// Solidity: function allSubmitBitcoinTxVotes(uint64 chainID, uint64 proposalID) view returns(address[]) +func (_Committer *CommitterCaller) AllSubmitBitcoinTxVotes(opts *bind.CallOpts, chainID uint64, proposalID uint64) ([]common.Address, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "allSubmitBitcoinTxVotes", chainID, proposalID) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// AllSubmitBitcoinTxVotes is a free data retrieval call binding the contract method 0xbedc7561. +// +// Solidity: function allSubmitBitcoinTxVotes(uint64 chainID, uint64 proposalID) view returns(address[]) +func (_Committer *CommitterSession) AllSubmitBitcoinTxVotes(chainID uint64, proposalID uint64) ([]common.Address, error) { + return _Committer.Contract.AllSubmitBitcoinTxVotes(&_Committer.CallOpts, chainID, proposalID) +} + +// AllSubmitBitcoinTxVotes is a free data retrieval call binding the contract method 0xbedc7561. +// +// Solidity: function allSubmitBitcoinTxVotes(uint64 chainID, uint64 proposalID) view returns(address[]) +func (_Committer *CommitterCallerSession) AllSubmitBitcoinTxVotes(chainID uint64, proposalID uint64) ([]common.Address, error) { + return _Committer.Contract.AllSubmitBitcoinTxVotes(&_Committer.CallOpts, chainID, proposalID) +} + +// AllSubmitProofVotes is a free data retrieval call binding the contract method 0xea7d929a. +// +// Solidity: function allSubmitProofVotes(uint64 chainID, uint64 proposalID) view returns(address[]) +func (_Committer *CommitterCaller) AllSubmitProofVotes(opts *bind.CallOpts, chainID uint64, proposalID uint64) ([]common.Address, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "allSubmitProofVotes", chainID, proposalID) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// AllSubmitProofVotes is a free data retrieval call binding the contract method 0xea7d929a. +// +// Solidity: function allSubmitProofVotes(uint64 chainID, uint64 proposalID) view returns(address[]) +func (_Committer *CommitterSession) AllSubmitProofVotes(chainID uint64, proposalID uint64) ([]common.Address, error) { + return _Committer.Contract.AllSubmitProofVotes(&_Committer.CallOpts, chainID, proposalID) +} + +// AllSubmitProofVotes is a free data retrieval call binding the contract method 0xea7d929a. +// +// Solidity: function allSubmitProofVotes(uint64 chainID, uint64 proposalID) view returns(address[]) +func (_Committer *CommitterCallerSession) AllSubmitProofVotes(chainID uint64, proposalID uint64) ([]common.Address, error) { + return _Committer.Contract.AllSubmitProofVotes(&_Committer.CallOpts, chainID, proposalID) +} + +// Chains is a free data retrieval call binding the contract method 0xada8bcdc. +// +// Solidity: function chains(uint64 ) view returns(bool) +func (_Committer *CommitterCaller) Chains(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "chains", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Chains is a free data retrieval call binding the contract method 0xada8bcdc. +// +// Solidity: function chains(uint64 ) view returns(bool) +func (_Committer *CommitterSession) Chains(arg0 uint64) (bool, error) { + return _Committer.Contract.Chains(&_Committer.CallOpts, arg0) +} + +// Chains is a free data retrieval call binding the contract method 0xada8bcdc. +// +// Solidity: function chains(uint64 ) view returns(bool) +func (_Committer *CommitterCallerSession) Chains(arg0 uint64) (bool, error) { + return _Committer.Contract.Chains(&_Committer.CallOpts, arg0) +} + +// ChainsList is a free data retrieval call binding the contract method 0x2bc3db0a. +// +// Solidity: function chainsList(uint256 ) view returns(uint64) +func (_Committer *CommitterCaller) ChainsList(opts *bind.CallOpts, arg0 *big.Int) (uint64, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "chainsList", arg0) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ChainsList is a free data retrieval call binding the contract method 0x2bc3db0a. +// +// Solidity: function chainsList(uint256 ) view returns(uint64) +func (_Committer *CommitterSession) ChainsList(arg0 *big.Int) (uint64, error) { + return _Committer.Contract.ChainsList(&_Committer.CallOpts, arg0) +} + +// ChainsList is a free data retrieval call binding the contract method 0x2bc3db0a. +// +// Solidity: function chainsList(uint256 ) view returns(uint64) +func (_Committer *CommitterCallerSession) ChainsList(arg0 *big.Int) (uint64, error) { + return _Committer.Contract.ChainsList(&_Committer.CallOpts, arg0) +} + +// CompareStrings is a free data retrieval call binding the contract method 0xbed34bba. +// +// Solidity: function compareStrings(string a, string b) pure returns(bool) +func (_Committer *CommitterCaller) CompareStrings(opts *bind.CallOpts, a string, b string) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "compareStrings", a, b) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CompareStrings is a free data retrieval call binding the contract method 0xbed34bba. +// +// Solidity: function compareStrings(string a, string b) pure returns(bool) +func (_Committer *CommitterSession) CompareStrings(a string, b string) (bool, error) { + return _Committer.Contract.CompareStrings(&_Committer.CallOpts, a, b) +} + +// CompareStrings is a free data retrieval call binding the contract method 0xbed34bba. +// +// Solidity: function compareStrings(string a, string b) pure returns(bool) +func (_Committer *CommitterCallerSession) CompareStrings(a string, b string) (bool, error) { + return _Committer.Contract.CompareStrings(&_Committer.CallOpts, a, b) +} + +// GetLastProposal is a free data retrieval call binding the contract method 0xa2c732fd. +// +// Solidity: function getLastProposal(uint64 chainID) view returns((uint64,uint64,uint64,uint8,uint256,address,string,string,string,string)) +func (_Committer *CommitterCaller) GetLastProposal(opts *bind.CallOpts, chainID uint64) (CommitterProposal, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "getLastProposal", chainID) + + if err != nil { + return *new(CommitterProposal), err + } + + out0 := *abi.ConvertType(out[0], new(CommitterProposal)).(*CommitterProposal) + + return out0, err + +} + +// GetLastProposal is a free data retrieval call binding the contract method 0xa2c732fd. +// +// Solidity: function getLastProposal(uint64 chainID) view returns((uint64,uint64,uint64,uint8,uint256,address,string,string,string,string)) +func (_Committer *CommitterSession) GetLastProposal(chainID uint64) (CommitterProposal, error) { + return _Committer.Contract.GetLastProposal(&_Committer.CallOpts, chainID) +} + +// GetLastProposal is a free data retrieval call binding the contract method 0xa2c732fd. +// +// Solidity: function getLastProposal(uint64 chainID) view returns((uint64,uint64,uint64,uint8,uint256,address,string,string,string,string)) +func (_Committer *CommitterCallerSession) GetLastProposal(chainID uint64) (CommitterProposal, error) { + return _Committer.Contract.GetLastProposal(&_Committer.CallOpts, chainID) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Committer *CommitterCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Committer *CommitterSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _Committer.Contract.GetRoleAdmin(&_Committer.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Committer *CommitterCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _Committer.Contract.GetRoleAdmin(&_Committer.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Committer *CommitterCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Committer *CommitterSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _Committer.Contract.HasRole(&_Committer.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Committer *CommitterCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _Committer.Contract.HasRole(&_Committer.CallOpts, role, account) +} + +// IsProposalTimeout is a free data retrieval call binding the contract method 0x1b77a930. +// +// Solidity: function isProposalTimeout(uint64 chainID, uint64 proposalID) view returns(bool) +func (_Committer *CommitterCaller) IsProposalTimeout(opts *bind.CallOpts, chainID uint64, proposalID uint64) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "isProposalTimeout", chainID, proposalID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsProposalTimeout is a free data retrieval call binding the contract method 0x1b77a930. +// +// Solidity: function isProposalTimeout(uint64 chainID, uint64 proposalID) view returns(bool) +func (_Committer *CommitterSession) IsProposalTimeout(chainID uint64, proposalID uint64) (bool, error) { + return _Committer.Contract.IsProposalTimeout(&_Committer.CallOpts, chainID, proposalID) +} + +// IsProposalTimeout is a free data retrieval call binding the contract method 0x1b77a930. +// +// Solidity: function isProposalTimeout(uint64 chainID, uint64 proposalID) view returns(bool) +func (_Committer *CommitterCallerSession) IsProposalTimeout(chainID uint64, proposalID uint64) (bool, error) { + return _Committer.Contract.IsProposalTimeout(&_Committer.CallOpts, chainID, proposalID) +} + +// IsProposer is a free data retrieval call binding the contract method 0x74ec29a0. +// +// Solidity: function isProposer(address sender) view returns(bool) +func (_Committer *CommitterCaller) IsProposer(opts *bind.CallOpts, sender common.Address) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "isProposer", sender) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsProposer is a free data retrieval call binding the contract method 0x74ec29a0. +// +// Solidity: function isProposer(address sender) view returns(bool) +func (_Committer *CommitterSession) IsProposer(sender common.Address) (bool, error) { + return _Committer.Contract.IsProposer(&_Committer.CallOpts, sender) +} + +// IsProposer is a free data retrieval call binding the contract method 0x74ec29a0. +// +// Solidity: function isProposer(address sender) view returns(bool) +func (_Committer *CommitterCallerSession) IsProposer(sender common.Address) (bool, error) { + return _Committer.Contract.IsProposer(&_Committer.CallOpts, sender) +} + +// IsSupportedChain is a free data retrieval call binding the contract method 0x8926f54f. +// +// Solidity: function isSupportedChain(uint64 chainID) view returns(bool) +func (_Committer *CommitterCaller) IsSupportedChain(opts *bind.CallOpts, chainID uint64) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "isSupportedChain", chainID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsSupportedChain is a free data retrieval call binding the contract method 0x8926f54f. +// +// Solidity: function isSupportedChain(uint64 chainID) view returns(bool) +func (_Committer *CommitterSession) IsSupportedChain(chainID uint64) (bool, error) { + return _Committer.Contract.IsSupportedChain(&_Committer.CallOpts, chainID) +} + +// IsSupportedChain is a free data retrieval call binding the contract method 0x8926f54f. +// +// Solidity: function isSupportedChain(uint64 chainID) view returns(bool) +func (_Committer *CommitterCallerSession) IsSupportedChain(chainID uint64) (bool, error) { + return _Committer.Contract.IsSupportedChain(&_Committer.CallOpts, chainID) +} + +// IsVotedOnBitcoinTxPhase is a free data retrieval call binding the contract method 0x87c8eabd. +// +// Solidity: function isVotedOnBitcoinTxPhase(uint64 chainID, uint64 proposalID, address voter) view returns(bool) +func (_Committer *CommitterCaller) IsVotedOnBitcoinTxPhase(opts *bind.CallOpts, chainID uint64, proposalID uint64, voter common.Address) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "isVotedOnBitcoinTxPhase", chainID, proposalID, voter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsVotedOnBitcoinTxPhase is a free data retrieval call binding the contract method 0x87c8eabd. +// +// Solidity: function isVotedOnBitcoinTxPhase(uint64 chainID, uint64 proposalID, address voter) view returns(bool) +func (_Committer *CommitterSession) IsVotedOnBitcoinTxPhase(chainID uint64, proposalID uint64, voter common.Address) (bool, error) { + return _Committer.Contract.IsVotedOnBitcoinTxPhase(&_Committer.CallOpts, chainID, proposalID, voter) +} + +// IsVotedOnBitcoinTxPhase is a free data retrieval call binding the contract method 0x87c8eabd. +// +// Solidity: function isVotedOnBitcoinTxPhase(uint64 chainID, uint64 proposalID, address voter) view returns(bool) +func (_Committer *CommitterCallerSession) IsVotedOnBitcoinTxPhase(chainID uint64, proposalID uint64, voter common.Address) (bool, error) { + return _Committer.Contract.IsVotedOnBitcoinTxPhase(&_Committer.CallOpts, chainID, proposalID, voter) +} + +// IsVotedOnSubmitProofPhase is a free data retrieval call binding the contract method 0x975a4ce7. +// +// Solidity: function isVotedOnSubmitProofPhase(uint64 chainID, uint64 proposalID, address voter) view returns(bool) +func (_Committer *CommitterCaller) IsVotedOnSubmitProofPhase(opts *bind.CallOpts, chainID uint64, proposalID uint64, voter common.Address) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "isVotedOnSubmitProofPhase", chainID, proposalID, voter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsVotedOnSubmitProofPhase is a free data retrieval call binding the contract method 0x975a4ce7. +// +// Solidity: function isVotedOnSubmitProofPhase(uint64 chainID, uint64 proposalID, address voter) view returns(bool) +func (_Committer *CommitterSession) IsVotedOnSubmitProofPhase(chainID uint64, proposalID uint64, voter common.Address) (bool, error) { + return _Committer.Contract.IsVotedOnSubmitProofPhase(&_Committer.CallOpts, chainID, proposalID, voter) +} + +// IsVotedOnSubmitProofPhase is a free data retrieval call binding the contract method 0x975a4ce7. +// +// Solidity: function isVotedOnSubmitProofPhase(uint64 chainID, uint64 proposalID, address voter) view returns(bool) +func (_Committer *CommitterCallerSession) IsVotedOnSubmitProofPhase(chainID uint64, proposalID uint64, voter common.Address) (bool, error) { + return _Committer.Contract.IsVotedOnSubmitProofPhase(&_Committer.CallOpts, chainID, proposalID, voter) +} + +// LastProposal is a free data retrieval call binding the contract method 0x36a31476. +// +// Solidity: function lastProposal(uint64 ) view returns(uint64 id, uint64 startIndex, uint64 endIndex, uint8 status, uint256 timeout, address winner, string proofHash, string stateRootHash, string btcTxHash, string arweaveTxHash) +func (_Committer *CommitterCaller) LastProposal(opts *bind.CallOpts, arg0 uint64) (struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string +}, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "lastProposal", arg0) + + outstruct := new(struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string + }) + if err != nil { + return *outstruct, err + } + + outstruct.Id = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.StartIndex = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.EndIndex = *abi.ConvertType(out[2], new(uint64)).(*uint64) + outstruct.Status = *abi.ConvertType(out[3], new(uint8)).(*uint8) + outstruct.Timeout = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.Winner = *abi.ConvertType(out[5], new(common.Address)).(*common.Address) + outstruct.ProofHash = *abi.ConvertType(out[6], new(string)).(*string) + outstruct.StateRootHash = *abi.ConvertType(out[7], new(string)).(*string) + outstruct.BtcTxHash = *abi.ConvertType(out[8], new(string)).(*string) + outstruct.ArweaveTxHash = *abi.ConvertType(out[9], new(string)).(*string) + + return *outstruct, err + +} + +// LastProposal is a free data retrieval call binding the contract method 0x36a31476. +// +// Solidity: function lastProposal(uint64 ) view returns(uint64 id, uint64 startIndex, uint64 endIndex, uint8 status, uint256 timeout, address winner, string proofHash, string stateRootHash, string btcTxHash, string arweaveTxHash) +func (_Committer *CommitterSession) LastProposal(arg0 uint64) (struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string +}, error) { + return _Committer.Contract.LastProposal(&_Committer.CallOpts, arg0) +} + +// LastProposal is a free data retrieval call binding the contract method 0x36a31476. +// +// Solidity: function lastProposal(uint64 ) view returns(uint64 id, uint64 startIndex, uint64 endIndex, uint8 status, uint256 timeout, address winner, string proofHash, string stateRootHash, string btcTxHash, string arweaveTxHash) +func (_Committer *CommitterCallerSession) LastProposal(arg0 uint64) (struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string +}, error) { + return _Committer.Contract.LastProposal(&_Committer.CallOpts, arg0) +} + +// Proposal is a free data retrieval call binding the contract method 0x0f93fa52. +// +// Solidity: function proposal(uint64 chainID, uint64 proposalID) view returns((uint64,uint64,uint64,uint8,uint256,address,string,string,string,string)) +func (_Committer *CommitterCaller) Proposal(opts *bind.CallOpts, chainID uint64, proposalID uint64) (CommitterProposal, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "proposal", chainID, proposalID) + + if err != nil { + return *new(CommitterProposal), err + } + + out0 := *abi.ConvertType(out[0], new(CommitterProposal)).(*CommitterProposal) + + return out0, err + +} + +// Proposal is a free data retrieval call binding the contract method 0x0f93fa52. +// +// Solidity: function proposal(uint64 chainID, uint64 proposalID) view returns((uint64,uint64,uint64,uint8,uint256,address,string,string,string,string)) +func (_Committer *CommitterSession) Proposal(chainID uint64, proposalID uint64) (CommitterProposal, error) { + return _Committer.Contract.Proposal(&_Committer.CallOpts, chainID, proposalID) +} + +// Proposal is a free data retrieval call binding the contract method 0x0f93fa52. +// +// Solidity: function proposal(uint64 chainID, uint64 proposalID) view returns((uint64,uint64,uint64,uint8,uint256,address,string,string,string,string)) +func (_Committer *CommitterCallerSession) Proposal(chainID uint64, proposalID uint64) (CommitterProposal, error) { + return _Committer.Contract.Proposal(&_Committer.CallOpts, chainID, proposalID) +} + +// Proposals is a free data retrieval call binding the contract method 0x7176d85d. +// +// Solidity: function proposals(uint64 , uint64 ) view returns(uint64 id, uint64 startIndex, uint64 endIndex, uint8 status, uint256 timeout, address winner, string proofHash, string stateRootHash, string btcTxHash, string arweaveTxHash) +func (_Committer *CommitterCaller) Proposals(opts *bind.CallOpts, arg0 uint64, arg1 uint64) (struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string +}, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "proposals", arg0, arg1) + + outstruct := new(struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string + }) + if err != nil { + return *outstruct, err + } + + outstruct.Id = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.StartIndex = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.EndIndex = *abi.ConvertType(out[2], new(uint64)).(*uint64) + outstruct.Status = *abi.ConvertType(out[3], new(uint8)).(*uint8) + outstruct.Timeout = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.Winner = *abi.ConvertType(out[5], new(common.Address)).(*common.Address) + outstruct.ProofHash = *abi.ConvertType(out[6], new(string)).(*string) + outstruct.StateRootHash = *abi.ConvertType(out[7], new(string)).(*string) + outstruct.BtcTxHash = *abi.ConvertType(out[8], new(string)).(*string) + outstruct.ArweaveTxHash = *abi.ConvertType(out[9], new(string)).(*string) + + return *outstruct, err + +} + +// Proposals is a free data retrieval call binding the contract method 0x7176d85d. +// +// Solidity: function proposals(uint64 , uint64 ) view returns(uint64 id, uint64 startIndex, uint64 endIndex, uint8 status, uint256 timeout, address winner, string proofHash, string stateRootHash, string btcTxHash, string arweaveTxHash) +func (_Committer *CommitterSession) Proposals(arg0 uint64, arg1 uint64) (struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string +}, error) { + return _Committer.Contract.Proposals(&_Committer.CallOpts, arg0, arg1) +} + +// Proposals is a free data retrieval call binding the contract method 0x7176d85d. +// +// Solidity: function proposals(uint64 , uint64 ) view returns(uint64 id, uint64 startIndex, uint64 endIndex, uint8 status, uint256 timeout, address winner, string proofHash, string stateRootHash, string btcTxHash, string arweaveTxHash) +func (_Committer *CommitterCallerSession) Proposals(arg0 uint64, arg1 uint64) (struct { + Id uint64 + StartIndex uint64 + EndIndex uint64 + Status uint8 + Timeout *big.Int + Winner common.Address + ProofHash string + StateRootHash string + BtcTxHash string + ArweaveTxHash string +}, error) { + return _Committer.Contract.Proposals(&_Committer.CallOpts, arg0, arg1) +} + +// Proposers is a free data retrieval call binding the contract method 0x18177497. +// +// Solidity: function proposers(address ) view returns(bool) +func (_Committer *CommitterCaller) Proposers(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "proposers", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Proposers is a free data retrieval call binding the contract method 0x18177497. +// +// Solidity: function proposers(address ) view returns(bool) +func (_Committer *CommitterSession) Proposers(arg0 common.Address) (bool, error) { + return _Committer.Contract.Proposers(&_Committer.CallOpts, arg0) +} + +// Proposers is a free data retrieval call binding the contract method 0x18177497. +// +// Solidity: function proposers(address ) view returns(bool) +func (_Committer *CommitterCallerSession) Proposers(arg0 common.Address) (bool, error) { + return _Committer.Contract.Proposers(&_Committer.CallOpts, arg0) +} + +// ProposersList is a free data retrieval call binding the contract method 0x5ad97dd8. +// +// Solidity: function proposersList(uint256 ) view returns(address) +func (_Committer *CommitterCaller) ProposersList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "proposersList", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ProposersList is a free data retrieval call binding the contract method 0x5ad97dd8. +// +// Solidity: function proposersList(uint256 ) view returns(address) +func (_Committer *CommitterSession) ProposersList(arg0 *big.Int) (common.Address, error) { + return _Committer.Contract.ProposersList(&_Committer.CallOpts, arg0) +} + +// ProposersList is a free data retrieval call binding the contract method 0x5ad97dd8. +// +// Solidity: function proposersList(uint256 ) view returns(address) +func (_Committer *CommitterCallerSession) ProposersList(arg0 *big.Int) (common.Address, error) { + return _Committer.Contract.ProposersList(&_Committer.CallOpts, arg0) +} + +// SubmitBitcoinTxPhaseVotes is a free data retrieval call binding the contract method 0x9bfa86d3. +// +// Solidity: function submitBitcoinTxPhaseVotes(uint64 , uint64 , uint256 ) view returns(address) +func (_Committer *CommitterCaller) SubmitBitcoinTxPhaseVotes(opts *bind.CallOpts, arg0 uint64, arg1 uint64, arg2 *big.Int) (common.Address, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "submitBitcoinTxPhaseVotes", arg0, arg1, arg2) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SubmitBitcoinTxPhaseVotes is a free data retrieval call binding the contract method 0x9bfa86d3. +// +// Solidity: function submitBitcoinTxPhaseVotes(uint64 , uint64 , uint256 ) view returns(address) +func (_Committer *CommitterSession) SubmitBitcoinTxPhaseVotes(arg0 uint64, arg1 uint64, arg2 *big.Int) (common.Address, error) { + return _Committer.Contract.SubmitBitcoinTxPhaseVotes(&_Committer.CallOpts, arg0, arg1, arg2) +} + +// SubmitBitcoinTxPhaseVotes is a free data retrieval call binding the contract method 0x9bfa86d3. +// +// Solidity: function submitBitcoinTxPhaseVotes(uint64 , uint64 , uint256 ) view returns(address) +func (_Committer *CommitterCallerSession) SubmitBitcoinTxPhaseVotes(arg0 uint64, arg1 uint64, arg2 *big.Int) (common.Address, error) { + return _Committer.Contract.SubmitBitcoinTxPhaseVotes(&_Committer.CallOpts, arg0, arg1, arg2) +} + +// SubmitProofPhaseVotes is a free data retrieval call binding the contract method 0x24ff16b3. +// +// Solidity: function submitProofPhaseVotes(uint64 , uint64 , uint256 ) view returns(address) +func (_Committer *CommitterCaller) SubmitProofPhaseVotes(opts *bind.CallOpts, arg0 uint64, arg1 uint64, arg2 *big.Int) (common.Address, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "submitProofPhaseVotes", arg0, arg1, arg2) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SubmitProofPhaseVotes is a free data retrieval call binding the contract method 0x24ff16b3. +// +// Solidity: function submitProofPhaseVotes(uint64 , uint64 , uint256 ) view returns(address) +func (_Committer *CommitterSession) SubmitProofPhaseVotes(arg0 uint64, arg1 uint64, arg2 *big.Int) (common.Address, error) { + return _Committer.Contract.SubmitProofPhaseVotes(&_Committer.CallOpts, arg0, arg1, arg2) +} + +// SubmitProofPhaseVotes is a free data retrieval call binding the contract method 0x24ff16b3. +// +// Solidity: function submitProofPhaseVotes(uint64 , uint64 , uint256 ) view returns(address) +func (_Committer *CommitterCallerSession) SubmitProofPhaseVotes(arg0 uint64, arg1 uint64, arg2 *big.Int) (common.Address, error) { + return _Committer.Contract.SubmitProofPhaseVotes(&_Committer.CallOpts, arg0, arg1, arg2) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_Committer *CommitterCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_Committer *CommitterSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _Committer.Contract.SupportsInterface(&_Committer.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_Committer *CommitterCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _Committer.Contract.SupportsInterface(&_Committer.CallOpts, interfaceId) +} + +// TimeoutPeriod is a free data retrieval call binding the contract method 0x6cea6b82. +// +// Solidity: function timeoutPeriod() view returns(uint256) +func (_Committer *CommitterCaller) TimeoutPeriod(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Committer.contract.Call(opts, &out, "timeoutPeriod") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TimeoutPeriod is a free data retrieval call binding the contract method 0x6cea6b82. +// +// Solidity: function timeoutPeriod() view returns(uint256) +func (_Committer *CommitterSession) TimeoutPeriod() (*big.Int, error) { + return _Committer.Contract.TimeoutPeriod(&_Committer.CallOpts) +} + +// TimeoutPeriod is a free data retrieval call binding the contract method 0x6cea6b82. +// +// Solidity: function timeoutPeriod() view returns(uint256) +func (_Committer *CommitterCallerSession) TimeoutPeriod() (*big.Int, error) { + return _Committer.Contract.TimeoutPeriod(&_Committer.CallOpts) +} + +// AddChain is a paid mutator transaction binding the contract method 0xe2947e54. +// +// Solidity: function addChain(uint64 chainID) returns() +func (_Committer *CommitterTransactor) AddChain(opts *bind.TransactOpts, chainID uint64) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "addChain", chainID) +} + +// AddChain is a paid mutator transaction binding the contract method 0xe2947e54. +// +// Solidity: function addChain(uint64 chainID) returns() +func (_Committer *CommitterSession) AddChain(chainID uint64) (*types.Transaction, error) { + return _Committer.Contract.AddChain(&_Committer.TransactOpts, chainID) +} + +// AddChain is a paid mutator transaction binding the contract method 0xe2947e54. +// +// Solidity: function addChain(uint64 chainID) returns() +func (_Committer *CommitterTransactorSession) AddChain(chainID uint64) (*types.Transaction, error) { + return _Committer.Contract.AddChain(&_Committer.TransactOpts, chainID) +} + +// AddProposer is a paid mutator transaction binding the contract method 0xb03cd418. +// +// Solidity: function addProposer(address proposer) returns() +func (_Committer *CommitterTransactor) AddProposer(opts *bind.TransactOpts, proposer common.Address) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "addProposer", proposer) +} + +// AddProposer is a paid mutator transaction binding the contract method 0xb03cd418. +// +// Solidity: function addProposer(address proposer) returns() +func (_Committer *CommitterSession) AddProposer(proposer common.Address) (*types.Transaction, error) { + return _Committer.Contract.AddProposer(&_Committer.TransactOpts, proposer) +} + +// AddProposer is a paid mutator transaction binding the contract method 0xb03cd418. +// +// Solidity: function addProposer(address proposer) returns() +func (_Committer *CommitterTransactorSession) AddProposer(proposer common.Address) (*types.Transaction, error) { + return _Committer.Contract.AddProposer(&_Committer.TransactOpts, proposer) +} + +// ArweaveTx is a paid mutator transaction binding the contract method 0xe0a9daf6. +// +// Solidity: function arweaveTx(uint64 chainID, uint64 proposalID, string txHash) returns() +func (_Committer *CommitterTransactor) ArweaveTx(opts *bind.TransactOpts, chainID uint64, proposalID uint64, txHash string) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "arweaveTx", chainID, proposalID, txHash) +} + +// ArweaveTx is a paid mutator transaction binding the contract method 0xe0a9daf6. +// +// Solidity: function arweaveTx(uint64 chainID, uint64 proposalID, string txHash) returns() +func (_Committer *CommitterSession) ArweaveTx(chainID uint64, proposalID uint64, txHash string) (*types.Transaction, error) { + return _Committer.Contract.ArweaveTx(&_Committer.TransactOpts, chainID, proposalID, txHash) +} + +// ArweaveTx is a paid mutator transaction binding the contract method 0xe0a9daf6. +// +// Solidity: function arweaveTx(uint64 chainID, uint64 proposalID, string txHash) returns() +func (_Committer *CommitterTransactorSession) ArweaveTx(chainID uint64, proposalID uint64, txHash string) (*types.Transaction, error) { + return _Committer.Contract.ArweaveTx(&_Committer.TransactOpts, chainID, proposalID, txHash) +} + +// BitcoinTx is a paid mutator transaction binding the contract method 0x54cab80e. +// +// Solidity: function bitcoinTx(uint64 chainID, uint64 proposalID, string txHash) returns() +func (_Committer *CommitterTransactor) BitcoinTx(opts *bind.TransactOpts, chainID uint64, proposalID uint64, txHash string) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "bitcoinTx", chainID, proposalID, txHash) +} + +// BitcoinTx is a paid mutator transaction binding the contract method 0x54cab80e. +// +// Solidity: function bitcoinTx(uint64 chainID, uint64 proposalID, string txHash) returns() +func (_Committer *CommitterSession) BitcoinTx(chainID uint64, proposalID uint64, txHash string) (*types.Transaction, error) { + return _Committer.Contract.BitcoinTx(&_Committer.TransactOpts, chainID, proposalID, txHash) +} + +// BitcoinTx is a paid mutator transaction binding the contract method 0x54cab80e. +// +// Solidity: function bitcoinTx(uint64 chainID, uint64 proposalID, string txHash) returns() +func (_Committer *CommitterTransactorSession) BitcoinTx(chainID uint64, proposalID uint64, txHash string) (*types.Transaction, error) { + return _Committer.Contract.BitcoinTx(&_Committer.TransactOpts, chainID, proposalID, txHash) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Committer *CommitterTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Committer *CommitterSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Committer.Contract.GrantRole(&_Committer.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Committer *CommitterTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Committer.Contract.GrantRole(&_Committer.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Committer *CommitterTransactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "initialize") +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Committer *CommitterSession) Initialize() (*types.Transaction, error) { + return _Committer.Contract.Initialize(&_Committer.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Committer *CommitterTransactorSession) Initialize() (*types.Transaction, error) { + return _Committer.Contract.Initialize(&_Committer.TransactOpts) +} + +// RemoveChain is a paid mutator transaction binding the contract method 0x39aa1335. +// +// Solidity: function removeChain(uint64 chainID) returns() +func (_Committer *CommitterTransactor) RemoveChain(opts *bind.TransactOpts, chainID uint64) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "removeChain", chainID) +} + +// RemoveChain is a paid mutator transaction binding the contract method 0x39aa1335. +// +// Solidity: function removeChain(uint64 chainID) returns() +func (_Committer *CommitterSession) RemoveChain(chainID uint64) (*types.Transaction, error) { + return _Committer.Contract.RemoveChain(&_Committer.TransactOpts, chainID) +} + +// RemoveChain is a paid mutator transaction binding the contract method 0x39aa1335. +// +// Solidity: function removeChain(uint64 chainID) returns() +func (_Committer *CommitterTransactorSession) RemoveChain(chainID uint64) (*types.Transaction, error) { + return _Committer.Contract.RemoveChain(&_Committer.TransactOpts, chainID) +} + +// RemoveProposer is a paid mutator transaction binding the contract method 0x09d632d3. +// +// Solidity: function removeProposer(address proposer) returns() +func (_Committer *CommitterTransactor) RemoveProposer(opts *bind.TransactOpts, proposer common.Address) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "removeProposer", proposer) +} + +// RemoveProposer is a paid mutator transaction binding the contract method 0x09d632d3. +// +// Solidity: function removeProposer(address proposer) returns() +func (_Committer *CommitterSession) RemoveProposer(proposer common.Address) (*types.Transaction, error) { + return _Committer.Contract.RemoveProposer(&_Committer.TransactOpts, proposer) +} + +// RemoveProposer is a paid mutator transaction binding the contract method 0x09d632d3. +// +// Solidity: function removeProposer(address proposer) returns() +func (_Committer *CommitterTransactorSession) RemoveProposer(proposer common.Address) (*types.Transaction, error) { + return _Committer.Contract.RemoveProposer(&_Committer.TransactOpts, proposer) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_Committer *CommitterTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_Committer *CommitterSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _Committer.Contract.RenounceRole(&_Committer.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_Committer *CommitterTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _Committer.Contract.RenounceRole(&_Committer.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Committer *CommitterTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Committer *CommitterSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Committer.Contract.RevokeRole(&_Committer.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Committer *CommitterTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Committer.Contract.RevokeRole(&_Committer.TransactOpts, role, account) +} + +// SetTimeoutPeriod is a paid mutator transaction binding the contract method 0x227c6dfa. +// +// Solidity: function setTimeoutPeriod(uint256 period) returns() +func (_Committer *CommitterTransactor) SetTimeoutPeriod(opts *bind.TransactOpts, period *big.Int) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "setTimeoutPeriod", period) +} + +// SetTimeoutPeriod is a paid mutator transaction binding the contract method 0x227c6dfa. +// +// Solidity: function setTimeoutPeriod(uint256 period) returns() +func (_Committer *CommitterSession) SetTimeoutPeriod(period *big.Int) (*types.Transaction, error) { + return _Committer.Contract.SetTimeoutPeriod(&_Committer.TransactOpts, period) +} + +// SetTimeoutPeriod is a paid mutator transaction binding the contract method 0x227c6dfa. +// +// Solidity: function setTimeoutPeriod(uint256 period) returns() +func (_Committer *CommitterTransactorSession) SetTimeoutPeriod(period *big.Int) (*types.Transaction, error) { + return _Committer.Contract.SetTimeoutPeriod(&_Committer.TransactOpts, period) +} + +// SubmitProof is a paid mutator transaction binding the contract method 0x1f981c36. +// +// Solidity: function submitProof(uint64 chainID, uint64 proposalID, string proofHash, string stateRootHash, uint64 startIndex, uint64 endIndex) returns() +func (_Committer *CommitterTransactor) SubmitProof(opts *bind.TransactOpts, chainID uint64, proposalID uint64, proofHash string, stateRootHash string, startIndex uint64, endIndex uint64) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "submitProof", chainID, proposalID, proofHash, stateRootHash, startIndex, endIndex) +} + +// SubmitProof is a paid mutator transaction binding the contract method 0x1f981c36. +// +// Solidity: function submitProof(uint64 chainID, uint64 proposalID, string proofHash, string stateRootHash, uint64 startIndex, uint64 endIndex) returns() +func (_Committer *CommitterSession) SubmitProof(chainID uint64, proposalID uint64, proofHash string, stateRootHash string, startIndex uint64, endIndex uint64) (*types.Transaction, error) { + return _Committer.Contract.SubmitProof(&_Committer.TransactOpts, chainID, proposalID, proofHash, stateRootHash, startIndex, endIndex) +} + +// SubmitProof is a paid mutator transaction binding the contract method 0x1f981c36. +// +// Solidity: function submitProof(uint64 chainID, uint64 proposalID, string proofHash, string stateRootHash, uint64 startIndex, uint64 endIndex) returns() +func (_Committer *CommitterTransactorSession) SubmitProof(chainID uint64, proposalID uint64, proofHash string, stateRootHash string, startIndex uint64, endIndex uint64) (*types.Transaction, error) { + return _Committer.Contract.SubmitProof(&_Committer.TransactOpts, chainID, proposalID, proofHash, stateRootHash, startIndex, endIndex) +} + +// TimeoutProposal is a paid mutator transaction binding the contract method 0x04956a75. +// +// Solidity: function timeoutProposal(uint64 chainID, uint64 proposalID) returns() +func (_Committer *CommitterTransactor) TimeoutProposal(opts *bind.TransactOpts, chainID uint64, proposalID uint64) (*types.Transaction, error) { + return _Committer.contract.Transact(opts, "timeoutProposal", chainID, proposalID) +} + +// TimeoutProposal is a paid mutator transaction binding the contract method 0x04956a75. +// +// Solidity: function timeoutProposal(uint64 chainID, uint64 proposalID) returns() +func (_Committer *CommitterSession) TimeoutProposal(chainID uint64, proposalID uint64) (*types.Transaction, error) { + return _Committer.Contract.TimeoutProposal(&_Committer.TransactOpts, chainID, proposalID) +} + +// TimeoutProposal is a paid mutator transaction binding the contract method 0x04956a75. +// +// Solidity: function timeoutProposal(uint64 chainID, uint64 proposalID) returns() +func (_Committer *CommitterTransactorSession) TimeoutProposal(chainID uint64, proposalID uint64) (*types.Transaction, error) { + return _Committer.Contract.TimeoutProposal(&_Committer.TransactOpts, chainID, proposalID) +} + +// CommitterInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Committer contract. +type CommitterInitializedIterator struct { + Event *CommitterInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CommitterInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CommitterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CommitterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CommitterInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CommitterInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CommitterInitialized represents a Initialized event raised by the Committer contract. +type CommitterInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Committer *CommitterFilterer) FilterInitialized(opts *bind.FilterOpts) (*CommitterInitializedIterator, error) { + + logs, sub, err := _Committer.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &CommitterInitializedIterator{contract: _Committer.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Committer *CommitterFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *CommitterInitialized) (event.Subscription, error) { + + logs, sub, err := _Committer.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CommitterInitialized) + if err := _Committer.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Committer *CommitterFilterer) ParseInitialized(log types.Log) (*CommitterInitialized, error) { + event := new(CommitterInitialized) + if err := _Committer.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CommitterProposalSubmittedIterator is returned from FilterProposalSubmitted and is used to iterate over the raw logs and unpacked data for ProposalSubmitted events raised by the Committer contract. +type CommitterProposalSubmittedIterator struct { + Event *CommitterProposalSubmitted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CommitterProposalSubmittedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CommitterProposalSubmitted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CommitterProposalSubmitted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CommitterProposalSubmittedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CommitterProposalSubmittedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CommitterProposalSubmitted represents a ProposalSubmitted event raised by the Committer contract. +type CommitterProposalSubmitted struct { + ChainID uint64 + ProposalID uint64 + Proposer common.Address + ProofHash string + StateRootHash string + StartIndex *big.Int + EndIndex *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProposalSubmitted is a free log retrieval operation binding the contract event 0x08db083a8474187b3aaed9068af476148cc1c18a272491f43b8a93c5ab91606a. +// +// Solidity: event ProposalSubmitted(uint64 chainID, uint64 indexed proposalID, address indexed proposer, string proofHash, string stateRootHash, uint256 indexed startIndex, uint256 endIndex) +func (_Committer *CommitterFilterer) FilterProposalSubmitted(opts *bind.FilterOpts, proposalID []uint64, proposer []common.Address, startIndex []*big.Int) (*CommitterProposalSubmittedIterator, error) { + + var proposalIDRule []interface{} + for _, proposalIDItem := range proposalID { + proposalIDRule = append(proposalIDRule, proposalIDItem) + } + var proposerRule []interface{} + for _, proposerItem := range proposer { + proposerRule = append(proposerRule, proposerItem) + } + + var startIndexRule []interface{} + for _, startIndexItem := range startIndex { + startIndexRule = append(startIndexRule, startIndexItem) + } + + logs, sub, err := _Committer.contract.FilterLogs(opts, "ProposalSubmitted", proposalIDRule, proposerRule, startIndexRule) + if err != nil { + return nil, err + } + return &CommitterProposalSubmittedIterator{contract: _Committer.contract, event: "ProposalSubmitted", logs: logs, sub: sub}, nil +} + +// WatchProposalSubmitted is a free log subscription operation binding the contract event 0x08db083a8474187b3aaed9068af476148cc1c18a272491f43b8a93c5ab91606a. +// +// Solidity: event ProposalSubmitted(uint64 chainID, uint64 indexed proposalID, address indexed proposer, string proofHash, string stateRootHash, uint256 indexed startIndex, uint256 endIndex) +func (_Committer *CommitterFilterer) WatchProposalSubmitted(opts *bind.WatchOpts, sink chan<- *CommitterProposalSubmitted, proposalID []uint64, proposer []common.Address, startIndex []*big.Int) (event.Subscription, error) { + + var proposalIDRule []interface{} + for _, proposalIDItem := range proposalID { + proposalIDRule = append(proposalIDRule, proposalIDItem) + } + var proposerRule []interface{} + for _, proposerItem := range proposer { + proposerRule = append(proposerRule, proposerItem) + } + + var startIndexRule []interface{} + for _, startIndexItem := range startIndex { + startIndexRule = append(startIndexRule, startIndexItem) + } + + logs, sub, err := _Committer.contract.WatchLogs(opts, "ProposalSubmitted", proposalIDRule, proposerRule, startIndexRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CommitterProposalSubmitted) + if err := _Committer.contract.UnpackLog(event, "ProposalSubmitted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProposalSubmitted is a log parse operation binding the contract event 0x08db083a8474187b3aaed9068af476148cc1c18a272491f43b8a93c5ab91606a. +// +// Solidity: event ProposalSubmitted(uint64 chainID, uint64 indexed proposalID, address indexed proposer, string proofHash, string stateRootHash, uint256 indexed startIndex, uint256 endIndex) +func (_Committer *CommitterFilterer) ParseProposalSubmitted(log types.Log) (*CommitterProposalSubmitted, error) { + event := new(CommitterProposalSubmitted) + if err := _Committer.contract.UnpackLog(event, "ProposalSubmitted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CommitterProposalTimedOutIterator is returned from FilterProposalTimedOut and is used to iterate over the raw logs and unpacked data for ProposalTimedOut events raised by the Committer contract. +type CommitterProposalTimedOutIterator struct { + Event *CommitterProposalTimedOut // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CommitterProposalTimedOutIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CommitterProposalTimedOut) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CommitterProposalTimedOut) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CommitterProposalTimedOutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CommitterProposalTimedOutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CommitterProposalTimedOut represents a ProposalTimedOut event raised by the Committer contract. +type CommitterProposalTimedOut struct { + ChainID uint64 + ProposalID uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProposalTimedOut is a free log retrieval operation binding the contract event 0xe81e592c2f9a76eb49a3b40a0a0f6955323a7ec31c08805d2c04a4eea8b558fd. +// +// Solidity: event ProposalTimedOut(uint64 chainID, uint64 proposalID) +func (_Committer *CommitterFilterer) FilterProposalTimedOut(opts *bind.FilterOpts) (*CommitterProposalTimedOutIterator, error) { + + logs, sub, err := _Committer.contract.FilterLogs(opts, "ProposalTimedOut") + if err != nil { + return nil, err + } + return &CommitterProposalTimedOutIterator{contract: _Committer.contract, event: "ProposalTimedOut", logs: logs, sub: sub}, nil +} + +// WatchProposalTimedOut is a free log subscription operation binding the contract event 0xe81e592c2f9a76eb49a3b40a0a0f6955323a7ec31c08805d2c04a4eea8b558fd. +// +// Solidity: event ProposalTimedOut(uint64 chainID, uint64 proposalID) +func (_Committer *CommitterFilterer) WatchProposalTimedOut(opts *bind.WatchOpts, sink chan<- *CommitterProposalTimedOut) (event.Subscription, error) { + + logs, sub, err := _Committer.contract.WatchLogs(opts, "ProposalTimedOut") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CommitterProposalTimedOut) + if err := _Committer.contract.UnpackLog(event, "ProposalTimedOut", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProposalTimedOut is a log parse operation binding the contract event 0xe81e592c2f9a76eb49a3b40a0a0f6955323a7ec31c08805d2c04a4eea8b558fd. +// +// Solidity: event ProposalTimedOut(uint64 chainID, uint64 proposalID) +func (_Committer *CommitterFilterer) ParseProposalTimedOut(log types.Log) (*CommitterProposalTimedOut, error) { + event := new(CommitterProposalTimedOut) + if err := _Committer.contract.UnpackLog(event, "ProposalTimedOut", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CommitterRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the Committer contract. +type CommitterRoleAdminChangedIterator struct { + Event *CommitterRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CommitterRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CommitterRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CommitterRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CommitterRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CommitterRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CommitterRoleAdminChanged represents a RoleAdminChanged event raised by the Committer contract. +type CommitterRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Committer *CommitterFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*CommitterRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _Committer.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &CommitterRoleAdminChangedIterator{contract: _Committer.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Committer *CommitterFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *CommitterRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _Committer.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CommitterRoleAdminChanged) + if err := _Committer.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Committer *CommitterFilterer) ParseRoleAdminChanged(log types.Log) (*CommitterRoleAdminChanged, error) { + event := new(CommitterRoleAdminChanged) + if err := _Committer.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CommitterRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the Committer contract. +type CommitterRoleGrantedIterator struct { + Event *CommitterRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CommitterRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CommitterRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CommitterRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CommitterRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CommitterRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CommitterRoleGranted represents a RoleGranted event raised by the Committer contract. +type CommitterRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Committer *CommitterFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*CommitterRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Committer.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &CommitterRoleGrantedIterator{contract: _Committer.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Committer *CommitterFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *CommitterRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Committer.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CommitterRoleGranted) + if err := _Committer.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Committer *CommitterFilterer) ParseRoleGranted(log types.Log) (*CommitterRoleGranted, error) { + event := new(CommitterRoleGranted) + if err := _Committer.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CommitterRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the Committer contract. +type CommitterRoleRevokedIterator struct { + Event *CommitterRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CommitterRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CommitterRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CommitterRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CommitterRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CommitterRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CommitterRoleRevoked represents a RoleRevoked event raised by the Committer contract. +type CommitterRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Committer *CommitterFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*CommitterRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Committer.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &CommitterRoleRevokedIterator{contract: _Committer.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Committer *CommitterFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *CommitterRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Committer.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CommitterRoleRevoked) + if err := _Committer.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Committer *CommitterFilterer) ParseRoleRevoked(log types.Log) (*CommitterRoleRevoked, error) { + event := new(CommitterRoleRevoked) + if err := _Committer.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CommitterVoteProposalIterator is returned from FilterVoteProposal and is used to iterate over the raw logs and unpacked data for VoteProposal events raised by the Committer contract. +type CommitterVoteProposalIterator struct { + Event *CommitterVoteProposal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CommitterVoteProposalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CommitterVoteProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CommitterVoteProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CommitterVoteProposalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CommitterVoteProposalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CommitterVoteProposal represents a VoteProposal event raised by the Committer contract. +type CommitterVoteProposal struct { + ChainID uint64 + ProposalID uint64 + Voter common.Address + Phase uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVoteProposal is a free log retrieval operation binding the contract event 0xc488e7e4772e55cf4eb67cd1cc5a8a0169f7b08a7565742e419b88aac6744116. +// +// Solidity: event VoteProposal(uint64 chainID, uint64 proposalID, address voter, uint8 phase) +func (_Committer *CommitterFilterer) FilterVoteProposal(opts *bind.FilterOpts) (*CommitterVoteProposalIterator, error) { + + logs, sub, err := _Committer.contract.FilterLogs(opts, "VoteProposal") + if err != nil { + return nil, err + } + return &CommitterVoteProposalIterator{contract: _Committer.contract, event: "VoteProposal", logs: logs, sub: sub}, nil +} + +// WatchVoteProposal is a free log subscription operation binding the contract event 0xc488e7e4772e55cf4eb67cd1cc5a8a0169f7b08a7565742e419b88aac6744116. +// +// Solidity: event VoteProposal(uint64 chainID, uint64 proposalID, address voter, uint8 phase) +func (_Committer *CommitterFilterer) WatchVoteProposal(opts *bind.WatchOpts, sink chan<- *CommitterVoteProposal) (event.Subscription, error) { + + logs, sub, err := _Committer.contract.WatchLogs(opts, "VoteProposal") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CommitterVoteProposal) + if err := _Committer.contract.UnpackLog(event, "VoteProposal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVoteProposal is a log parse operation binding the contract event 0xc488e7e4772e55cf4eb67cd1cc5a8a0169f7b08a7565742e419b88aac6744116. +// +// Solidity: event VoteProposal(uint64 chainID, uint64 proposalID, address voter, uint8 phase) +func (_Committer *CommitterFilterer) ParseVoteProposal(log types.Log) (*CommitterVoteProposal, error) { + event := new(CommitterVoteProposal) + if err := _Committer.contract.UnpackLog(event, "VoteProposal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contract/zk/sequence.go b/pkg/contract/zk/sequence.go new file mode 100644 index 0000000..48030c2 --- /dev/null +++ b/pkg/contract/zk/sequence.go @@ -0,0 +1,3078 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zk + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// PolygonRollupBaseEtrogBatchData is an auto generated low-level Go binding around an user-defined struct. +type PolygonRollupBaseEtrogBatchData struct { + Transactions []byte + ForcedGlobalExitRoot [32]byte + ForcedTimestamp uint64 + ForcedBlockHashL1 [32]byte +} + +// SequenceMetaData contains all meta data concerning the Sequence contract. +var SequenceMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_pol\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"_rollupManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BatchAlreadyVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSequencedOrNotSequenceEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesAlreadyActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesDecentralized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesNotAllowedOnEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForcedDataDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasTokenNetworkMustBeZeroOnEther\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpiredAfterEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HugeTokenMetadataNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitSequencedBatchDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializeTransaction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeForceBatchTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTimestampSequenceInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughMaticAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughPOLAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyRollupManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedAggregator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedSequencer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceZeroBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampBelowForcedTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionsLengthAboveMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AcceptAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"InitialSequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"l1InfoRoot\",\"type\":\"bytes32\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"SetForceBatchAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"SetForceBatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GLOBAL_EXIT_ROOT_MANAGER_L2\",\"outputs\":[{\"internalType\":\"contractIBasePolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_LIST_LEN_LEN\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_DATA_LEN_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_EFFECTIVE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_R\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_S\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_V\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMESTAMP_RANGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculatePolPerForceBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"polAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenNetwork\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_gasTokenNetwork\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_gasTokenMetadata\",\"type\":\"bytes\"}],\"name\":\"generateInitializeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"sequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAccInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"onVerifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pol\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupManager\",\"outputs\":[{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"maxSequenceTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initSequencedBatch\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"setForceBatchAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"setForceBatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"transferAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// SequenceABI is the input ABI used to generate the binding from. +// Deprecated: Use SequenceMetaData.ABI instead. +var SequenceABI = SequenceMetaData.ABI + +// Sequence is an auto generated Go binding around an Ethereum contract. +type Sequence struct { + SequenceCaller // Read-only binding to the contract + SequenceTransactor // Write-only binding to the contract + SequenceFilterer // Log filterer for contract events +} + +// SequenceCaller is an auto generated read-only Go binding around an Ethereum contract. +type SequenceCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SequenceTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SequenceTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SequenceFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SequenceFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SequenceSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SequenceSession struct { + Contract *Sequence // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SequenceCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SequenceCallerSession struct { + Contract *SequenceCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SequenceTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SequenceTransactorSession struct { + Contract *SequenceTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SequenceRaw is an auto generated low-level Go binding around an Ethereum contract. +type SequenceRaw struct { + Contract *Sequence // Generic contract binding to access the raw methods on +} + +// SequenceCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SequenceCallerRaw struct { + Contract *SequenceCaller // Generic read-only contract binding to access the raw methods on +} + +// SequenceTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SequenceTransactorRaw struct { + Contract *SequenceTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSequence creates a new instance of Sequence, bound to a specific deployed contract. +func NewSequence(address common.Address, backend bind.ContractBackend) (*Sequence, error) { + contract, err := bindSequence(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Sequence{SequenceCaller: SequenceCaller{contract: contract}, SequenceTransactor: SequenceTransactor{contract: contract}, SequenceFilterer: SequenceFilterer{contract: contract}}, nil +} + +// NewSequenceCaller creates a new read-only instance of Sequence, bound to a specific deployed contract. +func NewSequenceCaller(address common.Address, caller bind.ContractCaller) (*SequenceCaller, error) { + contract, err := bindSequence(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SequenceCaller{contract: contract}, nil +} + +// NewSequenceTransactor creates a new write-only instance of Sequence, bound to a specific deployed contract. +func NewSequenceTransactor(address common.Address, transactor bind.ContractTransactor) (*SequenceTransactor, error) { + contract, err := bindSequence(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SequenceTransactor{contract: contract}, nil +} + +// NewSequenceFilterer creates a new log filterer instance of Sequence, bound to a specific deployed contract. +func NewSequenceFilterer(address common.Address, filterer bind.ContractFilterer) (*SequenceFilterer, error) { + contract, err := bindSequence(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SequenceFilterer{contract: contract}, nil +} + +// bindSequence binds a generic wrapper to an already deployed contract. +func bindSequence(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SequenceMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sequence *SequenceRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sequence.Contract.SequenceCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sequence *SequenceRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sequence.Contract.SequenceTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sequence *SequenceRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sequence.Contract.SequenceTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sequence *SequenceCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sequence.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sequence *SequenceTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sequence.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sequence *SequenceTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sequence.Contract.contract.Transact(opts, method, params...) +} + +// GLOBALEXITROOTMANAGERL2 is a free data retrieval call binding the contract method 0x9e001877. +// +// Solidity: function GLOBAL_EXIT_ROOT_MANAGER_L2() view returns(address) +func (_Sequence *SequenceCaller) GLOBALEXITROOTMANAGERL2(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "GLOBAL_EXIT_ROOT_MANAGER_L2") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GLOBALEXITROOTMANAGERL2 is a free data retrieval call binding the contract method 0x9e001877. +// +// Solidity: function GLOBAL_EXIT_ROOT_MANAGER_L2() view returns(address) +func (_Sequence *SequenceSession) GLOBALEXITROOTMANAGERL2() (common.Address, error) { + return _Sequence.Contract.GLOBALEXITROOTMANAGERL2(&_Sequence.CallOpts) +} + +// GLOBALEXITROOTMANAGERL2 is a free data retrieval call binding the contract method 0x9e001877. +// +// Solidity: function GLOBAL_EXIT_ROOT_MANAGER_L2() view returns(address) +func (_Sequence *SequenceCallerSession) GLOBALEXITROOTMANAGERL2() (common.Address, error) { + return _Sequence.Contract.GLOBALEXITROOTMANAGERL2(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGELISTLENLEN is a free data retrieval call binding the contract method 0x11e892d4. +// +// Solidity: function INITIALIZE_TX_BRIDGE_LIST_LEN_LEN() view returns(uint8) +func (_Sequence *SequenceCaller) INITIALIZETXBRIDGELISTLENLEN(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_LIST_LEN_LEN") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// INITIALIZETXBRIDGELISTLENLEN is a free data retrieval call binding the contract method 0x11e892d4. +// +// Solidity: function INITIALIZE_TX_BRIDGE_LIST_LEN_LEN() view returns(uint8) +func (_Sequence *SequenceSession) INITIALIZETXBRIDGELISTLENLEN() (uint8, error) { + return _Sequence.Contract.INITIALIZETXBRIDGELISTLENLEN(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGELISTLENLEN is a free data retrieval call binding the contract method 0x11e892d4. +// +// Solidity: function INITIALIZE_TX_BRIDGE_LIST_LEN_LEN() view returns(uint8) +func (_Sequence *SequenceCallerSession) INITIALIZETXBRIDGELISTLENLEN() (uint8, error) { + return _Sequence.Contract.INITIALIZETXBRIDGELISTLENLEN(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMS is a free data retrieval call binding the contract method 0x05835f37. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS() view returns(bytes) +func (_Sequence *SequenceCaller) INITIALIZETXBRIDGEPARAMS(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_PARAMS") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// INITIALIZETXBRIDGEPARAMS is a free data retrieval call binding the contract method 0x05835f37. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS() view returns(bytes) +func (_Sequence *SequenceSession) INITIALIZETXBRIDGEPARAMS() ([]byte, error) { + return _Sequence.Contract.INITIALIZETXBRIDGEPARAMS(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMS is a free data retrieval call binding the contract method 0x05835f37. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS() view returns(bytes) +func (_Sequence *SequenceCallerSession) INITIALIZETXBRIDGEPARAMS() ([]byte, error) { + return _Sequence.Contract.INITIALIZETXBRIDGEPARAMS(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS is a free data retrieval call binding the contract method 0x7a5460c5. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS() view returns(bytes) +func (_Sequence *SequenceCaller) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS is a free data retrieval call binding the contract method 0x7a5460c5. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS() view returns(bytes) +func (_Sequence *SequenceSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS() ([]byte, error) { + return _Sequence.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS is a free data retrieval call binding the contract method 0x7a5460c5. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS() view returns(bytes) +func (_Sequence *SequenceCallerSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS() ([]byte, error) { + return _Sequence.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA is a free data retrieval call binding the contract method 0x52bdeb6d. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA() view returns(bytes) +func (_Sequence *SequenceCaller) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA is a free data retrieval call binding the contract method 0x52bdeb6d. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA() view returns(bytes) +func (_Sequence *SequenceSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA() ([]byte, error) { + return _Sequence.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA(&_Sequence.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA is a free data retrieval call binding the contract method 0x52bdeb6d. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA() view returns(bytes) +func (_Sequence *SequenceCallerSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA() ([]byte, error) { + return _Sequence.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA(&_Sequence.CallOpts) +} + +// INITIALIZETXCONSTANTBYTES is a free data retrieval call binding the contract method 0x03508963. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES() view returns(uint16) +func (_Sequence *SequenceCaller) INITIALIZETXCONSTANTBYTES(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_CONSTANT_BYTES") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// INITIALIZETXCONSTANTBYTES is a free data retrieval call binding the contract method 0x03508963. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES() view returns(uint16) +func (_Sequence *SequenceSession) INITIALIZETXCONSTANTBYTES() (uint16, error) { + return _Sequence.Contract.INITIALIZETXCONSTANTBYTES(&_Sequence.CallOpts) +} + +// INITIALIZETXCONSTANTBYTES is a free data retrieval call binding the contract method 0x03508963. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES() view returns(uint16) +func (_Sequence *SequenceCallerSession) INITIALIZETXCONSTANTBYTES() (uint16, error) { + return _Sequence.Contract.INITIALIZETXCONSTANTBYTES(&_Sequence.CallOpts) +} + +// INITIALIZETXCONSTANTBYTESEMPTYMETADATA is a free data retrieval call binding the contract method 0x676870d2. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA() view returns(uint16) +func (_Sequence *SequenceCaller) INITIALIZETXCONSTANTBYTESEMPTYMETADATA(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// INITIALIZETXCONSTANTBYTESEMPTYMETADATA is a free data retrieval call binding the contract method 0x676870d2. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA() view returns(uint16) +func (_Sequence *SequenceSession) INITIALIZETXCONSTANTBYTESEMPTYMETADATA() (uint16, error) { + return _Sequence.Contract.INITIALIZETXCONSTANTBYTESEMPTYMETADATA(&_Sequence.CallOpts) +} + +// INITIALIZETXCONSTANTBYTESEMPTYMETADATA is a free data retrieval call binding the contract method 0x676870d2. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA() view returns(uint16) +func (_Sequence *SequenceCallerSession) INITIALIZETXCONSTANTBYTESEMPTYMETADATA() (uint16, error) { + return _Sequence.Contract.INITIALIZETXCONSTANTBYTESEMPTYMETADATA(&_Sequence.CallOpts) +} + +// INITIALIZETXDATALENEMPTYMETADATA is a free data retrieval call binding the contract method 0xc7fffd4b. +// +// Solidity: function INITIALIZE_TX_DATA_LEN_EMPTY_METADATA() view returns(uint8) +func (_Sequence *SequenceCaller) INITIALIZETXDATALENEMPTYMETADATA(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_DATA_LEN_EMPTY_METADATA") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// INITIALIZETXDATALENEMPTYMETADATA is a free data retrieval call binding the contract method 0xc7fffd4b. +// +// Solidity: function INITIALIZE_TX_DATA_LEN_EMPTY_METADATA() view returns(uint8) +func (_Sequence *SequenceSession) INITIALIZETXDATALENEMPTYMETADATA() (uint8, error) { + return _Sequence.Contract.INITIALIZETXDATALENEMPTYMETADATA(&_Sequence.CallOpts) +} + +// INITIALIZETXDATALENEMPTYMETADATA is a free data retrieval call binding the contract method 0xc7fffd4b. +// +// Solidity: function INITIALIZE_TX_DATA_LEN_EMPTY_METADATA() view returns(uint8) +func (_Sequence *SequenceCallerSession) INITIALIZETXDATALENEMPTYMETADATA() (uint8, error) { + return _Sequence.Contract.INITIALIZETXDATALENEMPTYMETADATA(&_Sequence.CallOpts) +} + +// INITIALIZETXEFFECTIVEPERCENTAGE is a free data retrieval call binding the contract method 0x40b5de6c. +// +// Solidity: function INITIALIZE_TX_EFFECTIVE_PERCENTAGE() view returns(bytes1) +func (_Sequence *SequenceCaller) INITIALIZETXEFFECTIVEPERCENTAGE(opts *bind.CallOpts) ([1]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "INITIALIZE_TX_EFFECTIVE_PERCENTAGE") + + if err != nil { + return *new([1]byte), err + } + + out0 := *abi.ConvertType(out[0], new([1]byte)).(*[1]byte) + + return out0, err + +} + +// INITIALIZETXEFFECTIVEPERCENTAGE is a free data retrieval call binding the contract method 0x40b5de6c. +// +// Solidity: function INITIALIZE_TX_EFFECTIVE_PERCENTAGE() view returns(bytes1) +func (_Sequence *SequenceSession) INITIALIZETXEFFECTIVEPERCENTAGE() ([1]byte, error) { + return _Sequence.Contract.INITIALIZETXEFFECTIVEPERCENTAGE(&_Sequence.CallOpts) +} + +// INITIALIZETXEFFECTIVEPERCENTAGE is a free data retrieval call binding the contract method 0x40b5de6c. +// +// Solidity: function INITIALIZE_TX_EFFECTIVE_PERCENTAGE() view returns(bytes1) +func (_Sequence *SequenceCallerSession) INITIALIZETXEFFECTIVEPERCENTAGE() ([1]byte, error) { + return _Sequence.Contract.INITIALIZETXEFFECTIVEPERCENTAGE(&_Sequence.CallOpts) +} + +// SIGNATUREINITIALIZETXR is a free data retrieval call binding the contract method 0xb0afe154. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_R() view returns(bytes32) +func (_Sequence *SequenceCaller) SIGNATUREINITIALIZETXR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "SIGNATURE_INITIALIZE_TX_R") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// SIGNATUREINITIALIZETXR is a free data retrieval call binding the contract method 0xb0afe154. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_R() view returns(bytes32) +func (_Sequence *SequenceSession) SIGNATUREINITIALIZETXR() ([32]byte, error) { + return _Sequence.Contract.SIGNATUREINITIALIZETXR(&_Sequence.CallOpts) +} + +// SIGNATUREINITIALIZETXR is a free data retrieval call binding the contract method 0xb0afe154. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_R() view returns(bytes32) +func (_Sequence *SequenceCallerSession) SIGNATUREINITIALIZETXR() ([32]byte, error) { + return _Sequence.Contract.SIGNATUREINITIALIZETXR(&_Sequence.CallOpts) +} + +// SIGNATUREINITIALIZETXS is a free data retrieval call binding the contract method 0xd7bc90ff. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_S() view returns(bytes32) +func (_Sequence *SequenceCaller) SIGNATUREINITIALIZETXS(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "SIGNATURE_INITIALIZE_TX_S") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// SIGNATUREINITIALIZETXS is a free data retrieval call binding the contract method 0xd7bc90ff. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_S() view returns(bytes32) +func (_Sequence *SequenceSession) SIGNATUREINITIALIZETXS() ([32]byte, error) { + return _Sequence.Contract.SIGNATUREINITIALIZETXS(&_Sequence.CallOpts) +} + +// SIGNATUREINITIALIZETXS is a free data retrieval call binding the contract method 0xd7bc90ff. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_S() view returns(bytes32) +func (_Sequence *SequenceCallerSession) SIGNATUREINITIALIZETXS() ([32]byte, error) { + return _Sequence.Contract.SIGNATUREINITIALIZETXS(&_Sequence.CallOpts) +} + +// SIGNATUREINITIALIZETXV is a free data retrieval call binding the contract method 0xf35dda47. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_V() view returns(uint8) +func (_Sequence *SequenceCaller) SIGNATUREINITIALIZETXV(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "SIGNATURE_INITIALIZE_TX_V") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// SIGNATUREINITIALIZETXV is a free data retrieval call binding the contract method 0xf35dda47. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_V() view returns(uint8) +func (_Sequence *SequenceSession) SIGNATUREINITIALIZETXV() (uint8, error) { + return _Sequence.Contract.SIGNATUREINITIALIZETXV(&_Sequence.CallOpts) +} + +// SIGNATUREINITIALIZETXV is a free data retrieval call binding the contract method 0xf35dda47. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_V() view returns(uint8) +func (_Sequence *SequenceCallerSession) SIGNATUREINITIALIZETXV() (uint8, error) { + return _Sequence.Contract.SIGNATUREINITIALIZETXV(&_Sequence.CallOpts) +} + +// TIMESTAMPRANGE is a free data retrieval call binding the contract method 0x42308fab. +// +// Solidity: function TIMESTAMP_RANGE() view returns(uint256) +func (_Sequence *SequenceCaller) TIMESTAMPRANGE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "TIMESTAMP_RANGE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TIMESTAMPRANGE is a free data retrieval call binding the contract method 0x42308fab. +// +// Solidity: function TIMESTAMP_RANGE() view returns(uint256) +func (_Sequence *SequenceSession) TIMESTAMPRANGE() (*big.Int, error) { + return _Sequence.Contract.TIMESTAMPRANGE(&_Sequence.CallOpts) +} + +// TIMESTAMPRANGE is a free data retrieval call binding the contract method 0x42308fab. +// +// Solidity: function TIMESTAMP_RANGE() view returns(uint256) +func (_Sequence *SequenceCallerSession) TIMESTAMPRANGE() (*big.Int, error) { + return _Sequence.Contract.TIMESTAMPRANGE(&_Sequence.CallOpts) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Sequence *SequenceCaller) Admin(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "admin") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Sequence *SequenceSession) Admin() (common.Address, error) { + return _Sequence.Contract.Admin(&_Sequence.CallOpts) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Sequence *SequenceCallerSession) Admin() (common.Address, error) { + return _Sequence.Contract.Admin(&_Sequence.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Sequence *SequenceCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "bridgeAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Sequence *SequenceSession) BridgeAddress() (common.Address, error) { + return _Sequence.Contract.BridgeAddress(&_Sequence.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Sequence *SequenceCallerSession) BridgeAddress() (common.Address, error) { + return _Sequence.Contract.BridgeAddress(&_Sequence.CallOpts) +} + +// CalculatePolPerForceBatch is a free data retrieval call binding the contract method 0x00d0295d. +// +// Solidity: function calculatePolPerForceBatch() view returns(uint256) +func (_Sequence *SequenceCaller) CalculatePolPerForceBatch(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "calculatePolPerForceBatch") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CalculatePolPerForceBatch is a free data retrieval call binding the contract method 0x00d0295d. +// +// Solidity: function calculatePolPerForceBatch() view returns(uint256) +func (_Sequence *SequenceSession) CalculatePolPerForceBatch() (*big.Int, error) { + return _Sequence.Contract.CalculatePolPerForceBatch(&_Sequence.CallOpts) +} + +// CalculatePolPerForceBatch is a free data retrieval call binding the contract method 0x00d0295d. +// +// Solidity: function calculatePolPerForceBatch() view returns(uint256) +func (_Sequence *SequenceCallerSession) CalculatePolPerForceBatch() (*big.Int, error) { + return _Sequence.Contract.CalculatePolPerForceBatch(&_Sequence.CallOpts) +} + +// ForceBatchAddress is a free data retrieval call binding the contract method 0x2c111c06. +// +// Solidity: function forceBatchAddress() view returns(address) +func (_Sequence *SequenceCaller) ForceBatchAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "forceBatchAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ForceBatchAddress is a free data retrieval call binding the contract method 0x2c111c06. +// +// Solidity: function forceBatchAddress() view returns(address) +func (_Sequence *SequenceSession) ForceBatchAddress() (common.Address, error) { + return _Sequence.Contract.ForceBatchAddress(&_Sequence.CallOpts) +} + +// ForceBatchAddress is a free data retrieval call binding the contract method 0x2c111c06. +// +// Solidity: function forceBatchAddress() view returns(address) +func (_Sequence *SequenceCallerSession) ForceBatchAddress() (common.Address, error) { + return _Sequence.Contract.ForceBatchAddress(&_Sequence.CallOpts) +} + +// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. +// +// Solidity: function forceBatchTimeout() view returns(uint64) +func (_Sequence *SequenceCaller) ForceBatchTimeout(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "forceBatchTimeout") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. +// +// Solidity: function forceBatchTimeout() view returns(uint64) +func (_Sequence *SequenceSession) ForceBatchTimeout() (uint64, error) { + return _Sequence.Contract.ForceBatchTimeout(&_Sequence.CallOpts) +} + +// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. +// +// Solidity: function forceBatchTimeout() view returns(uint64) +func (_Sequence *SequenceCallerSession) ForceBatchTimeout() (uint64, error) { + return _Sequence.Contract.ForceBatchTimeout(&_Sequence.CallOpts) +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Sequence *SequenceCaller) ForcedBatches(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "forcedBatches", arg0) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Sequence *SequenceSession) ForcedBatches(arg0 uint64) ([32]byte, error) { + return _Sequence.Contract.ForcedBatches(&_Sequence.CallOpts, arg0) +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Sequence *SequenceCallerSession) ForcedBatches(arg0 uint64) ([32]byte, error) { + return _Sequence.Contract.ForcedBatches(&_Sequence.CallOpts, arg0) +} + +// GasTokenAddress is a free data retrieval call binding the contract method 0x3c351e10. +// +// Solidity: function gasTokenAddress() view returns(address) +func (_Sequence *SequenceCaller) GasTokenAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "gasTokenAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasTokenAddress is a free data retrieval call binding the contract method 0x3c351e10. +// +// Solidity: function gasTokenAddress() view returns(address) +func (_Sequence *SequenceSession) GasTokenAddress() (common.Address, error) { + return _Sequence.Contract.GasTokenAddress(&_Sequence.CallOpts) +} + +// GasTokenAddress is a free data retrieval call binding the contract method 0x3c351e10. +// +// Solidity: function gasTokenAddress() view returns(address) +func (_Sequence *SequenceCallerSession) GasTokenAddress() (common.Address, error) { + return _Sequence.Contract.GasTokenAddress(&_Sequence.CallOpts) +} + +// GasTokenNetwork is a free data retrieval call binding the contract method 0x3cbc795b. +// +// Solidity: function gasTokenNetwork() view returns(uint32) +func (_Sequence *SequenceCaller) GasTokenNetwork(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "gasTokenNetwork") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// GasTokenNetwork is a free data retrieval call binding the contract method 0x3cbc795b. +// +// Solidity: function gasTokenNetwork() view returns(uint32) +func (_Sequence *SequenceSession) GasTokenNetwork() (uint32, error) { + return _Sequence.Contract.GasTokenNetwork(&_Sequence.CallOpts) +} + +// GasTokenNetwork is a free data retrieval call binding the contract method 0x3cbc795b. +// +// Solidity: function gasTokenNetwork() view returns(uint32) +func (_Sequence *SequenceCallerSession) GasTokenNetwork() (uint32, error) { + return _Sequence.Contract.GasTokenNetwork(&_Sequence.CallOpts) +} + +// GenerateInitializeTransaction is a free data retrieval call binding the contract method 0xa652f26c. +// +// Solidity: function generateInitializeTransaction(uint32 networkID, address _gasTokenAddress, uint32 _gasTokenNetwork, bytes _gasTokenMetadata) view returns(bytes) +func (_Sequence *SequenceCaller) GenerateInitializeTransaction(opts *bind.CallOpts, networkID uint32, _gasTokenAddress common.Address, _gasTokenNetwork uint32, _gasTokenMetadata []byte) ([]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "generateInitializeTransaction", networkID, _gasTokenAddress, _gasTokenNetwork, _gasTokenMetadata) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GenerateInitializeTransaction is a free data retrieval call binding the contract method 0xa652f26c. +// +// Solidity: function generateInitializeTransaction(uint32 networkID, address _gasTokenAddress, uint32 _gasTokenNetwork, bytes _gasTokenMetadata) view returns(bytes) +func (_Sequence *SequenceSession) GenerateInitializeTransaction(networkID uint32, _gasTokenAddress common.Address, _gasTokenNetwork uint32, _gasTokenMetadata []byte) ([]byte, error) { + return _Sequence.Contract.GenerateInitializeTransaction(&_Sequence.CallOpts, networkID, _gasTokenAddress, _gasTokenNetwork, _gasTokenMetadata) +} + +// GenerateInitializeTransaction is a free data retrieval call binding the contract method 0xa652f26c. +// +// Solidity: function generateInitializeTransaction(uint32 networkID, address _gasTokenAddress, uint32 _gasTokenNetwork, bytes _gasTokenMetadata) view returns(bytes) +func (_Sequence *SequenceCallerSession) GenerateInitializeTransaction(networkID uint32, _gasTokenAddress common.Address, _gasTokenNetwork uint32, _gasTokenMetadata []byte) ([]byte, error) { + return _Sequence.Contract.GenerateInitializeTransaction(&_Sequence.CallOpts, networkID, _gasTokenAddress, _gasTokenNetwork, _gasTokenMetadata) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Sequence *SequenceCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "globalExitRootManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Sequence *SequenceSession) GlobalExitRootManager() (common.Address, error) { + return _Sequence.Contract.GlobalExitRootManager(&_Sequence.CallOpts) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Sequence *SequenceCallerSession) GlobalExitRootManager() (common.Address, error) { + return _Sequence.Contract.GlobalExitRootManager(&_Sequence.CallOpts) +} + +// LastAccInputHash is a free data retrieval call binding the contract method 0x6e05d2cd. +// +// Solidity: function lastAccInputHash() view returns(bytes32) +func (_Sequence *SequenceCaller) LastAccInputHash(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "lastAccInputHash") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// LastAccInputHash is a free data retrieval call binding the contract method 0x6e05d2cd. +// +// Solidity: function lastAccInputHash() view returns(bytes32) +func (_Sequence *SequenceSession) LastAccInputHash() ([32]byte, error) { + return _Sequence.Contract.LastAccInputHash(&_Sequence.CallOpts) +} + +// LastAccInputHash is a free data retrieval call binding the contract method 0x6e05d2cd. +// +// Solidity: function lastAccInputHash() view returns(bytes32) +func (_Sequence *SequenceCallerSession) LastAccInputHash() ([32]byte, error) { + return _Sequence.Contract.LastAccInputHash(&_Sequence.CallOpts) +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Sequence *SequenceCaller) LastForceBatch(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "lastForceBatch") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Sequence *SequenceSession) LastForceBatch() (uint64, error) { + return _Sequence.Contract.LastForceBatch(&_Sequence.CallOpts) +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Sequence *SequenceCallerSession) LastForceBatch() (uint64, error) { + return _Sequence.Contract.LastForceBatch(&_Sequence.CallOpts) +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Sequence *SequenceCaller) LastForceBatchSequenced(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "lastForceBatchSequenced") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Sequence *SequenceSession) LastForceBatchSequenced() (uint64, error) { + return _Sequence.Contract.LastForceBatchSequenced(&_Sequence.CallOpts) +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Sequence *SequenceCallerSession) LastForceBatchSequenced() (uint64, error) { + return _Sequence.Contract.LastForceBatchSequenced(&_Sequence.CallOpts) +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Sequence *SequenceCaller) NetworkName(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "networkName") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Sequence *SequenceSession) NetworkName() (string, error) { + return _Sequence.Contract.NetworkName(&_Sequence.CallOpts) +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Sequence *SequenceCallerSession) NetworkName() (string, error) { + return _Sequence.Contract.NetworkName(&_Sequence.CallOpts) +} + +// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. +// +// Solidity: function pendingAdmin() view returns(address) +func (_Sequence *SequenceCaller) PendingAdmin(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "pendingAdmin") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. +// +// Solidity: function pendingAdmin() view returns(address) +func (_Sequence *SequenceSession) PendingAdmin() (common.Address, error) { + return _Sequence.Contract.PendingAdmin(&_Sequence.CallOpts) +} + +// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. +// +// Solidity: function pendingAdmin() view returns(address) +func (_Sequence *SequenceCallerSession) PendingAdmin() (common.Address, error) { + return _Sequence.Contract.PendingAdmin(&_Sequence.CallOpts) +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Sequence *SequenceCaller) Pol(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "pol") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Sequence *SequenceSession) Pol() (common.Address, error) { + return _Sequence.Contract.Pol(&_Sequence.CallOpts) +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Sequence *SequenceCallerSession) Pol() (common.Address, error) { + return _Sequence.Contract.Pol(&_Sequence.CallOpts) +} + +// RollupManager is a free data retrieval call binding the contract method 0x49b7b802. +// +// Solidity: function rollupManager() view returns(address) +func (_Sequence *SequenceCaller) RollupManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "rollupManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RollupManager is a free data retrieval call binding the contract method 0x49b7b802. +// +// Solidity: function rollupManager() view returns(address) +func (_Sequence *SequenceSession) RollupManager() (common.Address, error) { + return _Sequence.Contract.RollupManager(&_Sequence.CallOpts) +} + +// RollupManager is a free data retrieval call binding the contract method 0x49b7b802. +// +// Solidity: function rollupManager() view returns(address) +func (_Sequence *SequenceCallerSession) RollupManager() (common.Address, error) { + return _Sequence.Contract.RollupManager(&_Sequence.CallOpts) +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Sequence *SequenceCaller) TrustedSequencer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "trustedSequencer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Sequence *SequenceSession) TrustedSequencer() (common.Address, error) { + return _Sequence.Contract.TrustedSequencer(&_Sequence.CallOpts) +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Sequence *SequenceCallerSession) TrustedSequencer() (common.Address, error) { + return _Sequence.Contract.TrustedSequencer(&_Sequence.CallOpts) +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Sequence *SequenceCaller) TrustedSequencerURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Sequence.contract.Call(opts, &out, "trustedSequencerURL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Sequence *SequenceSession) TrustedSequencerURL() (string, error) { + return _Sequence.Contract.TrustedSequencerURL(&_Sequence.CallOpts) +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Sequence *SequenceCallerSession) TrustedSequencerURL() (string, error) { + return _Sequence.Contract.TrustedSequencerURL(&_Sequence.CallOpts) +} + +// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. +// +// Solidity: function acceptAdminRole() returns() +func (_Sequence *SequenceTransactor) AcceptAdminRole(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "acceptAdminRole") +} + +// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. +// +// Solidity: function acceptAdminRole() returns() +func (_Sequence *SequenceSession) AcceptAdminRole() (*types.Transaction, error) { + return _Sequence.Contract.AcceptAdminRole(&_Sequence.TransactOpts) +} + +// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. +// +// Solidity: function acceptAdminRole() returns() +func (_Sequence *SequenceTransactorSession) AcceptAdminRole() (*types.Transaction, error) { + return _Sequence.Contract.AcceptAdminRole(&_Sequence.TransactOpts) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 polAmount) returns() +func (_Sequence *SequenceTransactor) ForceBatch(opts *bind.TransactOpts, transactions []byte, polAmount *big.Int) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "forceBatch", transactions, polAmount) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 polAmount) returns() +func (_Sequence *SequenceSession) ForceBatch(transactions []byte, polAmount *big.Int) (*types.Transaction, error) { + return _Sequence.Contract.ForceBatch(&_Sequence.TransactOpts, transactions, polAmount) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 polAmount) returns() +func (_Sequence *SequenceTransactorSession) ForceBatch(transactions []byte, polAmount *big.Int) (*types.Transaction, error) { + return _Sequence.Contract.ForceBatch(&_Sequence.TransactOpts, transactions, polAmount) +} + +// Initialize is a paid mutator transaction binding the contract method 0x71257022. +// +// Solidity: function initialize(address _admin, address sequencer, uint32 networkID, address _gasTokenAddress, string sequencerURL, string _networkName) returns() +func (_Sequence *SequenceTransactor) Initialize(opts *bind.TransactOpts, _admin common.Address, sequencer common.Address, networkID uint32, _gasTokenAddress common.Address, sequencerURL string, _networkName string) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "initialize", _admin, sequencer, networkID, _gasTokenAddress, sequencerURL, _networkName) +} + +// Initialize is a paid mutator transaction binding the contract method 0x71257022. +// +// Solidity: function initialize(address _admin, address sequencer, uint32 networkID, address _gasTokenAddress, string sequencerURL, string _networkName) returns() +func (_Sequence *SequenceSession) Initialize(_admin common.Address, sequencer common.Address, networkID uint32, _gasTokenAddress common.Address, sequencerURL string, _networkName string) (*types.Transaction, error) { + return _Sequence.Contract.Initialize(&_Sequence.TransactOpts, _admin, sequencer, networkID, _gasTokenAddress, sequencerURL, _networkName) +} + +// Initialize is a paid mutator transaction binding the contract method 0x71257022. +// +// Solidity: function initialize(address _admin, address sequencer, uint32 networkID, address _gasTokenAddress, string sequencerURL, string _networkName) returns() +func (_Sequence *SequenceTransactorSession) Initialize(_admin common.Address, sequencer common.Address, networkID uint32, _gasTokenAddress common.Address, sequencerURL string, _networkName string) (*types.Transaction, error) { + return _Sequence.Contract.Initialize(&_Sequence.TransactOpts, _admin, sequencer, networkID, _gasTokenAddress, sequencerURL, _networkName) +} + +// OnVerifyBatches is a paid mutator transaction binding the contract method 0x32c2d153. +// +// Solidity: function onVerifyBatches(uint64 lastVerifiedBatch, bytes32 newStateRoot, address aggregator) returns() +func (_Sequence *SequenceTransactor) OnVerifyBatches(opts *bind.TransactOpts, lastVerifiedBatch uint64, newStateRoot [32]byte, aggregator common.Address) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "onVerifyBatches", lastVerifiedBatch, newStateRoot, aggregator) +} + +// OnVerifyBatches is a paid mutator transaction binding the contract method 0x32c2d153. +// +// Solidity: function onVerifyBatches(uint64 lastVerifiedBatch, bytes32 newStateRoot, address aggregator) returns() +func (_Sequence *SequenceSession) OnVerifyBatches(lastVerifiedBatch uint64, newStateRoot [32]byte, aggregator common.Address) (*types.Transaction, error) { + return _Sequence.Contract.OnVerifyBatches(&_Sequence.TransactOpts, lastVerifiedBatch, newStateRoot, aggregator) +} + +// OnVerifyBatches is a paid mutator transaction binding the contract method 0x32c2d153. +// +// Solidity: function onVerifyBatches(uint64 lastVerifiedBatch, bytes32 newStateRoot, address aggregator) returns() +func (_Sequence *SequenceTransactorSession) OnVerifyBatches(lastVerifiedBatch uint64, newStateRoot [32]byte, aggregator common.Address) (*types.Transaction, error) { + return _Sequence.Contract.OnVerifyBatches(&_Sequence.TransactOpts, lastVerifiedBatch, newStateRoot, aggregator) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0xdef57e54. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,bytes32)[] batches, uint64 maxSequenceTimestamp, uint64 initSequencedBatch, address l2Coinbase) returns() +func (_Sequence *SequenceTransactor) SequenceBatches(opts *bind.TransactOpts, batches []PolygonRollupBaseEtrogBatchData, maxSequenceTimestamp uint64, initSequencedBatch uint64, l2Coinbase common.Address) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "sequenceBatches", batches, maxSequenceTimestamp, initSequencedBatch, l2Coinbase) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0xdef57e54. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,bytes32)[] batches, uint64 maxSequenceTimestamp, uint64 initSequencedBatch, address l2Coinbase) returns() +func (_Sequence *SequenceSession) SequenceBatches(batches []PolygonRollupBaseEtrogBatchData, maxSequenceTimestamp uint64, initSequencedBatch uint64, l2Coinbase common.Address) (*types.Transaction, error) { + return _Sequence.Contract.SequenceBatches(&_Sequence.TransactOpts, batches, maxSequenceTimestamp, initSequencedBatch, l2Coinbase) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0xdef57e54. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,bytes32)[] batches, uint64 maxSequenceTimestamp, uint64 initSequencedBatch, address l2Coinbase) returns() +func (_Sequence *SequenceTransactorSession) SequenceBatches(batches []PolygonRollupBaseEtrogBatchData, maxSequenceTimestamp uint64, initSequencedBatch uint64, l2Coinbase common.Address) (*types.Transaction, error) { + return _Sequence.Contract.SequenceBatches(&_Sequence.TransactOpts, batches, maxSequenceTimestamp, initSequencedBatch, l2Coinbase) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0x9f26f840. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64,bytes32)[] batches) returns() +func (_Sequence *SequenceTransactor) SequenceForceBatches(opts *bind.TransactOpts, batches []PolygonRollupBaseEtrogBatchData) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "sequenceForceBatches", batches) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0x9f26f840. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64,bytes32)[] batches) returns() +func (_Sequence *SequenceSession) SequenceForceBatches(batches []PolygonRollupBaseEtrogBatchData) (*types.Transaction, error) { + return _Sequence.Contract.SequenceForceBatches(&_Sequence.TransactOpts, batches) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0x9f26f840. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64,bytes32)[] batches) returns() +func (_Sequence *SequenceTransactorSession) SequenceForceBatches(batches []PolygonRollupBaseEtrogBatchData) (*types.Transaction, error) { + return _Sequence.Contract.SequenceForceBatches(&_Sequence.TransactOpts, batches) +} + +// SetForceBatchAddress is a paid mutator transaction binding the contract method 0x91cafe32. +// +// Solidity: function setForceBatchAddress(address newForceBatchAddress) returns() +func (_Sequence *SequenceTransactor) SetForceBatchAddress(opts *bind.TransactOpts, newForceBatchAddress common.Address) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "setForceBatchAddress", newForceBatchAddress) +} + +// SetForceBatchAddress is a paid mutator transaction binding the contract method 0x91cafe32. +// +// Solidity: function setForceBatchAddress(address newForceBatchAddress) returns() +func (_Sequence *SequenceSession) SetForceBatchAddress(newForceBatchAddress common.Address) (*types.Transaction, error) { + return _Sequence.Contract.SetForceBatchAddress(&_Sequence.TransactOpts, newForceBatchAddress) +} + +// SetForceBatchAddress is a paid mutator transaction binding the contract method 0x91cafe32. +// +// Solidity: function setForceBatchAddress(address newForceBatchAddress) returns() +func (_Sequence *SequenceTransactorSession) SetForceBatchAddress(newForceBatchAddress common.Address) (*types.Transaction, error) { + return _Sequence.Contract.SetForceBatchAddress(&_Sequence.TransactOpts, newForceBatchAddress) +} + +// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. +// +// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() +func (_Sequence *SequenceTransactor) SetForceBatchTimeout(opts *bind.TransactOpts, newforceBatchTimeout uint64) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "setForceBatchTimeout", newforceBatchTimeout) +} + +// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. +// +// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() +func (_Sequence *SequenceSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { + return _Sequence.Contract.SetForceBatchTimeout(&_Sequence.TransactOpts, newforceBatchTimeout) +} + +// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. +// +// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() +func (_Sequence *SequenceTransactorSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { + return _Sequence.Contract.SetForceBatchTimeout(&_Sequence.TransactOpts, newforceBatchTimeout) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Sequence *SequenceTransactor) SetTrustedSequencer(opts *bind.TransactOpts, newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "setTrustedSequencer", newTrustedSequencer) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Sequence *SequenceSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Sequence.Contract.SetTrustedSequencer(&_Sequence.TransactOpts, newTrustedSequencer) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Sequence *SequenceTransactorSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Sequence.Contract.SetTrustedSequencer(&_Sequence.TransactOpts, newTrustedSequencer) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Sequence *SequenceTransactor) SetTrustedSequencerURL(opts *bind.TransactOpts, newTrustedSequencerURL string) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "setTrustedSequencerURL", newTrustedSequencerURL) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Sequence *SequenceSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { + return _Sequence.Contract.SetTrustedSequencerURL(&_Sequence.TransactOpts, newTrustedSequencerURL) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Sequence *SequenceTransactorSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { + return _Sequence.Contract.SetTrustedSequencerURL(&_Sequence.TransactOpts, newTrustedSequencerURL) +} + +// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. +// +// Solidity: function transferAdminRole(address newPendingAdmin) returns() +func (_Sequence *SequenceTransactor) TransferAdminRole(opts *bind.TransactOpts, newPendingAdmin common.Address) (*types.Transaction, error) { + return _Sequence.contract.Transact(opts, "transferAdminRole", newPendingAdmin) +} + +// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. +// +// Solidity: function transferAdminRole(address newPendingAdmin) returns() +func (_Sequence *SequenceSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { + return _Sequence.Contract.TransferAdminRole(&_Sequence.TransactOpts, newPendingAdmin) +} + +// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. +// +// Solidity: function transferAdminRole(address newPendingAdmin) returns() +func (_Sequence *SequenceTransactorSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { + return _Sequence.Contract.TransferAdminRole(&_Sequence.TransactOpts, newPendingAdmin) +} + +// SequenceAcceptAdminRoleIterator is returned from FilterAcceptAdminRole and is used to iterate over the raw logs and unpacked data for AcceptAdminRole events raised by the Sequence contract. +type SequenceAcceptAdminRoleIterator struct { + Event *SequenceAcceptAdminRole // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceAcceptAdminRoleIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceAcceptAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceAcceptAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceAcceptAdminRoleIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceAcceptAdminRoleIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceAcceptAdminRole represents a AcceptAdminRole event raised by the Sequence contract. +type SequenceAcceptAdminRole struct { + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAcceptAdminRole is a free log retrieval operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. +// +// Solidity: event AcceptAdminRole(address newAdmin) +func (_Sequence *SequenceFilterer) FilterAcceptAdminRole(opts *bind.FilterOpts) (*SequenceAcceptAdminRoleIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "AcceptAdminRole") + if err != nil { + return nil, err + } + return &SequenceAcceptAdminRoleIterator{contract: _Sequence.contract, event: "AcceptAdminRole", logs: logs, sub: sub}, nil +} + +// WatchAcceptAdminRole is a free log subscription operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. +// +// Solidity: event AcceptAdminRole(address newAdmin) +func (_Sequence *SequenceFilterer) WatchAcceptAdminRole(opts *bind.WatchOpts, sink chan<- *SequenceAcceptAdminRole) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "AcceptAdminRole") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceAcceptAdminRole) + if err := _Sequence.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAcceptAdminRole is a log parse operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. +// +// Solidity: event AcceptAdminRole(address newAdmin) +func (_Sequence *SequenceFilterer) ParseAcceptAdminRole(log types.Log) (*SequenceAcceptAdminRole, error) { + event := new(SequenceAcceptAdminRole) + if err := _Sequence.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceForceBatchIterator is returned from FilterForceBatch and is used to iterate over the raw logs and unpacked data for ForceBatch events raised by the Sequence contract. +type SequenceForceBatchIterator struct { + Event *SequenceForceBatch // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceForceBatchIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceForceBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceForceBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceForceBatchIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceForceBatchIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceForceBatch represents a ForceBatch event raised by the Sequence contract. +type SequenceForceBatch struct { + ForceBatchNum uint64 + LastGlobalExitRoot [32]byte + Sequencer common.Address + Transactions []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterForceBatch is a free log retrieval operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Sequence *SequenceFilterer) FilterForceBatch(opts *bind.FilterOpts, forceBatchNum []uint64) (*SequenceForceBatchIterator, error) { + + var forceBatchNumRule []interface{} + for _, forceBatchNumItem := range forceBatchNum { + forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) + } + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "ForceBatch", forceBatchNumRule) + if err != nil { + return nil, err + } + return &SequenceForceBatchIterator{contract: _Sequence.contract, event: "ForceBatch", logs: logs, sub: sub}, nil +} + +// WatchForceBatch is a free log subscription operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Sequence *SequenceFilterer) WatchForceBatch(opts *bind.WatchOpts, sink chan<- *SequenceForceBatch, forceBatchNum []uint64) (event.Subscription, error) { + + var forceBatchNumRule []interface{} + for _, forceBatchNumItem := range forceBatchNum { + forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) + } + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "ForceBatch", forceBatchNumRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceForceBatch) + if err := _Sequence.contract.UnpackLog(event, "ForceBatch", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseForceBatch is a log parse operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Sequence *SequenceFilterer) ParseForceBatch(log types.Log) (*SequenceForceBatch, error) { + event := new(SequenceForceBatch) + if err := _Sequence.contract.UnpackLog(event, "ForceBatch", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceInitialSequenceBatchesIterator is returned from FilterInitialSequenceBatches and is used to iterate over the raw logs and unpacked data for InitialSequenceBatches events raised by the Sequence contract. +type SequenceInitialSequenceBatchesIterator struct { + Event *SequenceInitialSequenceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceInitialSequenceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceInitialSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceInitialSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceInitialSequenceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceInitialSequenceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceInitialSequenceBatches represents a InitialSequenceBatches event raised by the Sequence contract. +type SequenceInitialSequenceBatches struct { + Transactions []byte + LastGlobalExitRoot [32]byte + Sequencer common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialSequenceBatches is a free log retrieval operation binding the contract event 0x060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f. +// +// Solidity: event InitialSequenceBatches(bytes transactions, bytes32 lastGlobalExitRoot, address sequencer) +func (_Sequence *SequenceFilterer) FilterInitialSequenceBatches(opts *bind.FilterOpts) (*SequenceInitialSequenceBatchesIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "InitialSequenceBatches") + if err != nil { + return nil, err + } + return &SequenceInitialSequenceBatchesIterator{contract: _Sequence.contract, event: "InitialSequenceBatches", logs: logs, sub: sub}, nil +} + +// WatchInitialSequenceBatches is a free log subscription operation binding the contract event 0x060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f. +// +// Solidity: event InitialSequenceBatches(bytes transactions, bytes32 lastGlobalExitRoot, address sequencer) +func (_Sequence *SequenceFilterer) WatchInitialSequenceBatches(opts *bind.WatchOpts, sink chan<- *SequenceInitialSequenceBatches) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "InitialSequenceBatches") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceInitialSequenceBatches) + if err := _Sequence.contract.UnpackLog(event, "InitialSequenceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialSequenceBatches is a log parse operation binding the contract event 0x060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f. +// +// Solidity: event InitialSequenceBatches(bytes transactions, bytes32 lastGlobalExitRoot, address sequencer) +func (_Sequence *SequenceFilterer) ParseInitialSequenceBatches(log types.Log) (*SequenceInitialSequenceBatches, error) { + event := new(SequenceInitialSequenceBatches) + if err := _Sequence.contract.UnpackLog(event, "InitialSequenceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Sequence contract. +type SequenceInitializedIterator struct { + Event *SequenceInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceInitialized represents a Initialized event raised by the Sequence contract. +type SequenceInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Sequence *SequenceFilterer) FilterInitialized(opts *bind.FilterOpts) (*SequenceInitializedIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &SequenceInitializedIterator{contract: _Sequence.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Sequence *SequenceFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *SequenceInitialized) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceInitialized) + if err := _Sequence.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Sequence *SequenceFilterer) ParseInitialized(log types.Log) (*SequenceInitialized, error) { + event := new(SequenceInitialized) + if err := _Sequence.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceSequenceBatchesIterator is returned from FilterSequenceBatches and is used to iterate over the raw logs and unpacked data for SequenceBatches events raised by the Sequence contract. +type SequenceSequenceBatchesIterator struct { + Event *SequenceSequenceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceSequenceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceSequenceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceSequenceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceSequenceBatches represents a SequenceBatches event raised by the Sequence contract. +type SequenceSequenceBatches struct { + NumBatch uint64 + L1InfoRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSequenceBatches is a free log retrieval operation binding the contract event 0x3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e766. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch, bytes32 l1InfoRoot) +func (_Sequence *SequenceFilterer) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*SequenceSequenceBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "SequenceBatches", numBatchRule) + if err != nil { + return nil, err + } + return &SequenceSequenceBatchesIterator{contract: _Sequence.contract, event: "SequenceBatches", logs: logs, sub: sub}, nil +} + +// WatchSequenceBatches is a free log subscription operation binding the contract event 0x3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e766. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch, bytes32 l1InfoRoot) +func (_Sequence *SequenceFilterer) WatchSequenceBatches(opts *bind.WatchOpts, sink chan<- *SequenceSequenceBatches, numBatch []uint64) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "SequenceBatches", numBatchRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceSequenceBatches) + if err := _Sequence.contract.UnpackLog(event, "SequenceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSequenceBatches is a log parse operation binding the contract event 0x3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e766. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch, bytes32 l1InfoRoot) +func (_Sequence *SequenceFilterer) ParseSequenceBatches(log types.Log) (*SequenceSequenceBatches, error) { + event := new(SequenceSequenceBatches) + if err := _Sequence.contract.UnpackLog(event, "SequenceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceSequenceForceBatchesIterator is returned from FilterSequenceForceBatches and is used to iterate over the raw logs and unpacked data for SequenceForceBatches events raised by the Sequence contract. +type SequenceSequenceForceBatchesIterator struct { + Event *SequenceSequenceForceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceSequenceForceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceSequenceForceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceSequenceForceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceSequenceForceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceSequenceForceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceSequenceForceBatches represents a SequenceForceBatches event raised by the Sequence contract. +type SequenceSequenceForceBatches struct { + NumBatch uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSequenceForceBatches is a free log retrieval operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Sequence *SequenceFilterer) FilterSequenceForceBatches(opts *bind.FilterOpts, numBatch []uint64) (*SequenceSequenceForceBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "SequenceForceBatches", numBatchRule) + if err != nil { + return nil, err + } + return &SequenceSequenceForceBatchesIterator{contract: _Sequence.contract, event: "SequenceForceBatches", logs: logs, sub: sub}, nil +} + +// WatchSequenceForceBatches is a free log subscription operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Sequence *SequenceFilterer) WatchSequenceForceBatches(opts *bind.WatchOpts, sink chan<- *SequenceSequenceForceBatches, numBatch []uint64) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "SequenceForceBatches", numBatchRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceSequenceForceBatches) + if err := _Sequence.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSequenceForceBatches is a log parse operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Sequence *SequenceFilterer) ParseSequenceForceBatches(log types.Log) (*SequenceSequenceForceBatches, error) { + event := new(SequenceSequenceForceBatches) + if err := _Sequence.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceSetForceBatchAddressIterator is returned from FilterSetForceBatchAddress and is used to iterate over the raw logs and unpacked data for SetForceBatchAddress events raised by the Sequence contract. +type SequenceSetForceBatchAddressIterator struct { + Event *SequenceSetForceBatchAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceSetForceBatchAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceSetForceBatchAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceSetForceBatchAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceSetForceBatchAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceSetForceBatchAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceSetForceBatchAddress represents a SetForceBatchAddress event raised by the Sequence contract. +type SequenceSetForceBatchAddress struct { + NewForceBatchAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetForceBatchAddress is a free log retrieval operation binding the contract event 0x5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb. +// +// Solidity: event SetForceBatchAddress(address newForceBatchAddress) +func (_Sequence *SequenceFilterer) FilterSetForceBatchAddress(opts *bind.FilterOpts) (*SequenceSetForceBatchAddressIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "SetForceBatchAddress") + if err != nil { + return nil, err + } + return &SequenceSetForceBatchAddressIterator{contract: _Sequence.contract, event: "SetForceBatchAddress", logs: logs, sub: sub}, nil +} + +// WatchSetForceBatchAddress is a free log subscription operation binding the contract event 0x5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb. +// +// Solidity: event SetForceBatchAddress(address newForceBatchAddress) +func (_Sequence *SequenceFilterer) WatchSetForceBatchAddress(opts *bind.WatchOpts, sink chan<- *SequenceSetForceBatchAddress) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "SetForceBatchAddress") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceSetForceBatchAddress) + if err := _Sequence.contract.UnpackLog(event, "SetForceBatchAddress", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetForceBatchAddress is a log parse operation binding the contract event 0x5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb. +// +// Solidity: event SetForceBatchAddress(address newForceBatchAddress) +func (_Sequence *SequenceFilterer) ParseSetForceBatchAddress(log types.Log) (*SequenceSetForceBatchAddress, error) { + event := new(SequenceSetForceBatchAddress) + if err := _Sequence.contract.UnpackLog(event, "SetForceBatchAddress", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceSetForceBatchTimeoutIterator is returned from FilterSetForceBatchTimeout and is used to iterate over the raw logs and unpacked data for SetForceBatchTimeout events raised by the Sequence contract. +type SequenceSetForceBatchTimeoutIterator struct { + Event *SequenceSetForceBatchTimeout // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceSetForceBatchTimeoutIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceSetForceBatchTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceSetForceBatchTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceSetForceBatchTimeoutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceSetForceBatchTimeoutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceSetForceBatchTimeout represents a SetForceBatchTimeout event raised by the Sequence contract. +type SequenceSetForceBatchTimeout struct { + NewforceBatchTimeout uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetForceBatchTimeout is a free log retrieval operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. +// +// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) +func (_Sequence *SequenceFilterer) FilterSetForceBatchTimeout(opts *bind.FilterOpts) (*SequenceSetForceBatchTimeoutIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "SetForceBatchTimeout") + if err != nil { + return nil, err + } + return &SequenceSetForceBatchTimeoutIterator{contract: _Sequence.contract, event: "SetForceBatchTimeout", logs: logs, sub: sub}, nil +} + +// WatchSetForceBatchTimeout is a free log subscription operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. +// +// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) +func (_Sequence *SequenceFilterer) WatchSetForceBatchTimeout(opts *bind.WatchOpts, sink chan<- *SequenceSetForceBatchTimeout) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "SetForceBatchTimeout") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceSetForceBatchTimeout) + if err := _Sequence.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetForceBatchTimeout is a log parse operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. +// +// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) +func (_Sequence *SequenceFilterer) ParseSetForceBatchTimeout(log types.Log) (*SequenceSetForceBatchTimeout, error) { + event := new(SequenceSetForceBatchTimeout) + if err := _Sequence.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceSetTrustedSequencerIterator is returned from FilterSetTrustedSequencer and is used to iterate over the raw logs and unpacked data for SetTrustedSequencer events raised by the Sequence contract. +type SequenceSetTrustedSequencerIterator struct { + Event *SequenceSetTrustedSequencer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceSetTrustedSequencerIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceSetTrustedSequencer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceSetTrustedSequencer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceSetTrustedSequencerIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceSetTrustedSequencerIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceSetTrustedSequencer represents a SetTrustedSequencer event raised by the Sequence contract. +type SequenceSetTrustedSequencer struct { + NewTrustedSequencer common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedSequencer is a free log retrieval operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Sequence *SequenceFilterer) FilterSetTrustedSequencer(opts *bind.FilterOpts) (*SequenceSetTrustedSequencerIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "SetTrustedSequencer") + if err != nil { + return nil, err + } + return &SequenceSetTrustedSequencerIterator{contract: _Sequence.contract, event: "SetTrustedSequencer", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedSequencer is a free log subscription operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Sequence *SequenceFilterer) WatchSetTrustedSequencer(opts *bind.WatchOpts, sink chan<- *SequenceSetTrustedSequencer) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "SetTrustedSequencer") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceSetTrustedSequencer) + if err := _Sequence.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedSequencer is a log parse operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Sequence *SequenceFilterer) ParseSetTrustedSequencer(log types.Log) (*SequenceSetTrustedSequencer, error) { + event := new(SequenceSetTrustedSequencer) + if err := _Sequence.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceSetTrustedSequencerURLIterator is returned from FilterSetTrustedSequencerURL and is used to iterate over the raw logs and unpacked data for SetTrustedSequencerURL events raised by the Sequence contract. +type SequenceSetTrustedSequencerURLIterator struct { + Event *SequenceSetTrustedSequencerURL // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceSetTrustedSequencerURLIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceSetTrustedSequencerURL) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceSetTrustedSequencerURL) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceSetTrustedSequencerURLIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceSetTrustedSequencerURLIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceSetTrustedSequencerURL represents a SetTrustedSequencerURL event raised by the Sequence contract. +type SequenceSetTrustedSequencerURL struct { + NewTrustedSequencerURL string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedSequencerURL is a free log retrieval operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Sequence *SequenceFilterer) FilterSetTrustedSequencerURL(opts *bind.FilterOpts) (*SequenceSetTrustedSequencerURLIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "SetTrustedSequencerURL") + if err != nil { + return nil, err + } + return &SequenceSetTrustedSequencerURLIterator{contract: _Sequence.contract, event: "SetTrustedSequencerURL", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedSequencerURL is a free log subscription operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Sequence *SequenceFilterer) WatchSetTrustedSequencerURL(opts *bind.WatchOpts, sink chan<- *SequenceSetTrustedSequencerURL) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "SetTrustedSequencerURL") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceSetTrustedSequencerURL) + if err := _Sequence.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedSequencerURL is a log parse operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Sequence *SequenceFilterer) ParseSetTrustedSequencerURL(log types.Log) (*SequenceSetTrustedSequencerURL, error) { + event := new(SequenceSetTrustedSequencerURL) + if err := _Sequence.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceTransferAdminRoleIterator is returned from FilterTransferAdminRole and is used to iterate over the raw logs and unpacked data for TransferAdminRole events raised by the Sequence contract. +type SequenceTransferAdminRoleIterator struct { + Event *SequenceTransferAdminRole // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceTransferAdminRoleIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceTransferAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceTransferAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceTransferAdminRoleIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceTransferAdminRoleIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceTransferAdminRole represents a TransferAdminRole event raised by the Sequence contract. +type SequenceTransferAdminRole struct { + NewPendingAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransferAdminRole is a free log retrieval operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. +// +// Solidity: event TransferAdminRole(address newPendingAdmin) +func (_Sequence *SequenceFilterer) FilterTransferAdminRole(opts *bind.FilterOpts) (*SequenceTransferAdminRoleIterator, error) { + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "TransferAdminRole") + if err != nil { + return nil, err + } + return &SequenceTransferAdminRoleIterator{contract: _Sequence.contract, event: "TransferAdminRole", logs: logs, sub: sub}, nil +} + +// WatchTransferAdminRole is a free log subscription operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. +// +// Solidity: event TransferAdminRole(address newPendingAdmin) +func (_Sequence *SequenceFilterer) WatchTransferAdminRole(opts *bind.WatchOpts, sink chan<- *SequenceTransferAdminRole) (event.Subscription, error) { + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "TransferAdminRole") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceTransferAdminRole) + if err := _Sequence.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransferAdminRole is a log parse operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. +// +// Solidity: event TransferAdminRole(address newPendingAdmin) +func (_Sequence *SequenceFilterer) ParseTransferAdminRole(log types.Log) (*SequenceTransferAdminRole, error) { + event := new(SequenceTransferAdminRole) + if err := _Sequence.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SequenceVerifyBatchesIterator is returned from FilterVerifyBatches and is used to iterate over the raw logs and unpacked data for VerifyBatches events raised by the Sequence contract. +type SequenceVerifyBatchesIterator struct { + Event *SequenceVerifyBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SequenceVerifyBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SequenceVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SequenceVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SequenceVerifyBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SequenceVerifyBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SequenceVerifyBatches represents a VerifyBatches event raised by the Sequence contract. +type SequenceVerifyBatches struct { + NumBatch uint64 + StateRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVerifyBatches is a free log retrieval operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Sequence *SequenceFilterer) FilterVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*SequenceVerifyBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Sequence.contract.FilterLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return &SequenceVerifyBatchesIterator{contract: _Sequence.contract, event: "VerifyBatches", logs: logs, sub: sub}, nil +} + +// WatchVerifyBatches is a free log subscription operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Sequence *SequenceFilterer) WatchVerifyBatches(opts *bind.WatchOpts, sink chan<- *SequenceVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Sequence.contract.WatchLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SequenceVerifyBatches) + if err := _Sequence.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVerifyBatches is a log parse operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Sequence *SequenceFilterer) ParseVerifyBatches(log types.Log) (*SequenceVerifyBatches, error) { + event := new(SequenceVerifyBatches) + if err := _Sequence.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contract/zk/verify.go b/pkg/contract/zk/verify.go new file mode 100644 index 0000000..80aa08d --- /dev/null +++ b/pkg/contract/zk/verify.go @@ -0,0 +1,5036 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zk + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// LegacyZKEVMStateVariablesPendingState is an auto generated low-level Go binding around an user-defined struct. +type LegacyZKEVMStateVariablesPendingState struct { + Timestamp uint64 + LastVerifiedBatch uint64 + ExitRoot [32]byte + StateRoot [32]byte +} + +// LegacyZKEVMStateVariablesSequencedBatchData is an auto generated low-level Go binding around an user-defined struct. +type LegacyZKEVMStateVariablesSequencedBatchData struct { + AccInputHash [32]byte + SequencedTimestamp uint64 + PreviousLastBatchSequenced uint64 +} + +// VerifyMetaData contains all meta data concerning the Verify contract. +var VerifyMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_pol\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"_bridgeAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlOnlyCanRenounceRolesForSelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AddressDoNotHaveRequiredRole\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllzkEVMSequencedBatchesMustBeVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchFeeOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainIDAlreadyExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitBatchMustMatchCurrentForkID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustSequenceSomeBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyNotEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RollupAddressAlreadyExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RollupMustExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RollupTypeDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RollupTypeObsolete\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderMustBeRollup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpdateNotCompatible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpdateToSameRollupTypeID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rollupAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"rollupCompatibilityID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatchBeforeUpgrade\",\"type\":\"uint64\"}],\"name\":\"AddExistingRollup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupTypeID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"consensusImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"rollupCompatibilityID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"genesis\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"AddNewRollupType\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"ConsolidatePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"rollupTypeID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rollupAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gasTokenAddress\",\"type\":\"address\"}],\"name\":\"CreateNewRollup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupTypeID\",\"type\":\"uint32\"}],\"name\":\"ObsoleteRollupType\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastBatchSequenced\",\"type\":\"uint64\"}],\"name\":\"OnSequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"OverridePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storedStateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provedStateRoot\",\"type\":\"bytes32\"}],\"name\":\"ProveNonDeterministicPendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBatchFee\",\"type\":\"uint256\"}],\"name\":\"SetBatchFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"SetMultiplierBatchFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"SetPendingStateTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"SetTrustedAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"SetTrustedAggregatorTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"SetVerifyBatchTimeTarget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newRollupTypeID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatchBeforeUpgrade\",\"type\":\"uint64\"}],\"name\":\"UpdateRollup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatchesTrustedAggregator\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIPolygonRollupBase\",\"name\":\"rollupAddress\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"verifier\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"genesis\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"rollupCompatibilityID\",\"type\":\"uint8\"}],\"name\":\"addExistingRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"consensusImplementation\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"verifier\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"rollupCompatibilityID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"genesis\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"addNewRollupType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculateRewardPerBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"}],\"name\":\"chainIDToRollupID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"consolidatePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupTypeID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"sequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"networkName\",\"type\":\"string\"}],\"name\":\"createNewRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBatchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getForcedBatchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oldStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"}],\"name\":\"getInputSnarkBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"}],\"name\":\"getLastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"batchNum\",\"type\":\"uint64\"}],\"name\":\"getRollupBatchNumToStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRollupExitRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"batchNum\",\"type\":\"uint64\"}],\"name\":\"getRollupPendingStateTransitions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structLegacyZKEVMStateVariables.PendingState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"batchNum\",\"type\":\"uint64\"}],\"name\":\"getRollupSequencedBatches\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"accInputHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequencedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"previousLastBatchSequenced\",\"type\":\"uint64\"}],\"internalType\":\"structLegacyZKEVMStateVariables.SequencedBatchData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustedAggregator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_pendingStateTimeout\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_trustedAggregatorTimeout\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"timelock\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"emergencyCouncil\",\"type\":\"address\"},{\"internalType\":\"contractPolygonZkEVMExistentEtrog\",\"name\":\"polygonZkEVM\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"zkEVMVerifier\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"zkEVMForkID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"zkEVMChainID\",\"type\":\"uint64\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"isPendingStateConsolidable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAggregationTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDeactivatedEmergencyStateTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiplierBatchFee\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupTypeID\",\"type\":\"uint32\"}],\"name\":\"obsoleteRollupType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newSequencedBatches\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newAccInputHash\",\"type\":\"bytes32\"}],\"name\":\"onSequenceBatches\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"overridePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingStateTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pol\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"proveNonDeterministicPendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rollupAddress\",\"type\":\"address\"}],\"name\":\"rollupAddressToID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"}],\"name\":\"rollupIDToRollupData\",\"outputs\":[{\"internalType\":\"contractIPolygonRollupBase\",\"name\":\"rollupContract\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"verifier\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"lastLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"lastBatchSequenced\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPendingState\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPendingStateConsolidated\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatchBeforeUpgrade\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"rollupTypeID\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"rollupCompatibilityID\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupTypeCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupTypeID\",\"type\":\"uint32\"}],\"name\":\"rollupTypeMap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"consensusImplementation\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"verifier\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"rollupCompatibilityID\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"obsolete\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"genesis\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBatchFee\",\"type\":\"uint256\"}],\"name\":\"setBatchFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"setMultiplierBatchFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"setPendingStateTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"setTrustedAggregatorTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"setVerifyBatchTimeTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSequencedBatches\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalVerifiedBatches\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregatorTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"rollupContract\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"newRollupTypeID\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"upgradeData\",\"type\":\"bytes\"}],\"name\":\"updateRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifyBatchTimeTarget\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupID\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatchesTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// VerifyABI is the input ABI used to generate the binding from. +// Deprecated: Use VerifyMetaData.ABI instead. +var VerifyABI = VerifyMetaData.ABI + +// Verify is an auto generated Go binding around an Ethereum contract. +type Verify struct { + VerifyCaller // Read-only binding to the contract + VerifyTransactor // Write-only binding to the contract + VerifyFilterer // Log filterer for contract events +} + +// VerifyCaller is an auto generated read-only Go binding around an Ethereum contract. +type VerifyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VerifyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type VerifyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VerifyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type VerifyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VerifySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type VerifySession struct { + Contract *Verify // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VerifyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type VerifyCallerSession struct { + Contract *VerifyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// VerifyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type VerifyTransactorSession struct { + Contract *VerifyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VerifyRaw is an auto generated low-level Go binding around an Ethereum contract. +type VerifyRaw struct { + Contract *Verify // Generic contract binding to access the raw methods on +} + +// VerifyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type VerifyCallerRaw struct { + Contract *VerifyCaller // Generic read-only contract binding to access the raw methods on +} + +// VerifyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type VerifyTransactorRaw struct { + Contract *VerifyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewVerify creates a new instance of Verify, bound to a specific deployed contract. +func NewVerify(address common.Address, backend bind.ContractBackend) (*Verify, error) { + contract, err := bindVerify(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Verify{VerifyCaller: VerifyCaller{contract: contract}, VerifyTransactor: VerifyTransactor{contract: contract}, VerifyFilterer: VerifyFilterer{contract: contract}}, nil +} + +// NewVerifyCaller creates a new read-only instance of Verify, bound to a specific deployed contract. +func NewVerifyCaller(address common.Address, caller bind.ContractCaller) (*VerifyCaller, error) { + contract, err := bindVerify(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &VerifyCaller{contract: contract}, nil +} + +// NewVerifyTransactor creates a new write-only instance of Verify, bound to a specific deployed contract. +func NewVerifyTransactor(address common.Address, transactor bind.ContractTransactor) (*VerifyTransactor, error) { + contract, err := bindVerify(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &VerifyTransactor{contract: contract}, nil +} + +// NewVerifyFilterer creates a new log filterer instance of Verify, bound to a specific deployed contract. +func NewVerifyFilterer(address common.Address, filterer bind.ContractFilterer) (*VerifyFilterer, error) { + contract, err := bindVerify(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &VerifyFilterer{contract: contract}, nil +} + +// bindVerify binds a generic wrapper to an already deployed contract. +func bindVerify(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := VerifyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Verify *VerifyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Verify.Contract.VerifyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Verify *VerifyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Verify.Contract.VerifyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Verify *VerifyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Verify.Contract.VerifyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Verify *VerifyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Verify.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Verify *VerifyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Verify.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Verify *VerifyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Verify.Contract.contract.Transact(opts, method, params...) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Verify *VerifyCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Verify *VerifySession) DEFAULTADMINROLE() ([32]byte, error) { + return _Verify.Contract.DEFAULTADMINROLE(&_Verify.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_Verify *VerifyCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _Verify.Contract.DEFAULTADMINROLE(&_Verify.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Verify *VerifyCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "bridgeAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Verify *VerifySession) BridgeAddress() (common.Address, error) { + return _Verify.Contract.BridgeAddress(&_Verify.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Verify *VerifyCallerSession) BridgeAddress() (common.Address, error) { + return _Verify.Contract.BridgeAddress(&_Verify.CallOpts) +} + +// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. +// +// Solidity: function calculateRewardPerBatch() view returns(uint256) +func (_Verify *VerifyCaller) CalculateRewardPerBatch(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "calculateRewardPerBatch") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. +// +// Solidity: function calculateRewardPerBatch() view returns(uint256) +func (_Verify *VerifySession) CalculateRewardPerBatch() (*big.Int, error) { + return _Verify.Contract.CalculateRewardPerBatch(&_Verify.CallOpts) +} + +// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. +// +// Solidity: function calculateRewardPerBatch() view returns(uint256) +func (_Verify *VerifyCallerSession) CalculateRewardPerBatch() (*big.Int, error) { + return _Verify.Contract.CalculateRewardPerBatch(&_Verify.CallOpts) +} + +// ChainIDToRollupID is a free data retrieval call binding the contract method 0x7fb6e76a. +// +// Solidity: function chainIDToRollupID(uint64 chainID) view returns(uint32 rollupID) +func (_Verify *VerifyCaller) ChainIDToRollupID(opts *bind.CallOpts, chainID uint64) (uint32, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "chainIDToRollupID", chainID) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ChainIDToRollupID is a free data retrieval call binding the contract method 0x7fb6e76a. +// +// Solidity: function chainIDToRollupID(uint64 chainID) view returns(uint32 rollupID) +func (_Verify *VerifySession) ChainIDToRollupID(chainID uint64) (uint32, error) { + return _Verify.Contract.ChainIDToRollupID(&_Verify.CallOpts, chainID) +} + +// ChainIDToRollupID is a free data retrieval call binding the contract method 0x7fb6e76a. +// +// Solidity: function chainIDToRollupID(uint64 chainID) view returns(uint32 rollupID) +func (_Verify *VerifyCallerSession) ChainIDToRollupID(chainID uint64) (uint32, error) { + return _Verify.Contract.ChainIDToRollupID(&_Verify.CallOpts, chainID) +} + +// GetBatchFee is a free data retrieval call binding the contract method 0x477fa270. +// +// Solidity: function getBatchFee() view returns(uint256) +func (_Verify *VerifyCaller) GetBatchFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getBatchFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBatchFee is a free data retrieval call binding the contract method 0x477fa270. +// +// Solidity: function getBatchFee() view returns(uint256) +func (_Verify *VerifySession) GetBatchFee() (*big.Int, error) { + return _Verify.Contract.GetBatchFee(&_Verify.CallOpts) +} + +// GetBatchFee is a free data retrieval call binding the contract method 0x477fa270. +// +// Solidity: function getBatchFee() view returns(uint256) +func (_Verify *VerifyCallerSession) GetBatchFee() (*big.Int, error) { + return _Verify.Contract.GetBatchFee(&_Verify.CallOpts) +} + +// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. +// +// Solidity: function getForcedBatchFee() view returns(uint256) +func (_Verify *VerifyCaller) GetForcedBatchFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getForcedBatchFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. +// +// Solidity: function getForcedBatchFee() view returns(uint256) +func (_Verify *VerifySession) GetForcedBatchFee() (*big.Int, error) { + return _Verify.Contract.GetForcedBatchFee(&_Verify.CallOpts) +} + +// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. +// +// Solidity: function getForcedBatchFee() view returns(uint256) +func (_Verify *VerifyCallerSession) GetForcedBatchFee() (*big.Int, error) { + return _Verify.Contract.GetForcedBatchFee(&_Verify.CallOpts) +} + +// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x7975fcfe. +// +// Solidity: function getInputSnarkBytes(uint32 rollupID, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) +func (_Verify *VerifyCaller) GetInputSnarkBytes(opts *bind.CallOpts, rollupID uint32, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getInputSnarkBytes", rollupID, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x7975fcfe. +// +// Solidity: function getInputSnarkBytes(uint32 rollupID, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) +func (_Verify *VerifySession) GetInputSnarkBytes(rollupID uint32, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { + return _Verify.Contract.GetInputSnarkBytes(&_Verify.CallOpts, rollupID, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) +} + +// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x7975fcfe. +// +// Solidity: function getInputSnarkBytes(uint32 rollupID, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) +func (_Verify *VerifyCallerSession) GetInputSnarkBytes(rollupID uint32, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { + return _Verify.Contract.GetInputSnarkBytes(&_Verify.CallOpts, rollupID, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) +} + +// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0x11f6b287. +// +// Solidity: function getLastVerifiedBatch(uint32 rollupID) view returns(uint64) +func (_Verify *VerifyCaller) GetLastVerifiedBatch(opts *bind.CallOpts, rollupID uint32) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getLastVerifiedBatch", rollupID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0x11f6b287. +// +// Solidity: function getLastVerifiedBatch(uint32 rollupID) view returns(uint64) +func (_Verify *VerifySession) GetLastVerifiedBatch(rollupID uint32) (uint64, error) { + return _Verify.Contract.GetLastVerifiedBatch(&_Verify.CallOpts, rollupID) +} + +// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0x11f6b287. +// +// Solidity: function getLastVerifiedBatch(uint32 rollupID) view returns(uint64) +func (_Verify *VerifyCallerSession) GetLastVerifiedBatch(rollupID uint32) (uint64, error) { + return _Verify.Contract.GetLastVerifiedBatch(&_Verify.CallOpts, rollupID) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Verify *VerifyCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Verify *VerifySession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _Verify.Contract.GetRoleAdmin(&_Verify.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_Verify *VerifyCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _Verify.Contract.GetRoleAdmin(&_Verify.CallOpts, role) +} + +// GetRollupBatchNumToStateRoot is a free data retrieval call binding the contract method 0x55a71ee0. +// +// Solidity: function getRollupBatchNumToStateRoot(uint32 rollupID, uint64 batchNum) view returns(bytes32) +func (_Verify *VerifyCaller) GetRollupBatchNumToStateRoot(opts *bind.CallOpts, rollupID uint32, batchNum uint64) ([32]byte, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getRollupBatchNumToStateRoot", rollupID, batchNum) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRollupBatchNumToStateRoot is a free data retrieval call binding the contract method 0x55a71ee0. +// +// Solidity: function getRollupBatchNumToStateRoot(uint32 rollupID, uint64 batchNum) view returns(bytes32) +func (_Verify *VerifySession) GetRollupBatchNumToStateRoot(rollupID uint32, batchNum uint64) ([32]byte, error) { + return _Verify.Contract.GetRollupBatchNumToStateRoot(&_Verify.CallOpts, rollupID, batchNum) +} + +// GetRollupBatchNumToStateRoot is a free data retrieval call binding the contract method 0x55a71ee0. +// +// Solidity: function getRollupBatchNumToStateRoot(uint32 rollupID, uint64 batchNum) view returns(bytes32) +func (_Verify *VerifyCallerSession) GetRollupBatchNumToStateRoot(rollupID uint32, batchNum uint64) ([32]byte, error) { + return _Verify.Contract.GetRollupBatchNumToStateRoot(&_Verify.CallOpts, rollupID, batchNum) +} + +// GetRollupExitRoot is a free data retrieval call binding the contract method 0xa2967d99. +// +// Solidity: function getRollupExitRoot() view returns(bytes32) +func (_Verify *VerifyCaller) GetRollupExitRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getRollupExitRoot") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRollupExitRoot is a free data retrieval call binding the contract method 0xa2967d99. +// +// Solidity: function getRollupExitRoot() view returns(bytes32) +func (_Verify *VerifySession) GetRollupExitRoot() ([32]byte, error) { + return _Verify.Contract.GetRollupExitRoot(&_Verify.CallOpts) +} + +// GetRollupExitRoot is a free data retrieval call binding the contract method 0xa2967d99. +// +// Solidity: function getRollupExitRoot() view returns(bytes32) +func (_Verify *VerifyCallerSession) GetRollupExitRoot() ([32]byte, error) { + return _Verify.Contract.GetRollupExitRoot(&_Verify.CallOpts) +} + +// GetRollupPendingStateTransitions is a free data retrieval call binding the contract method 0xb99d0ad7. +// +// Solidity: function getRollupPendingStateTransitions(uint32 rollupID, uint64 batchNum) view returns((uint64,uint64,bytes32,bytes32)) +func (_Verify *VerifyCaller) GetRollupPendingStateTransitions(opts *bind.CallOpts, rollupID uint32, batchNum uint64) (LegacyZKEVMStateVariablesPendingState, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getRollupPendingStateTransitions", rollupID, batchNum) + + if err != nil { + return *new(LegacyZKEVMStateVariablesPendingState), err + } + + out0 := *abi.ConvertType(out[0], new(LegacyZKEVMStateVariablesPendingState)).(*LegacyZKEVMStateVariablesPendingState) + + return out0, err + +} + +// GetRollupPendingStateTransitions is a free data retrieval call binding the contract method 0xb99d0ad7. +// +// Solidity: function getRollupPendingStateTransitions(uint32 rollupID, uint64 batchNum) view returns((uint64,uint64,bytes32,bytes32)) +func (_Verify *VerifySession) GetRollupPendingStateTransitions(rollupID uint32, batchNum uint64) (LegacyZKEVMStateVariablesPendingState, error) { + return _Verify.Contract.GetRollupPendingStateTransitions(&_Verify.CallOpts, rollupID, batchNum) +} + +// GetRollupPendingStateTransitions is a free data retrieval call binding the contract method 0xb99d0ad7. +// +// Solidity: function getRollupPendingStateTransitions(uint32 rollupID, uint64 batchNum) view returns((uint64,uint64,bytes32,bytes32)) +func (_Verify *VerifyCallerSession) GetRollupPendingStateTransitions(rollupID uint32, batchNum uint64) (LegacyZKEVMStateVariablesPendingState, error) { + return _Verify.Contract.GetRollupPendingStateTransitions(&_Verify.CallOpts, rollupID, batchNum) +} + +// GetRollupSequencedBatches is a free data retrieval call binding the contract method 0x25280169. +// +// Solidity: function getRollupSequencedBatches(uint32 rollupID, uint64 batchNum) view returns((bytes32,uint64,uint64)) +func (_Verify *VerifyCaller) GetRollupSequencedBatches(opts *bind.CallOpts, rollupID uint32, batchNum uint64) (LegacyZKEVMStateVariablesSequencedBatchData, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "getRollupSequencedBatches", rollupID, batchNum) + + if err != nil { + return *new(LegacyZKEVMStateVariablesSequencedBatchData), err + } + + out0 := *abi.ConvertType(out[0], new(LegacyZKEVMStateVariablesSequencedBatchData)).(*LegacyZKEVMStateVariablesSequencedBatchData) + + return out0, err + +} + +// GetRollupSequencedBatches is a free data retrieval call binding the contract method 0x25280169. +// +// Solidity: function getRollupSequencedBatches(uint32 rollupID, uint64 batchNum) view returns((bytes32,uint64,uint64)) +func (_Verify *VerifySession) GetRollupSequencedBatches(rollupID uint32, batchNum uint64) (LegacyZKEVMStateVariablesSequencedBatchData, error) { + return _Verify.Contract.GetRollupSequencedBatches(&_Verify.CallOpts, rollupID, batchNum) +} + +// GetRollupSequencedBatches is a free data retrieval call binding the contract method 0x25280169. +// +// Solidity: function getRollupSequencedBatches(uint32 rollupID, uint64 batchNum) view returns((bytes32,uint64,uint64)) +func (_Verify *VerifyCallerSession) GetRollupSequencedBatches(rollupID uint32, batchNum uint64) (LegacyZKEVMStateVariablesSequencedBatchData, error) { + return _Verify.Contract.GetRollupSequencedBatches(&_Verify.CallOpts, rollupID, batchNum) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Verify *VerifyCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "globalExitRootManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Verify *VerifySession) GlobalExitRootManager() (common.Address, error) { + return _Verify.Contract.GlobalExitRootManager(&_Verify.CallOpts) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Verify *VerifyCallerSession) GlobalExitRootManager() (common.Address, error) { + return _Verify.Contract.GlobalExitRootManager(&_Verify.CallOpts) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Verify *VerifyCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Verify *VerifySession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _Verify.Contract.HasRole(&_Verify.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_Verify *VerifyCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _Verify.Contract.HasRole(&_Verify.CallOpts, role, account) +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Verify *VerifyCaller) IsEmergencyState(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "isEmergencyState") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Verify *VerifySession) IsEmergencyState() (bool, error) { + return _Verify.Contract.IsEmergencyState(&_Verify.CallOpts) +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Verify *VerifyCallerSession) IsEmergencyState() (bool, error) { + return _Verify.Contract.IsEmergencyState(&_Verify.CallOpts) +} + +// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x080b3111. +// +// Solidity: function isPendingStateConsolidable(uint32 rollupID, uint64 pendingStateNum) view returns(bool) +func (_Verify *VerifyCaller) IsPendingStateConsolidable(opts *bind.CallOpts, rollupID uint32, pendingStateNum uint64) (bool, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "isPendingStateConsolidable", rollupID, pendingStateNum) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x080b3111. +// +// Solidity: function isPendingStateConsolidable(uint32 rollupID, uint64 pendingStateNum) view returns(bool) +func (_Verify *VerifySession) IsPendingStateConsolidable(rollupID uint32, pendingStateNum uint64) (bool, error) { + return _Verify.Contract.IsPendingStateConsolidable(&_Verify.CallOpts, rollupID, pendingStateNum) +} + +// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x080b3111. +// +// Solidity: function isPendingStateConsolidable(uint32 rollupID, uint64 pendingStateNum) view returns(bool) +func (_Verify *VerifyCallerSession) IsPendingStateConsolidable(rollupID uint32, pendingStateNum uint64) (bool, error) { + return _Verify.Contract.IsPendingStateConsolidable(&_Verify.CallOpts, rollupID, pendingStateNum) +} + +// LastAggregationTimestamp is a free data retrieval call binding the contract method 0xc1acbc34. +// +// Solidity: function lastAggregationTimestamp() view returns(uint64) +func (_Verify *VerifyCaller) LastAggregationTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "lastAggregationTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastAggregationTimestamp is a free data retrieval call binding the contract method 0xc1acbc34. +// +// Solidity: function lastAggregationTimestamp() view returns(uint64) +func (_Verify *VerifySession) LastAggregationTimestamp() (uint64, error) { + return _Verify.Contract.LastAggregationTimestamp(&_Verify.CallOpts) +} + +// LastAggregationTimestamp is a free data retrieval call binding the contract method 0xc1acbc34. +// +// Solidity: function lastAggregationTimestamp() view returns(uint64) +func (_Verify *VerifyCallerSession) LastAggregationTimestamp() (uint64, error) { + return _Verify.Contract.LastAggregationTimestamp(&_Verify.CallOpts) +} + +// LastDeactivatedEmergencyStateTimestamp is a free data retrieval call binding the contract method 0x30c27dde. +// +// Solidity: function lastDeactivatedEmergencyStateTimestamp() view returns(uint64) +func (_Verify *VerifyCaller) LastDeactivatedEmergencyStateTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "lastDeactivatedEmergencyStateTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastDeactivatedEmergencyStateTimestamp is a free data retrieval call binding the contract method 0x30c27dde. +// +// Solidity: function lastDeactivatedEmergencyStateTimestamp() view returns(uint64) +func (_Verify *VerifySession) LastDeactivatedEmergencyStateTimestamp() (uint64, error) { + return _Verify.Contract.LastDeactivatedEmergencyStateTimestamp(&_Verify.CallOpts) +} + +// LastDeactivatedEmergencyStateTimestamp is a free data retrieval call binding the contract method 0x30c27dde. +// +// Solidity: function lastDeactivatedEmergencyStateTimestamp() view returns(uint64) +func (_Verify *VerifyCallerSession) LastDeactivatedEmergencyStateTimestamp() (uint64, error) { + return _Verify.Contract.LastDeactivatedEmergencyStateTimestamp(&_Verify.CallOpts) +} + +// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. +// +// Solidity: function multiplierBatchFee() view returns(uint16) +func (_Verify *VerifyCaller) MultiplierBatchFee(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "multiplierBatchFee") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. +// +// Solidity: function multiplierBatchFee() view returns(uint16) +func (_Verify *VerifySession) MultiplierBatchFee() (uint16, error) { + return _Verify.Contract.MultiplierBatchFee(&_Verify.CallOpts) +} + +// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. +// +// Solidity: function multiplierBatchFee() view returns(uint16) +func (_Verify *VerifyCallerSession) MultiplierBatchFee() (uint16, error) { + return _Verify.Contract.MultiplierBatchFee(&_Verify.CallOpts) +} + +// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. +// +// Solidity: function pendingStateTimeout() view returns(uint64) +func (_Verify *VerifyCaller) PendingStateTimeout(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "pendingStateTimeout") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. +// +// Solidity: function pendingStateTimeout() view returns(uint64) +func (_Verify *VerifySession) PendingStateTimeout() (uint64, error) { + return _Verify.Contract.PendingStateTimeout(&_Verify.CallOpts) +} + +// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. +// +// Solidity: function pendingStateTimeout() view returns(uint64) +func (_Verify *VerifyCallerSession) PendingStateTimeout() (uint64, error) { + return _Verify.Contract.PendingStateTimeout(&_Verify.CallOpts) +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Verify *VerifyCaller) Pol(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "pol") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Verify *VerifySession) Pol() (common.Address, error) { + return _Verify.Contract.Pol(&_Verify.CallOpts) +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Verify *VerifyCallerSession) Pol() (common.Address, error) { + return _Verify.Contract.Pol(&_Verify.CallOpts) +} + +// RollupAddressToID is a free data retrieval call binding the contract method 0xceee281d. +// +// Solidity: function rollupAddressToID(address rollupAddress) view returns(uint32 rollupID) +func (_Verify *VerifyCaller) RollupAddressToID(opts *bind.CallOpts, rollupAddress common.Address) (uint32, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "rollupAddressToID", rollupAddress) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// RollupAddressToID is a free data retrieval call binding the contract method 0xceee281d. +// +// Solidity: function rollupAddressToID(address rollupAddress) view returns(uint32 rollupID) +func (_Verify *VerifySession) RollupAddressToID(rollupAddress common.Address) (uint32, error) { + return _Verify.Contract.RollupAddressToID(&_Verify.CallOpts, rollupAddress) +} + +// RollupAddressToID is a free data retrieval call binding the contract method 0xceee281d. +// +// Solidity: function rollupAddressToID(address rollupAddress) view returns(uint32 rollupID) +func (_Verify *VerifyCallerSession) RollupAddressToID(rollupAddress common.Address) (uint32, error) { + return _Verify.Contract.RollupAddressToID(&_Verify.CallOpts, rollupAddress) +} + +// RollupCount is a free data retrieval call binding the contract method 0xf4e92675. +// +// Solidity: function rollupCount() view returns(uint32) +func (_Verify *VerifyCaller) RollupCount(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "rollupCount") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// RollupCount is a free data retrieval call binding the contract method 0xf4e92675. +// +// Solidity: function rollupCount() view returns(uint32) +func (_Verify *VerifySession) RollupCount() (uint32, error) { + return _Verify.Contract.RollupCount(&_Verify.CallOpts) +} + +// RollupCount is a free data retrieval call binding the contract method 0xf4e92675. +// +// Solidity: function rollupCount() view returns(uint32) +func (_Verify *VerifyCallerSession) RollupCount() (uint32, error) { + return _Verify.Contract.RollupCount(&_Verify.CallOpts) +} + +// RollupIDToRollupData is a free data retrieval call binding the contract method 0xf9c4c2ae. +// +// Solidity: function rollupIDToRollupData(uint32 rollupID) view returns(address rollupContract, uint64 chainID, address verifier, uint64 forkID, bytes32 lastLocalExitRoot, uint64 lastBatchSequenced, uint64 lastVerifiedBatch, uint64 lastPendingState, uint64 lastPendingStateConsolidated, uint64 lastVerifiedBatchBeforeUpgrade, uint64 rollupTypeID, uint8 rollupCompatibilityID) +func (_Verify *VerifyCaller) RollupIDToRollupData(opts *bind.CallOpts, rollupID uint32) (struct { + RollupContract common.Address + ChainID uint64 + Verifier common.Address + ForkID uint64 + LastLocalExitRoot [32]byte + LastBatchSequenced uint64 + LastVerifiedBatch uint64 + LastPendingState uint64 + LastPendingStateConsolidated uint64 + LastVerifiedBatchBeforeUpgrade uint64 + RollupTypeID uint64 + RollupCompatibilityID uint8 +}, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "rollupIDToRollupData", rollupID) + + outstruct := new(struct { + RollupContract common.Address + ChainID uint64 + Verifier common.Address + ForkID uint64 + LastLocalExitRoot [32]byte + LastBatchSequenced uint64 + LastVerifiedBatch uint64 + LastPendingState uint64 + LastPendingStateConsolidated uint64 + LastVerifiedBatchBeforeUpgrade uint64 + RollupTypeID uint64 + RollupCompatibilityID uint8 + }) + if err != nil { + return *outstruct, err + } + + outstruct.RollupContract = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.ChainID = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.Verifier = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + outstruct.ForkID = *abi.ConvertType(out[3], new(uint64)).(*uint64) + outstruct.LastLocalExitRoot = *abi.ConvertType(out[4], new([32]byte)).(*[32]byte) + outstruct.LastBatchSequenced = *abi.ConvertType(out[5], new(uint64)).(*uint64) + outstruct.LastVerifiedBatch = *abi.ConvertType(out[6], new(uint64)).(*uint64) + outstruct.LastPendingState = *abi.ConvertType(out[7], new(uint64)).(*uint64) + outstruct.LastPendingStateConsolidated = *abi.ConvertType(out[8], new(uint64)).(*uint64) + outstruct.LastVerifiedBatchBeforeUpgrade = *abi.ConvertType(out[9], new(uint64)).(*uint64) + outstruct.RollupTypeID = *abi.ConvertType(out[10], new(uint64)).(*uint64) + outstruct.RollupCompatibilityID = *abi.ConvertType(out[11], new(uint8)).(*uint8) + + return *outstruct, err + +} + +// RollupIDToRollupData is a free data retrieval call binding the contract method 0xf9c4c2ae. +// +// Solidity: function rollupIDToRollupData(uint32 rollupID) view returns(address rollupContract, uint64 chainID, address verifier, uint64 forkID, bytes32 lastLocalExitRoot, uint64 lastBatchSequenced, uint64 lastVerifiedBatch, uint64 lastPendingState, uint64 lastPendingStateConsolidated, uint64 lastVerifiedBatchBeforeUpgrade, uint64 rollupTypeID, uint8 rollupCompatibilityID) +func (_Verify *VerifySession) RollupIDToRollupData(rollupID uint32) (struct { + RollupContract common.Address + ChainID uint64 + Verifier common.Address + ForkID uint64 + LastLocalExitRoot [32]byte + LastBatchSequenced uint64 + LastVerifiedBatch uint64 + LastPendingState uint64 + LastPendingStateConsolidated uint64 + LastVerifiedBatchBeforeUpgrade uint64 + RollupTypeID uint64 + RollupCompatibilityID uint8 +}, error) { + return _Verify.Contract.RollupIDToRollupData(&_Verify.CallOpts, rollupID) +} + +// RollupIDToRollupData is a free data retrieval call binding the contract method 0xf9c4c2ae. +// +// Solidity: function rollupIDToRollupData(uint32 rollupID) view returns(address rollupContract, uint64 chainID, address verifier, uint64 forkID, bytes32 lastLocalExitRoot, uint64 lastBatchSequenced, uint64 lastVerifiedBatch, uint64 lastPendingState, uint64 lastPendingStateConsolidated, uint64 lastVerifiedBatchBeforeUpgrade, uint64 rollupTypeID, uint8 rollupCompatibilityID) +func (_Verify *VerifyCallerSession) RollupIDToRollupData(rollupID uint32) (struct { + RollupContract common.Address + ChainID uint64 + Verifier common.Address + ForkID uint64 + LastLocalExitRoot [32]byte + LastBatchSequenced uint64 + LastVerifiedBatch uint64 + LastPendingState uint64 + LastPendingStateConsolidated uint64 + LastVerifiedBatchBeforeUpgrade uint64 + RollupTypeID uint64 + RollupCompatibilityID uint8 +}, error) { + return _Verify.Contract.RollupIDToRollupData(&_Verify.CallOpts, rollupID) +} + +// RollupTypeCount is a free data retrieval call binding the contract method 0x1796a1ae. +// +// Solidity: function rollupTypeCount() view returns(uint32) +func (_Verify *VerifyCaller) RollupTypeCount(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "rollupTypeCount") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// RollupTypeCount is a free data retrieval call binding the contract method 0x1796a1ae. +// +// Solidity: function rollupTypeCount() view returns(uint32) +func (_Verify *VerifySession) RollupTypeCount() (uint32, error) { + return _Verify.Contract.RollupTypeCount(&_Verify.CallOpts) +} + +// RollupTypeCount is a free data retrieval call binding the contract method 0x1796a1ae. +// +// Solidity: function rollupTypeCount() view returns(uint32) +func (_Verify *VerifyCallerSession) RollupTypeCount() (uint32, error) { + return _Verify.Contract.RollupTypeCount(&_Verify.CallOpts) +} + +// RollupTypeMap is a free data retrieval call binding the contract method 0x65c0504d. +// +// Solidity: function rollupTypeMap(uint32 rollupTypeID) view returns(address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bool obsolete, bytes32 genesis) +func (_Verify *VerifyCaller) RollupTypeMap(opts *bind.CallOpts, rollupTypeID uint32) (struct { + ConsensusImplementation common.Address + Verifier common.Address + ForkID uint64 + RollupCompatibilityID uint8 + Obsolete bool + Genesis [32]byte +}, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "rollupTypeMap", rollupTypeID) + + outstruct := new(struct { + ConsensusImplementation common.Address + Verifier common.Address + ForkID uint64 + RollupCompatibilityID uint8 + Obsolete bool + Genesis [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.ConsensusImplementation = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.Verifier = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + outstruct.ForkID = *abi.ConvertType(out[2], new(uint64)).(*uint64) + outstruct.RollupCompatibilityID = *abi.ConvertType(out[3], new(uint8)).(*uint8) + outstruct.Obsolete = *abi.ConvertType(out[4], new(bool)).(*bool) + outstruct.Genesis = *abi.ConvertType(out[5], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// RollupTypeMap is a free data retrieval call binding the contract method 0x65c0504d. +// +// Solidity: function rollupTypeMap(uint32 rollupTypeID) view returns(address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bool obsolete, bytes32 genesis) +func (_Verify *VerifySession) RollupTypeMap(rollupTypeID uint32) (struct { + ConsensusImplementation common.Address + Verifier common.Address + ForkID uint64 + RollupCompatibilityID uint8 + Obsolete bool + Genesis [32]byte +}, error) { + return _Verify.Contract.RollupTypeMap(&_Verify.CallOpts, rollupTypeID) +} + +// RollupTypeMap is a free data retrieval call binding the contract method 0x65c0504d. +// +// Solidity: function rollupTypeMap(uint32 rollupTypeID) view returns(address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bool obsolete, bytes32 genesis) +func (_Verify *VerifyCallerSession) RollupTypeMap(rollupTypeID uint32) (struct { + ConsensusImplementation common.Address + Verifier common.Address + ForkID uint64 + RollupCompatibilityID uint8 + Obsolete bool + Genesis [32]byte +}, error) { + return _Verify.Contract.RollupTypeMap(&_Verify.CallOpts, rollupTypeID) +} + +// TotalSequencedBatches is a free data retrieval call binding the contract method 0x066ec012. +// +// Solidity: function totalSequencedBatches() view returns(uint64) +func (_Verify *VerifyCaller) TotalSequencedBatches(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "totalSequencedBatches") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// TotalSequencedBatches is a free data retrieval call binding the contract method 0x066ec012. +// +// Solidity: function totalSequencedBatches() view returns(uint64) +func (_Verify *VerifySession) TotalSequencedBatches() (uint64, error) { + return _Verify.Contract.TotalSequencedBatches(&_Verify.CallOpts) +} + +// TotalSequencedBatches is a free data retrieval call binding the contract method 0x066ec012. +// +// Solidity: function totalSequencedBatches() view returns(uint64) +func (_Verify *VerifyCallerSession) TotalSequencedBatches() (uint64, error) { + return _Verify.Contract.TotalSequencedBatches(&_Verify.CallOpts) +} + +// TotalVerifiedBatches is a free data retrieval call binding the contract method 0xdde0ff77. +// +// Solidity: function totalVerifiedBatches() view returns(uint64) +func (_Verify *VerifyCaller) TotalVerifiedBatches(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "totalVerifiedBatches") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// TotalVerifiedBatches is a free data retrieval call binding the contract method 0xdde0ff77. +// +// Solidity: function totalVerifiedBatches() view returns(uint64) +func (_Verify *VerifySession) TotalVerifiedBatches() (uint64, error) { + return _Verify.Contract.TotalVerifiedBatches(&_Verify.CallOpts) +} + +// TotalVerifiedBatches is a free data retrieval call binding the contract method 0xdde0ff77. +// +// Solidity: function totalVerifiedBatches() view returns(uint64) +func (_Verify *VerifyCallerSession) TotalVerifiedBatches() (uint64, error) { + return _Verify.Contract.TotalVerifiedBatches(&_Verify.CallOpts) +} + +// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. +// +// Solidity: function trustedAggregatorTimeout() view returns(uint64) +func (_Verify *VerifyCaller) TrustedAggregatorTimeout(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "trustedAggregatorTimeout") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. +// +// Solidity: function trustedAggregatorTimeout() view returns(uint64) +func (_Verify *VerifySession) TrustedAggregatorTimeout() (uint64, error) { + return _Verify.Contract.TrustedAggregatorTimeout(&_Verify.CallOpts) +} + +// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. +// +// Solidity: function trustedAggregatorTimeout() view returns(uint64) +func (_Verify *VerifyCallerSession) TrustedAggregatorTimeout() (uint64, error) { + return _Verify.Contract.TrustedAggregatorTimeout(&_Verify.CallOpts) +} + +// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. +// +// Solidity: function verifyBatchTimeTarget() view returns(uint64) +func (_Verify *VerifyCaller) VerifyBatchTimeTarget(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Verify.contract.Call(opts, &out, "verifyBatchTimeTarget") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. +// +// Solidity: function verifyBatchTimeTarget() view returns(uint64) +func (_Verify *VerifySession) VerifyBatchTimeTarget() (uint64, error) { + return _Verify.Contract.VerifyBatchTimeTarget(&_Verify.CallOpts) +} + +// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. +// +// Solidity: function verifyBatchTimeTarget() view returns(uint64) +func (_Verify *VerifyCallerSession) VerifyBatchTimeTarget() (uint64, error) { + return _Verify.Contract.VerifyBatchTimeTarget(&_Verify.CallOpts) +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. +// +// Solidity: function activateEmergencyState() returns() +func (_Verify *VerifyTransactor) ActivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "activateEmergencyState") +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. +// +// Solidity: function activateEmergencyState() returns() +func (_Verify *VerifySession) ActivateEmergencyState() (*types.Transaction, error) { + return _Verify.Contract.ActivateEmergencyState(&_Verify.TransactOpts) +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. +// +// Solidity: function activateEmergencyState() returns() +func (_Verify *VerifyTransactorSession) ActivateEmergencyState() (*types.Transaction, error) { + return _Verify.Contract.ActivateEmergencyState(&_Verify.TransactOpts) +} + +// AddExistingRollup is a paid mutator transaction binding the contract method 0xe0bfd3d2. +// +// Solidity: function addExistingRollup(address rollupAddress, address verifier, uint64 forkID, uint64 chainID, bytes32 genesis, uint8 rollupCompatibilityID) returns() +func (_Verify *VerifyTransactor) AddExistingRollup(opts *bind.TransactOpts, rollupAddress common.Address, verifier common.Address, forkID uint64, chainID uint64, genesis [32]byte, rollupCompatibilityID uint8) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "addExistingRollup", rollupAddress, verifier, forkID, chainID, genesis, rollupCompatibilityID) +} + +// AddExistingRollup is a paid mutator transaction binding the contract method 0xe0bfd3d2. +// +// Solidity: function addExistingRollup(address rollupAddress, address verifier, uint64 forkID, uint64 chainID, bytes32 genesis, uint8 rollupCompatibilityID) returns() +func (_Verify *VerifySession) AddExistingRollup(rollupAddress common.Address, verifier common.Address, forkID uint64, chainID uint64, genesis [32]byte, rollupCompatibilityID uint8) (*types.Transaction, error) { + return _Verify.Contract.AddExistingRollup(&_Verify.TransactOpts, rollupAddress, verifier, forkID, chainID, genesis, rollupCompatibilityID) +} + +// AddExistingRollup is a paid mutator transaction binding the contract method 0xe0bfd3d2. +// +// Solidity: function addExistingRollup(address rollupAddress, address verifier, uint64 forkID, uint64 chainID, bytes32 genesis, uint8 rollupCompatibilityID) returns() +func (_Verify *VerifyTransactorSession) AddExistingRollup(rollupAddress common.Address, verifier common.Address, forkID uint64, chainID uint64, genesis [32]byte, rollupCompatibilityID uint8) (*types.Transaction, error) { + return _Verify.Contract.AddExistingRollup(&_Verify.TransactOpts, rollupAddress, verifier, forkID, chainID, genesis, rollupCompatibilityID) +} + +// AddNewRollupType is a paid mutator transaction binding the contract method 0xf34eb8eb. +// +// Solidity: function addNewRollupType(address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bytes32 genesis, string description) returns() +func (_Verify *VerifyTransactor) AddNewRollupType(opts *bind.TransactOpts, consensusImplementation common.Address, verifier common.Address, forkID uint64, rollupCompatibilityID uint8, genesis [32]byte, description string) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "addNewRollupType", consensusImplementation, verifier, forkID, rollupCompatibilityID, genesis, description) +} + +// AddNewRollupType is a paid mutator transaction binding the contract method 0xf34eb8eb. +// +// Solidity: function addNewRollupType(address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bytes32 genesis, string description) returns() +func (_Verify *VerifySession) AddNewRollupType(consensusImplementation common.Address, verifier common.Address, forkID uint64, rollupCompatibilityID uint8, genesis [32]byte, description string) (*types.Transaction, error) { + return _Verify.Contract.AddNewRollupType(&_Verify.TransactOpts, consensusImplementation, verifier, forkID, rollupCompatibilityID, genesis, description) +} + +// AddNewRollupType is a paid mutator transaction binding the contract method 0xf34eb8eb. +// +// Solidity: function addNewRollupType(address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bytes32 genesis, string description) returns() +func (_Verify *VerifyTransactorSession) AddNewRollupType(consensusImplementation common.Address, verifier common.Address, forkID uint64, rollupCompatibilityID uint8, genesis [32]byte, description string) (*types.Transaction, error) { + return _Verify.Contract.AddNewRollupType(&_Verify.TransactOpts, consensusImplementation, verifier, forkID, rollupCompatibilityID, genesis, description) +} + +// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x1608859c. +// +// Solidity: function consolidatePendingState(uint32 rollupID, uint64 pendingStateNum) returns() +func (_Verify *VerifyTransactor) ConsolidatePendingState(opts *bind.TransactOpts, rollupID uint32, pendingStateNum uint64) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "consolidatePendingState", rollupID, pendingStateNum) +} + +// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x1608859c. +// +// Solidity: function consolidatePendingState(uint32 rollupID, uint64 pendingStateNum) returns() +func (_Verify *VerifySession) ConsolidatePendingState(rollupID uint32, pendingStateNum uint64) (*types.Transaction, error) { + return _Verify.Contract.ConsolidatePendingState(&_Verify.TransactOpts, rollupID, pendingStateNum) +} + +// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x1608859c. +// +// Solidity: function consolidatePendingState(uint32 rollupID, uint64 pendingStateNum) returns() +func (_Verify *VerifyTransactorSession) ConsolidatePendingState(rollupID uint32, pendingStateNum uint64) (*types.Transaction, error) { + return _Verify.Contract.ConsolidatePendingState(&_Verify.TransactOpts, rollupID, pendingStateNum) +} + +// CreateNewRollup is a paid mutator transaction binding the contract method 0x727885e9. +// +// Solidity: function createNewRollup(uint32 rollupTypeID, uint64 chainID, address admin, address sequencer, address gasTokenAddress, string sequencerURL, string networkName) returns() +func (_Verify *VerifyTransactor) CreateNewRollup(opts *bind.TransactOpts, rollupTypeID uint32, chainID uint64, admin common.Address, sequencer common.Address, gasTokenAddress common.Address, sequencerURL string, networkName string) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "createNewRollup", rollupTypeID, chainID, admin, sequencer, gasTokenAddress, sequencerURL, networkName) +} + +// CreateNewRollup is a paid mutator transaction binding the contract method 0x727885e9. +// +// Solidity: function createNewRollup(uint32 rollupTypeID, uint64 chainID, address admin, address sequencer, address gasTokenAddress, string sequencerURL, string networkName) returns() +func (_Verify *VerifySession) CreateNewRollup(rollupTypeID uint32, chainID uint64, admin common.Address, sequencer common.Address, gasTokenAddress common.Address, sequencerURL string, networkName string) (*types.Transaction, error) { + return _Verify.Contract.CreateNewRollup(&_Verify.TransactOpts, rollupTypeID, chainID, admin, sequencer, gasTokenAddress, sequencerURL, networkName) +} + +// CreateNewRollup is a paid mutator transaction binding the contract method 0x727885e9. +// +// Solidity: function createNewRollup(uint32 rollupTypeID, uint64 chainID, address admin, address sequencer, address gasTokenAddress, string sequencerURL, string networkName) returns() +func (_Verify *VerifyTransactorSession) CreateNewRollup(rollupTypeID uint32, chainID uint64, admin common.Address, sequencer common.Address, gasTokenAddress common.Address, sequencerURL string, networkName string) (*types.Transaction, error) { + return _Verify.Contract.CreateNewRollup(&_Verify.TransactOpts, rollupTypeID, chainID, admin, sequencer, gasTokenAddress, sequencerURL, networkName) +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Verify *VerifyTransactor) DeactivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "deactivateEmergencyState") +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Verify *VerifySession) DeactivateEmergencyState() (*types.Transaction, error) { + return _Verify.Contract.DeactivateEmergencyState(&_Verify.TransactOpts) +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Verify *VerifyTransactorSession) DeactivateEmergencyState() (*types.Transaction, error) { + return _Verify.Contract.DeactivateEmergencyState(&_Verify.TransactOpts) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Verify *VerifyTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Verify *VerifySession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.Contract.GrantRole(&_Verify.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_Verify *VerifyTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.Contract.GrantRole(&_Verify.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0x0645af09. +// +// Solidity: function initialize(address trustedAggregator, uint64 _pendingStateTimeout, uint64 _trustedAggregatorTimeout, address admin, address timelock, address emergencyCouncil, address polygonZkEVM, address zkEVMVerifier, uint64 zkEVMForkID, uint64 zkEVMChainID) returns() +func (_Verify *VerifyTransactor) Initialize(opts *bind.TransactOpts, trustedAggregator common.Address, _pendingStateTimeout uint64, _trustedAggregatorTimeout uint64, admin common.Address, timelock common.Address, emergencyCouncil common.Address, polygonZkEVM common.Address, zkEVMVerifier common.Address, zkEVMForkID uint64, zkEVMChainID uint64) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "initialize", trustedAggregator, _pendingStateTimeout, _trustedAggregatorTimeout, admin, timelock, emergencyCouncil, polygonZkEVM, zkEVMVerifier, zkEVMForkID, zkEVMChainID) +} + +// Initialize is a paid mutator transaction binding the contract method 0x0645af09. +// +// Solidity: function initialize(address trustedAggregator, uint64 _pendingStateTimeout, uint64 _trustedAggregatorTimeout, address admin, address timelock, address emergencyCouncil, address polygonZkEVM, address zkEVMVerifier, uint64 zkEVMForkID, uint64 zkEVMChainID) returns() +func (_Verify *VerifySession) Initialize(trustedAggregator common.Address, _pendingStateTimeout uint64, _trustedAggregatorTimeout uint64, admin common.Address, timelock common.Address, emergencyCouncil common.Address, polygonZkEVM common.Address, zkEVMVerifier common.Address, zkEVMForkID uint64, zkEVMChainID uint64) (*types.Transaction, error) { + return _Verify.Contract.Initialize(&_Verify.TransactOpts, trustedAggregator, _pendingStateTimeout, _trustedAggregatorTimeout, admin, timelock, emergencyCouncil, polygonZkEVM, zkEVMVerifier, zkEVMForkID, zkEVMChainID) +} + +// Initialize is a paid mutator transaction binding the contract method 0x0645af09. +// +// Solidity: function initialize(address trustedAggregator, uint64 _pendingStateTimeout, uint64 _trustedAggregatorTimeout, address admin, address timelock, address emergencyCouncil, address polygonZkEVM, address zkEVMVerifier, uint64 zkEVMForkID, uint64 zkEVMChainID) returns() +func (_Verify *VerifyTransactorSession) Initialize(trustedAggregator common.Address, _pendingStateTimeout uint64, _trustedAggregatorTimeout uint64, admin common.Address, timelock common.Address, emergencyCouncil common.Address, polygonZkEVM common.Address, zkEVMVerifier common.Address, zkEVMForkID uint64, zkEVMChainID uint64) (*types.Transaction, error) { + return _Verify.Contract.Initialize(&_Verify.TransactOpts, trustedAggregator, _pendingStateTimeout, _trustedAggregatorTimeout, admin, timelock, emergencyCouncil, polygonZkEVM, zkEVMVerifier, zkEVMForkID, zkEVMChainID) +} + +// ObsoleteRollupType is a paid mutator transaction binding the contract method 0x7222020f. +// +// Solidity: function obsoleteRollupType(uint32 rollupTypeID) returns() +func (_Verify *VerifyTransactor) ObsoleteRollupType(opts *bind.TransactOpts, rollupTypeID uint32) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "obsoleteRollupType", rollupTypeID) +} + +// ObsoleteRollupType is a paid mutator transaction binding the contract method 0x7222020f. +// +// Solidity: function obsoleteRollupType(uint32 rollupTypeID) returns() +func (_Verify *VerifySession) ObsoleteRollupType(rollupTypeID uint32) (*types.Transaction, error) { + return _Verify.Contract.ObsoleteRollupType(&_Verify.TransactOpts, rollupTypeID) +} + +// ObsoleteRollupType is a paid mutator transaction binding the contract method 0x7222020f. +// +// Solidity: function obsoleteRollupType(uint32 rollupTypeID) returns() +func (_Verify *VerifyTransactorSession) ObsoleteRollupType(rollupTypeID uint32) (*types.Transaction, error) { + return _Verify.Contract.ObsoleteRollupType(&_Verify.TransactOpts, rollupTypeID) +} + +// OnSequenceBatches is a paid mutator transaction binding the contract method 0x9a908e73. +// +// Solidity: function onSequenceBatches(uint64 newSequencedBatches, bytes32 newAccInputHash) returns(uint64) +func (_Verify *VerifyTransactor) OnSequenceBatches(opts *bind.TransactOpts, newSequencedBatches uint64, newAccInputHash [32]byte) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "onSequenceBatches", newSequencedBatches, newAccInputHash) +} + +// OnSequenceBatches is a paid mutator transaction binding the contract method 0x9a908e73. +// +// Solidity: function onSequenceBatches(uint64 newSequencedBatches, bytes32 newAccInputHash) returns(uint64) +func (_Verify *VerifySession) OnSequenceBatches(newSequencedBatches uint64, newAccInputHash [32]byte) (*types.Transaction, error) { + return _Verify.Contract.OnSequenceBatches(&_Verify.TransactOpts, newSequencedBatches, newAccInputHash) +} + +// OnSequenceBatches is a paid mutator transaction binding the contract method 0x9a908e73. +// +// Solidity: function onSequenceBatches(uint64 newSequencedBatches, bytes32 newAccInputHash) returns(uint64) +func (_Verify *VerifyTransactorSession) OnSequenceBatches(newSequencedBatches uint64, newAccInputHash [32]byte) (*types.Transaction, error) { + return _Verify.Contract.OnSequenceBatches(&_Verify.TransactOpts, newSequencedBatches, newAccInputHash) +} + +// OverridePendingState is a paid mutator transaction binding the contract method 0x12b86e19. +// +// Solidity: function overridePendingState(uint32 rollupID, uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() +func (_Verify *VerifyTransactor) OverridePendingState(opts *bind.TransactOpts, rollupID uint32, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "overridePendingState", rollupID, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) +} + +// OverridePendingState is a paid mutator transaction binding the contract method 0x12b86e19. +// +// Solidity: function overridePendingState(uint32 rollupID, uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() +func (_Verify *VerifySession) OverridePendingState(rollupID uint32, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.OverridePendingState(&_Verify.TransactOpts, rollupID, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) +} + +// OverridePendingState is a paid mutator transaction binding the contract method 0x12b86e19. +// +// Solidity: function overridePendingState(uint32 rollupID, uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() +func (_Verify *VerifyTransactorSession) OverridePendingState(rollupID uint32, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.OverridePendingState(&_Verify.TransactOpts, rollupID, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) +} + +// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x8bd4f071. +// +// Solidity: function proveNonDeterministicPendingState(uint32 rollupID, uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() +func (_Verify *VerifyTransactor) ProveNonDeterministicPendingState(opts *bind.TransactOpts, rollupID uint32, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "proveNonDeterministicPendingState", rollupID, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) +} + +// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x8bd4f071. +// +// Solidity: function proveNonDeterministicPendingState(uint32 rollupID, uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() +func (_Verify *VerifySession) ProveNonDeterministicPendingState(rollupID uint32, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.ProveNonDeterministicPendingState(&_Verify.TransactOpts, rollupID, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) +} + +// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x8bd4f071. +// +// Solidity: function proveNonDeterministicPendingState(uint32 rollupID, uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() +func (_Verify *VerifyTransactorSession) ProveNonDeterministicPendingState(rollupID uint32, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.ProveNonDeterministicPendingState(&_Verify.TransactOpts, rollupID, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address account) returns() +func (_Verify *VerifyTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "renounceRole", role, account) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address account) returns() +func (_Verify *VerifySession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.Contract.RenounceRole(&_Verify.TransactOpts, role, account) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address account) returns() +func (_Verify *VerifyTransactorSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.Contract.RenounceRole(&_Verify.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Verify *VerifyTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Verify *VerifySession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.Contract.RevokeRole(&_Verify.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_Verify *VerifyTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _Verify.Contract.RevokeRole(&_Verify.TransactOpts, role, account) +} + +// SetBatchFee is a paid mutator transaction binding the contract method 0xd5073f6f. +// +// Solidity: function setBatchFee(uint256 newBatchFee) returns() +func (_Verify *VerifyTransactor) SetBatchFee(opts *bind.TransactOpts, newBatchFee *big.Int) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "setBatchFee", newBatchFee) +} + +// SetBatchFee is a paid mutator transaction binding the contract method 0xd5073f6f. +// +// Solidity: function setBatchFee(uint256 newBatchFee) returns() +func (_Verify *VerifySession) SetBatchFee(newBatchFee *big.Int) (*types.Transaction, error) { + return _Verify.Contract.SetBatchFee(&_Verify.TransactOpts, newBatchFee) +} + +// SetBatchFee is a paid mutator transaction binding the contract method 0xd5073f6f. +// +// Solidity: function setBatchFee(uint256 newBatchFee) returns() +func (_Verify *VerifyTransactorSession) SetBatchFee(newBatchFee *big.Int) (*types.Transaction, error) { + return _Verify.Contract.SetBatchFee(&_Verify.TransactOpts, newBatchFee) +} + +// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. +// +// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() +func (_Verify *VerifyTransactor) SetMultiplierBatchFee(opts *bind.TransactOpts, newMultiplierBatchFee uint16) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "setMultiplierBatchFee", newMultiplierBatchFee) +} + +// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. +// +// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() +func (_Verify *VerifySession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { + return _Verify.Contract.SetMultiplierBatchFee(&_Verify.TransactOpts, newMultiplierBatchFee) +} + +// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. +// +// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() +func (_Verify *VerifyTransactorSession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { + return _Verify.Contract.SetMultiplierBatchFee(&_Verify.TransactOpts, newMultiplierBatchFee) +} + +// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. +// +// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() +func (_Verify *VerifyTransactor) SetPendingStateTimeout(opts *bind.TransactOpts, newPendingStateTimeout uint64) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "setPendingStateTimeout", newPendingStateTimeout) +} + +// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. +// +// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() +func (_Verify *VerifySession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { + return _Verify.Contract.SetPendingStateTimeout(&_Verify.TransactOpts, newPendingStateTimeout) +} + +// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. +// +// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() +func (_Verify *VerifyTransactorSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { + return _Verify.Contract.SetPendingStateTimeout(&_Verify.TransactOpts, newPendingStateTimeout) +} + +// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. +// +// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() +func (_Verify *VerifyTransactor) SetTrustedAggregatorTimeout(opts *bind.TransactOpts, newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "setTrustedAggregatorTimeout", newTrustedAggregatorTimeout) +} + +// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. +// +// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() +func (_Verify *VerifySession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { + return _Verify.Contract.SetTrustedAggregatorTimeout(&_Verify.TransactOpts, newTrustedAggregatorTimeout) +} + +// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. +// +// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() +func (_Verify *VerifyTransactorSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { + return _Verify.Contract.SetTrustedAggregatorTimeout(&_Verify.TransactOpts, newTrustedAggregatorTimeout) +} + +// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. +// +// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() +func (_Verify *VerifyTransactor) SetVerifyBatchTimeTarget(opts *bind.TransactOpts, newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "setVerifyBatchTimeTarget", newVerifyBatchTimeTarget) +} + +// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. +// +// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() +func (_Verify *VerifySession) SetVerifyBatchTimeTarget(newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { + return _Verify.Contract.SetVerifyBatchTimeTarget(&_Verify.TransactOpts, newVerifyBatchTimeTarget) +} + +// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. +// +// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() +func (_Verify *VerifyTransactorSession) SetVerifyBatchTimeTarget(newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { + return _Verify.Contract.SetVerifyBatchTimeTarget(&_Verify.TransactOpts, newVerifyBatchTimeTarget) +} + +// UpdateRollup is a paid mutator transaction binding the contract method 0xc4c928c2. +// +// Solidity: function updateRollup(address rollupContract, uint32 newRollupTypeID, bytes upgradeData) returns() +func (_Verify *VerifyTransactor) UpdateRollup(opts *bind.TransactOpts, rollupContract common.Address, newRollupTypeID uint32, upgradeData []byte) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "updateRollup", rollupContract, newRollupTypeID, upgradeData) +} + +// UpdateRollup is a paid mutator transaction binding the contract method 0xc4c928c2. +// +// Solidity: function updateRollup(address rollupContract, uint32 newRollupTypeID, bytes upgradeData) returns() +func (_Verify *VerifySession) UpdateRollup(rollupContract common.Address, newRollupTypeID uint32, upgradeData []byte) (*types.Transaction, error) { + return _Verify.Contract.UpdateRollup(&_Verify.TransactOpts, rollupContract, newRollupTypeID, upgradeData) +} + +// UpdateRollup is a paid mutator transaction binding the contract method 0xc4c928c2. +// +// Solidity: function updateRollup(address rollupContract, uint32 newRollupTypeID, bytes upgradeData) returns() +func (_Verify *VerifyTransactorSession) UpdateRollup(rollupContract common.Address, newRollupTypeID uint32, upgradeData []byte) (*types.Transaction, error) { + return _Verify.Contract.UpdateRollup(&_Verify.TransactOpts, rollupContract, newRollupTypeID, upgradeData) +} + +// VerifyBatches is a paid mutator transaction binding the contract method 0x87c20c01. +// +// Solidity: function verifyBatches(uint32 rollupID, uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, address beneficiary, bytes32[24] proof) returns() +func (_Verify *VerifyTransactor) VerifyBatches(opts *bind.TransactOpts, rollupID uint32, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, beneficiary common.Address, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "verifyBatches", rollupID, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, beneficiary, proof) +} + +// VerifyBatches is a paid mutator transaction binding the contract method 0x87c20c01. +// +// Solidity: function verifyBatches(uint32 rollupID, uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, address beneficiary, bytes32[24] proof) returns() +func (_Verify *VerifySession) VerifyBatches(rollupID uint32, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, beneficiary common.Address, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.VerifyBatches(&_Verify.TransactOpts, rollupID, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, beneficiary, proof) +} + +// VerifyBatches is a paid mutator transaction binding the contract method 0x87c20c01. +// +// Solidity: function verifyBatches(uint32 rollupID, uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, address beneficiary, bytes32[24] proof) returns() +func (_Verify *VerifyTransactorSession) VerifyBatches(rollupID uint32, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, beneficiary common.Address, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.VerifyBatches(&_Verify.TransactOpts, rollupID, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, beneficiary, proof) +} + +// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x1489ed10. +// +// Solidity: function verifyBatchesTrustedAggregator(uint32 rollupID, uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, address beneficiary, bytes32[24] proof) returns() +func (_Verify *VerifyTransactor) VerifyBatchesTrustedAggregator(opts *bind.TransactOpts, rollupID uint32, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, beneficiary common.Address, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.contract.Transact(opts, "verifyBatchesTrustedAggregator", rollupID, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, beneficiary, proof) +} + +// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x1489ed10. +// +// Solidity: function verifyBatchesTrustedAggregator(uint32 rollupID, uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, address beneficiary, bytes32[24] proof) returns() +func (_Verify *VerifySession) VerifyBatchesTrustedAggregator(rollupID uint32, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, beneficiary common.Address, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.VerifyBatchesTrustedAggregator(&_Verify.TransactOpts, rollupID, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, beneficiary, proof) +} + +// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x1489ed10. +// +// Solidity: function verifyBatchesTrustedAggregator(uint32 rollupID, uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, address beneficiary, bytes32[24] proof) returns() +func (_Verify *VerifyTransactorSession) VerifyBatchesTrustedAggregator(rollupID uint32, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, beneficiary common.Address, proof [24][32]byte) (*types.Transaction, error) { + return _Verify.Contract.VerifyBatchesTrustedAggregator(&_Verify.TransactOpts, rollupID, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, beneficiary, proof) +} + +// VerifyAddExistingRollupIterator is returned from FilterAddExistingRollup and is used to iterate over the raw logs and unpacked data for AddExistingRollup events raised by the Verify contract. +type VerifyAddExistingRollupIterator struct { + Event *VerifyAddExistingRollup // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyAddExistingRollupIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyAddExistingRollup) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyAddExistingRollup) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyAddExistingRollupIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyAddExistingRollupIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyAddExistingRollup represents a AddExistingRollup event raised by the Verify contract. +type VerifyAddExistingRollup struct { + RollupID uint32 + ForkID uint64 + RollupAddress common.Address + ChainID uint64 + RollupCompatibilityID uint8 + LastVerifiedBatchBeforeUpgrade uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddExistingRollup is a free log retrieval operation binding the contract event 0xadfc7d56f7e39b08b321534f14bfb135ad27698f7d2f5ad0edc2356ea9a3f850. +// +// Solidity: event AddExistingRollup(uint32 indexed rollupID, uint64 forkID, address rollupAddress, uint64 chainID, uint8 rollupCompatibilityID, uint64 lastVerifiedBatchBeforeUpgrade) +func (_Verify *VerifyFilterer) FilterAddExistingRollup(opts *bind.FilterOpts, rollupID []uint32) (*VerifyAddExistingRollupIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "AddExistingRollup", rollupIDRule) + if err != nil { + return nil, err + } + return &VerifyAddExistingRollupIterator{contract: _Verify.contract, event: "AddExistingRollup", logs: logs, sub: sub}, nil +} + +// WatchAddExistingRollup is a free log subscription operation binding the contract event 0xadfc7d56f7e39b08b321534f14bfb135ad27698f7d2f5ad0edc2356ea9a3f850. +// +// Solidity: event AddExistingRollup(uint32 indexed rollupID, uint64 forkID, address rollupAddress, uint64 chainID, uint8 rollupCompatibilityID, uint64 lastVerifiedBatchBeforeUpgrade) +func (_Verify *VerifyFilterer) WatchAddExistingRollup(opts *bind.WatchOpts, sink chan<- *VerifyAddExistingRollup, rollupID []uint32) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "AddExistingRollup", rollupIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyAddExistingRollup) + if err := _Verify.contract.UnpackLog(event, "AddExistingRollup", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddExistingRollup is a log parse operation binding the contract event 0xadfc7d56f7e39b08b321534f14bfb135ad27698f7d2f5ad0edc2356ea9a3f850. +// +// Solidity: event AddExistingRollup(uint32 indexed rollupID, uint64 forkID, address rollupAddress, uint64 chainID, uint8 rollupCompatibilityID, uint64 lastVerifiedBatchBeforeUpgrade) +func (_Verify *VerifyFilterer) ParseAddExistingRollup(log types.Log) (*VerifyAddExistingRollup, error) { + event := new(VerifyAddExistingRollup) + if err := _Verify.contract.UnpackLog(event, "AddExistingRollup", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyAddNewRollupTypeIterator is returned from FilterAddNewRollupType and is used to iterate over the raw logs and unpacked data for AddNewRollupType events raised by the Verify contract. +type VerifyAddNewRollupTypeIterator struct { + Event *VerifyAddNewRollupType // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyAddNewRollupTypeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyAddNewRollupType) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyAddNewRollupType) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyAddNewRollupTypeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyAddNewRollupTypeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyAddNewRollupType represents a AddNewRollupType event raised by the Verify contract. +type VerifyAddNewRollupType struct { + RollupTypeID uint32 + ConsensusImplementation common.Address + Verifier common.Address + ForkID uint64 + RollupCompatibilityID uint8 + Genesis [32]byte + Description string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddNewRollupType is a free log retrieval operation binding the contract event 0xa2970448b3bd66ba7e524e7b2a5b9cf94fa29e32488fb942afdfe70dd4b77b52. +// +// Solidity: event AddNewRollupType(uint32 indexed rollupTypeID, address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bytes32 genesis, string description) +func (_Verify *VerifyFilterer) FilterAddNewRollupType(opts *bind.FilterOpts, rollupTypeID []uint32) (*VerifyAddNewRollupTypeIterator, error) { + + var rollupTypeIDRule []interface{} + for _, rollupTypeIDItem := range rollupTypeID { + rollupTypeIDRule = append(rollupTypeIDRule, rollupTypeIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "AddNewRollupType", rollupTypeIDRule) + if err != nil { + return nil, err + } + return &VerifyAddNewRollupTypeIterator{contract: _Verify.contract, event: "AddNewRollupType", logs: logs, sub: sub}, nil +} + +// WatchAddNewRollupType is a free log subscription operation binding the contract event 0xa2970448b3bd66ba7e524e7b2a5b9cf94fa29e32488fb942afdfe70dd4b77b52. +// +// Solidity: event AddNewRollupType(uint32 indexed rollupTypeID, address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bytes32 genesis, string description) +func (_Verify *VerifyFilterer) WatchAddNewRollupType(opts *bind.WatchOpts, sink chan<- *VerifyAddNewRollupType, rollupTypeID []uint32) (event.Subscription, error) { + + var rollupTypeIDRule []interface{} + for _, rollupTypeIDItem := range rollupTypeID { + rollupTypeIDRule = append(rollupTypeIDRule, rollupTypeIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "AddNewRollupType", rollupTypeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyAddNewRollupType) + if err := _Verify.contract.UnpackLog(event, "AddNewRollupType", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddNewRollupType is a log parse operation binding the contract event 0xa2970448b3bd66ba7e524e7b2a5b9cf94fa29e32488fb942afdfe70dd4b77b52. +// +// Solidity: event AddNewRollupType(uint32 indexed rollupTypeID, address consensusImplementation, address verifier, uint64 forkID, uint8 rollupCompatibilityID, bytes32 genesis, string description) +func (_Verify *VerifyFilterer) ParseAddNewRollupType(log types.Log) (*VerifyAddNewRollupType, error) { + event := new(VerifyAddNewRollupType) + if err := _Verify.contract.UnpackLog(event, "AddNewRollupType", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyConsolidatePendingStateIterator is returned from FilterConsolidatePendingState and is used to iterate over the raw logs and unpacked data for ConsolidatePendingState events raised by the Verify contract. +type VerifyConsolidatePendingStateIterator struct { + Event *VerifyConsolidatePendingState // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyConsolidatePendingStateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyConsolidatePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyConsolidatePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyConsolidatePendingStateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyConsolidatePendingStateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyConsolidatePendingState represents a ConsolidatePendingState event raised by the Verify contract. +type VerifyConsolidatePendingState struct { + RollupID uint32 + NumBatch uint64 + StateRoot [32]byte + ExitRoot [32]byte + PendingStateNum uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConsolidatePendingState is a free log retrieval operation binding the contract event 0x581910eb7a27738945c2f00a91f2284b2d6de9d4e472b12f901c2b0df045e21b. +// +// Solidity: event ConsolidatePendingState(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, uint64 pendingStateNum) +func (_Verify *VerifyFilterer) FilterConsolidatePendingState(opts *bind.FilterOpts, rollupID []uint32) (*VerifyConsolidatePendingStateIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "ConsolidatePendingState", rollupIDRule) + if err != nil { + return nil, err + } + return &VerifyConsolidatePendingStateIterator{contract: _Verify.contract, event: "ConsolidatePendingState", logs: logs, sub: sub}, nil +} + +// WatchConsolidatePendingState is a free log subscription operation binding the contract event 0x581910eb7a27738945c2f00a91f2284b2d6de9d4e472b12f901c2b0df045e21b. +// +// Solidity: event ConsolidatePendingState(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, uint64 pendingStateNum) +func (_Verify *VerifyFilterer) WatchConsolidatePendingState(opts *bind.WatchOpts, sink chan<- *VerifyConsolidatePendingState, rollupID []uint32) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "ConsolidatePendingState", rollupIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyConsolidatePendingState) + if err := _Verify.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConsolidatePendingState is a log parse operation binding the contract event 0x581910eb7a27738945c2f00a91f2284b2d6de9d4e472b12f901c2b0df045e21b. +// +// Solidity: event ConsolidatePendingState(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, uint64 pendingStateNum) +func (_Verify *VerifyFilterer) ParseConsolidatePendingState(log types.Log) (*VerifyConsolidatePendingState, error) { + event := new(VerifyConsolidatePendingState) + if err := _Verify.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyCreateNewRollupIterator is returned from FilterCreateNewRollup and is used to iterate over the raw logs and unpacked data for CreateNewRollup events raised by the Verify contract. +type VerifyCreateNewRollupIterator struct { + Event *VerifyCreateNewRollup // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyCreateNewRollupIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyCreateNewRollup) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyCreateNewRollup) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyCreateNewRollupIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyCreateNewRollupIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyCreateNewRollup represents a CreateNewRollup event raised by the Verify contract. +type VerifyCreateNewRollup struct { + RollupID uint32 + RollupTypeID uint32 + RollupAddress common.Address + ChainID uint64 + GasTokenAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCreateNewRollup is a free log retrieval operation binding the contract event 0x194c983456df6701c6a50830b90fe80e72b823411d0d524970c9590dc277a641. +// +// Solidity: event CreateNewRollup(uint32 indexed rollupID, uint32 rollupTypeID, address rollupAddress, uint64 chainID, address gasTokenAddress) +func (_Verify *VerifyFilterer) FilterCreateNewRollup(opts *bind.FilterOpts, rollupID []uint32) (*VerifyCreateNewRollupIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "CreateNewRollup", rollupIDRule) + if err != nil { + return nil, err + } + return &VerifyCreateNewRollupIterator{contract: _Verify.contract, event: "CreateNewRollup", logs: logs, sub: sub}, nil +} + +// WatchCreateNewRollup is a free log subscription operation binding the contract event 0x194c983456df6701c6a50830b90fe80e72b823411d0d524970c9590dc277a641. +// +// Solidity: event CreateNewRollup(uint32 indexed rollupID, uint32 rollupTypeID, address rollupAddress, uint64 chainID, address gasTokenAddress) +func (_Verify *VerifyFilterer) WatchCreateNewRollup(opts *bind.WatchOpts, sink chan<- *VerifyCreateNewRollup, rollupID []uint32) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "CreateNewRollup", rollupIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyCreateNewRollup) + if err := _Verify.contract.UnpackLog(event, "CreateNewRollup", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCreateNewRollup is a log parse operation binding the contract event 0x194c983456df6701c6a50830b90fe80e72b823411d0d524970c9590dc277a641. +// +// Solidity: event CreateNewRollup(uint32 indexed rollupID, uint32 rollupTypeID, address rollupAddress, uint64 chainID, address gasTokenAddress) +func (_Verify *VerifyFilterer) ParseCreateNewRollup(log types.Log) (*VerifyCreateNewRollup, error) { + event := new(VerifyCreateNewRollup) + if err := _Verify.contract.UnpackLog(event, "CreateNewRollup", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyEmergencyStateActivatedIterator is returned from FilterEmergencyStateActivated and is used to iterate over the raw logs and unpacked data for EmergencyStateActivated events raised by the Verify contract. +type VerifyEmergencyStateActivatedIterator struct { + Event *VerifyEmergencyStateActivated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyEmergencyStateActivatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyEmergencyStateActivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyEmergencyStateActivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyEmergencyStateActivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyEmergencyStateActivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyEmergencyStateActivated represents a EmergencyStateActivated event raised by the Verify contract. +type VerifyEmergencyStateActivated struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEmergencyStateActivated is a free log retrieval operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Verify *VerifyFilterer) FilterEmergencyStateActivated(opts *bind.FilterOpts) (*VerifyEmergencyStateActivatedIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "EmergencyStateActivated") + if err != nil { + return nil, err + } + return &VerifyEmergencyStateActivatedIterator{contract: _Verify.contract, event: "EmergencyStateActivated", logs: logs, sub: sub}, nil +} + +// WatchEmergencyStateActivated is a free log subscription operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Verify *VerifyFilterer) WatchEmergencyStateActivated(opts *bind.WatchOpts, sink chan<- *VerifyEmergencyStateActivated) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "EmergencyStateActivated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyEmergencyStateActivated) + if err := _Verify.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEmergencyStateActivated is a log parse operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Verify *VerifyFilterer) ParseEmergencyStateActivated(log types.Log) (*VerifyEmergencyStateActivated, error) { + event := new(VerifyEmergencyStateActivated) + if err := _Verify.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyEmergencyStateDeactivatedIterator is returned from FilterEmergencyStateDeactivated and is used to iterate over the raw logs and unpacked data for EmergencyStateDeactivated events raised by the Verify contract. +type VerifyEmergencyStateDeactivatedIterator struct { + Event *VerifyEmergencyStateDeactivated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyEmergencyStateDeactivatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyEmergencyStateDeactivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyEmergencyStateDeactivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyEmergencyStateDeactivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyEmergencyStateDeactivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyEmergencyStateDeactivated represents a EmergencyStateDeactivated event raised by the Verify contract. +type VerifyEmergencyStateDeactivated struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEmergencyStateDeactivated is a free log retrieval operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Verify *VerifyFilterer) FilterEmergencyStateDeactivated(opts *bind.FilterOpts) (*VerifyEmergencyStateDeactivatedIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "EmergencyStateDeactivated") + if err != nil { + return nil, err + } + return &VerifyEmergencyStateDeactivatedIterator{contract: _Verify.contract, event: "EmergencyStateDeactivated", logs: logs, sub: sub}, nil +} + +// WatchEmergencyStateDeactivated is a free log subscription operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Verify *VerifyFilterer) WatchEmergencyStateDeactivated(opts *bind.WatchOpts, sink chan<- *VerifyEmergencyStateDeactivated) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "EmergencyStateDeactivated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyEmergencyStateDeactivated) + if err := _Verify.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEmergencyStateDeactivated is a log parse operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Verify *VerifyFilterer) ParseEmergencyStateDeactivated(log types.Log) (*VerifyEmergencyStateDeactivated, error) { + event := new(VerifyEmergencyStateDeactivated) + if err := _Verify.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Verify contract. +type VerifyInitializedIterator struct { + Event *VerifyInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyInitialized represents a Initialized event raised by the Verify contract. +type VerifyInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Verify *VerifyFilterer) FilterInitialized(opts *bind.FilterOpts) (*VerifyInitializedIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &VerifyInitializedIterator{contract: _Verify.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Verify *VerifyFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *VerifyInitialized) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyInitialized) + if err := _Verify.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Verify *VerifyFilterer) ParseInitialized(log types.Log) (*VerifyInitialized, error) { + event := new(VerifyInitialized) + if err := _Verify.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyObsoleteRollupTypeIterator is returned from FilterObsoleteRollupType and is used to iterate over the raw logs and unpacked data for ObsoleteRollupType events raised by the Verify contract. +type VerifyObsoleteRollupTypeIterator struct { + Event *VerifyObsoleteRollupType // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyObsoleteRollupTypeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyObsoleteRollupType) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyObsoleteRollupType) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyObsoleteRollupTypeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyObsoleteRollupTypeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyObsoleteRollupType represents a ObsoleteRollupType event raised by the Verify contract. +type VerifyObsoleteRollupType struct { + RollupTypeID uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterObsoleteRollupType is a free log retrieval operation binding the contract event 0x4710d2ee567ef1ed6eb2f651dde4589524bcf7cebc62147a99b281cc836e7e44. +// +// Solidity: event ObsoleteRollupType(uint32 indexed rollupTypeID) +func (_Verify *VerifyFilterer) FilterObsoleteRollupType(opts *bind.FilterOpts, rollupTypeID []uint32) (*VerifyObsoleteRollupTypeIterator, error) { + + var rollupTypeIDRule []interface{} + for _, rollupTypeIDItem := range rollupTypeID { + rollupTypeIDRule = append(rollupTypeIDRule, rollupTypeIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "ObsoleteRollupType", rollupTypeIDRule) + if err != nil { + return nil, err + } + return &VerifyObsoleteRollupTypeIterator{contract: _Verify.contract, event: "ObsoleteRollupType", logs: logs, sub: sub}, nil +} + +// WatchObsoleteRollupType is a free log subscription operation binding the contract event 0x4710d2ee567ef1ed6eb2f651dde4589524bcf7cebc62147a99b281cc836e7e44. +// +// Solidity: event ObsoleteRollupType(uint32 indexed rollupTypeID) +func (_Verify *VerifyFilterer) WatchObsoleteRollupType(opts *bind.WatchOpts, sink chan<- *VerifyObsoleteRollupType, rollupTypeID []uint32) (event.Subscription, error) { + + var rollupTypeIDRule []interface{} + for _, rollupTypeIDItem := range rollupTypeID { + rollupTypeIDRule = append(rollupTypeIDRule, rollupTypeIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "ObsoleteRollupType", rollupTypeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyObsoleteRollupType) + if err := _Verify.contract.UnpackLog(event, "ObsoleteRollupType", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseObsoleteRollupType is a log parse operation binding the contract event 0x4710d2ee567ef1ed6eb2f651dde4589524bcf7cebc62147a99b281cc836e7e44. +// +// Solidity: event ObsoleteRollupType(uint32 indexed rollupTypeID) +func (_Verify *VerifyFilterer) ParseObsoleteRollupType(log types.Log) (*VerifyObsoleteRollupType, error) { + event := new(VerifyObsoleteRollupType) + if err := _Verify.contract.UnpackLog(event, "ObsoleteRollupType", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyOnSequenceBatchesIterator is returned from FilterOnSequenceBatches and is used to iterate over the raw logs and unpacked data for OnSequenceBatches events raised by the Verify contract. +type VerifyOnSequenceBatchesIterator struct { + Event *VerifyOnSequenceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyOnSequenceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyOnSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyOnSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyOnSequenceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyOnSequenceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyOnSequenceBatches represents a OnSequenceBatches event raised by the Verify contract. +type VerifyOnSequenceBatches struct { + RollupID uint32 + LastBatchSequenced uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOnSequenceBatches is a free log retrieval operation binding the contract event 0x1d9f30260051d51d70339da239ea7b080021adcaabfa71c9b0ea339a20cf9a25. +// +// Solidity: event OnSequenceBatches(uint32 indexed rollupID, uint64 lastBatchSequenced) +func (_Verify *VerifyFilterer) FilterOnSequenceBatches(opts *bind.FilterOpts, rollupID []uint32) (*VerifyOnSequenceBatchesIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "OnSequenceBatches", rollupIDRule) + if err != nil { + return nil, err + } + return &VerifyOnSequenceBatchesIterator{contract: _Verify.contract, event: "OnSequenceBatches", logs: logs, sub: sub}, nil +} + +// WatchOnSequenceBatches is a free log subscription operation binding the contract event 0x1d9f30260051d51d70339da239ea7b080021adcaabfa71c9b0ea339a20cf9a25. +// +// Solidity: event OnSequenceBatches(uint32 indexed rollupID, uint64 lastBatchSequenced) +func (_Verify *VerifyFilterer) WatchOnSequenceBatches(opts *bind.WatchOpts, sink chan<- *VerifyOnSequenceBatches, rollupID []uint32) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "OnSequenceBatches", rollupIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyOnSequenceBatches) + if err := _Verify.contract.UnpackLog(event, "OnSequenceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOnSequenceBatches is a log parse operation binding the contract event 0x1d9f30260051d51d70339da239ea7b080021adcaabfa71c9b0ea339a20cf9a25. +// +// Solidity: event OnSequenceBatches(uint32 indexed rollupID, uint64 lastBatchSequenced) +func (_Verify *VerifyFilterer) ParseOnSequenceBatches(log types.Log) (*VerifyOnSequenceBatches, error) { + event := new(VerifyOnSequenceBatches) + if err := _Verify.contract.UnpackLog(event, "OnSequenceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyOverridePendingStateIterator is returned from FilterOverridePendingState and is used to iterate over the raw logs and unpacked data for OverridePendingState events raised by the Verify contract. +type VerifyOverridePendingStateIterator struct { + Event *VerifyOverridePendingState // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyOverridePendingStateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyOverridePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyOverridePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyOverridePendingStateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyOverridePendingStateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyOverridePendingState represents a OverridePendingState event raised by the Verify contract. +type VerifyOverridePendingState struct { + RollupID uint32 + NumBatch uint64 + StateRoot [32]byte + ExitRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOverridePendingState is a free log retrieval operation binding the contract event 0x3182bd6e6f74fc1fdc88b60f3a4f4c7f79db6ae6f5b88a1b3f5a1e28ec210d5e. +// +// Solidity: event OverridePendingState(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address aggregator) +func (_Verify *VerifyFilterer) FilterOverridePendingState(opts *bind.FilterOpts, rollupID []uint32) (*VerifyOverridePendingStateIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "OverridePendingState", rollupIDRule) + if err != nil { + return nil, err + } + return &VerifyOverridePendingStateIterator{contract: _Verify.contract, event: "OverridePendingState", logs: logs, sub: sub}, nil +} + +// WatchOverridePendingState is a free log subscription operation binding the contract event 0x3182bd6e6f74fc1fdc88b60f3a4f4c7f79db6ae6f5b88a1b3f5a1e28ec210d5e. +// +// Solidity: event OverridePendingState(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address aggregator) +func (_Verify *VerifyFilterer) WatchOverridePendingState(opts *bind.WatchOpts, sink chan<- *VerifyOverridePendingState, rollupID []uint32) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "OverridePendingState", rollupIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyOverridePendingState) + if err := _Verify.contract.UnpackLog(event, "OverridePendingState", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOverridePendingState is a log parse operation binding the contract event 0x3182bd6e6f74fc1fdc88b60f3a4f4c7f79db6ae6f5b88a1b3f5a1e28ec210d5e. +// +// Solidity: event OverridePendingState(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address aggregator) +func (_Verify *VerifyFilterer) ParseOverridePendingState(log types.Log) (*VerifyOverridePendingState, error) { + event := new(VerifyOverridePendingState) + if err := _Verify.contract.UnpackLog(event, "OverridePendingState", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyProveNonDeterministicPendingStateIterator is returned from FilterProveNonDeterministicPendingState and is used to iterate over the raw logs and unpacked data for ProveNonDeterministicPendingState events raised by the Verify contract. +type VerifyProveNonDeterministicPendingStateIterator struct { + Event *VerifyProveNonDeterministicPendingState // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyProveNonDeterministicPendingStateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyProveNonDeterministicPendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyProveNonDeterministicPendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyProveNonDeterministicPendingStateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyProveNonDeterministicPendingStateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyProveNonDeterministicPendingState represents a ProveNonDeterministicPendingState event raised by the Verify contract. +type VerifyProveNonDeterministicPendingState struct { + StoredStateRoot [32]byte + ProvedStateRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProveNonDeterministicPendingState is a free log retrieval operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. +// +// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) +func (_Verify *VerifyFilterer) FilterProveNonDeterministicPendingState(opts *bind.FilterOpts) (*VerifyProveNonDeterministicPendingStateIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "ProveNonDeterministicPendingState") + if err != nil { + return nil, err + } + return &VerifyProveNonDeterministicPendingStateIterator{contract: _Verify.contract, event: "ProveNonDeterministicPendingState", logs: logs, sub: sub}, nil +} + +// WatchProveNonDeterministicPendingState is a free log subscription operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. +// +// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) +func (_Verify *VerifyFilterer) WatchProveNonDeterministicPendingState(opts *bind.WatchOpts, sink chan<- *VerifyProveNonDeterministicPendingState) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "ProveNonDeterministicPendingState") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyProveNonDeterministicPendingState) + if err := _Verify.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProveNonDeterministicPendingState is a log parse operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. +// +// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) +func (_Verify *VerifyFilterer) ParseProveNonDeterministicPendingState(log types.Log) (*VerifyProveNonDeterministicPendingState, error) { + event := new(VerifyProveNonDeterministicPendingState) + if err := _Verify.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the Verify contract. +type VerifyRoleAdminChangedIterator struct { + Event *VerifyRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyRoleAdminChanged represents a RoleAdminChanged event raised by the Verify contract. +type VerifyRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Verify *VerifyFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*VerifyRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &VerifyRoleAdminChangedIterator{contract: _Verify.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Verify *VerifyFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *VerifyRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyRoleAdminChanged) + if err := _Verify.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_Verify *VerifyFilterer) ParseRoleAdminChanged(log types.Log) (*VerifyRoleAdminChanged, error) { + event := new(VerifyRoleAdminChanged) + if err := _Verify.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the Verify contract. +type VerifyRoleGrantedIterator struct { + Event *VerifyRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyRoleGranted represents a RoleGranted event raised by the Verify contract. +type VerifyRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Verify *VerifyFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*VerifyRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &VerifyRoleGrantedIterator{contract: _Verify.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Verify *VerifyFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *VerifyRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyRoleGranted) + if err := _Verify.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_Verify *VerifyFilterer) ParseRoleGranted(log types.Log) (*VerifyRoleGranted, error) { + event := new(VerifyRoleGranted) + if err := _Verify.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the Verify contract. +type VerifyRoleRevokedIterator struct { + Event *VerifyRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyRoleRevoked represents a RoleRevoked event raised by the Verify contract. +type VerifyRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Verify *VerifyFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*VerifyRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &VerifyRoleRevokedIterator{contract: _Verify.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Verify *VerifyFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *VerifyRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyRoleRevoked) + if err := _Verify.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_Verify *VerifyFilterer) ParseRoleRevoked(log types.Log) (*VerifyRoleRevoked, error) { + event := new(VerifyRoleRevoked) + if err := _Verify.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifySetBatchFeeIterator is returned from FilterSetBatchFee and is used to iterate over the raw logs and unpacked data for SetBatchFee events raised by the Verify contract. +type VerifySetBatchFeeIterator struct { + Event *VerifySetBatchFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifySetBatchFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifySetBatchFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifySetBatchFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifySetBatchFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifySetBatchFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifySetBatchFee represents a SetBatchFee event raised by the Verify contract. +type VerifySetBatchFee struct { + NewBatchFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetBatchFee is a free log retrieval operation binding the contract event 0xfb383653f53ee079978d0c9aff7aeff04a10166ce244cca9c9f9d8d96bed45b2. +// +// Solidity: event SetBatchFee(uint256 newBatchFee) +func (_Verify *VerifyFilterer) FilterSetBatchFee(opts *bind.FilterOpts) (*VerifySetBatchFeeIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "SetBatchFee") + if err != nil { + return nil, err + } + return &VerifySetBatchFeeIterator{contract: _Verify.contract, event: "SetBatchFee", logs: logs, sub: sub}, nil +} + +// WatchSetBatchFee is a free log subscription operation binding the contract event 0xfb383653f53ee079978d0c9aff7aeff04a10166ce244cca9c9f9d8d96bed45b2. +// +// Solidity: event SetBatchFee(uint256 newBatchFee) +func (_Verify *VerifyFilterer) WatchSetBatchFee(opts *bind.WatchOpts, sink chan<- *VerifySetBatchFee) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "SetBatchFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifySetBatchFee) + if err := _Verify.contract.UnpackLog(event, "SetBatchFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetBatchFee is a log parse operation binding the contract event 0xfb383653f53ee079978d0c9aff7aeff04a10166ce244cca9c9f9d8d96bed45b2. +// +// Solidity: event SetBatchFee(uint256 newBatchFee) +func (_Verify *VerifyFilterer) ParseSetBatchFee(log types.Log) (*VerifySetBatchFee, error) { + event := new(VerifySetBatchFee) + if err := _Verify.contract.UnpackLog(event, "SetBatchFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifySetMultiplierBatchFeeIterator is returned from FilterSetMultiplierBatchFee and is used to iterate over the raw logs and unpacked data for SetMultiplierBatchFee events raised by the Verify contract. +type VerifySetMultiplierBatchFeeIterator struct { + Event *VerifySetMultiplierBatchFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifySetMultiplierBatchFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifySetMultiplierBatchFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifySetMultiplierBatchFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifySetMultiplierBatchFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifySetMultiplierBatchFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifySetMultiplierBatchFee represents a SetMultiplierBatchFee event raised by the Verify contract. +type VerifySetMultiplierBatchFee struct { + NewMultiplierBatchFee uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetMultiplierBatchFee is a free log retrieval operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. +// +// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) +func (_Verify *VerifyFilterer) FilterSetMultiplierBatchFee(opts *bind.FilterOpts) (*VerifySetMultiplierBatchFeeIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "SetMultiplierBatchFee") + if err != nil { + return nil, err + } + return &VerifySetMultiplierBatchFeeIterator{contract: _Verify.contract, event: "SetMultiplierBatchFee", logs: logs, sub: sub}, nil +} + +// WatchSetMultiplierBatchFee is a free log subscription operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. +// +// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) +func (_Verify *VerifyFilterer) WatchSetMultiplierBatchFee(opts *bind.WatchOpts, sink chan<- *VerifySetMultiplierBatchFee) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "SetMultiplierBatchFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifySetMultiplierBatchFee) + if err := _Verify.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetMultiplierBatchFee is a log parse operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. +// +// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) +func (_Verify *VerifyFilterer) ParseSetMultiplierBatchFee(log types.Log) (*VerifySetMultiplierBatchFee, error) { + event := new(VerifySetMultiplierBatchFee) + if err := _Verify.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifySetPendingStateTimeoutIterator is returned from FilterSetPendingStateTimeout and is used to iterate over the raw logs and unpacked data for SetPendingStateTimeout events raised by the Verify contract. +type VerifySetPendingStateTimeoutIterator struct { + Event *VerifySetPendingStateTimeout // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifySetPendingStateTimeoutIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifySetPendingStateTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifySetPendingStateTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifySetPendingStateTimeoutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifySetPendingStateTimeoutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifySetPendingStateTimeout represents a SetPendingStateTimeout event raised by the Verify contract. +type VerifySetPendingStateTimeout struct { + NewPendingStateTimeout uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetPendingStateTimeout is a free log retrieval operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. +// +// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) +func (_Verify *VerifyFilterer) FilterSetPendingStateTimeout(opts *bind.FilterOpts) (*VerifySetPendingStateTimeoutIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "SetPendingStateTimeout") + if err != nil { + return nil, err + } + return &VerifySetPendingStateTimeoutIterator{contract: _Verify.contract, event: "SetPendingStateTimeout", logs: logs, sub: sub}, nil +} + +// WatchSetPendingStateTimeout is a free log subscription operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. +// +// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) +func (_Verify *VerifyFilterer) WatchSetPendingStateTimeout(opts *bind.WatchOpts, sink chan<- *VerifySetPendingStateTimeout) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "SetPendingStateTimeout") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifySetPendingStateTimeout) + if err := _Verify.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetPendingStateTimeout is a log parse operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. +// +// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) +func (_Verify *VerifyFilterer) ParseSetPendingStateTimeout(log types.Log) (*VerifySetPendingStateTimeout, error) { + event := new(VerifySetPendingStateTimeout) + if err := _Verify.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifySetTrustedAggregatorIterator is returned from FilterSetTrustedAggregator and is used to iterate over the raw logs and unpacked data for SetTrustedAggregator events raised by the Verify contract. +type VerifySetTrustedAggregatorIterator struct { + Event *VerifySetTrustedAggregator // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifySetTrustedAggregatorIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifySetTrustedAggregator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifySetTrustedAggregator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifySetTrustedAggregatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifySetTrustedAggregatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifySetTrustedAggregator represents a SetTrustedAggregator event raised by the Verify contract. +type VerifySetTrustedAggregator struct { + NewTrustedAggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedAggregator is a free log retrieval operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. +// +// Solidity: event SetTrustedAggregator(address newTrustedAggregator) +func (_Verify *VerifyFilterer) FilterSetTrustedAggregator(opts *bind.FilterOpts) (*VerifySetTrustedAggregatorIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "SetTrustedAggregator") + if err != nil { + return nil, err + } + return &VerifySetTrustedAggregatorIterator{contract: _Verify.contract, event: "SetTrustedAggregator", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedAggregator is a free log subscription operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. +// +// Solidity: event SetTrustedAggregator(address newTrustedAggregator) +func (_Verify *VerifyFilterer) WatchSetTrustedAggregator(opts *bind.WatchOpts, sink chan<- *VerifySetTrustedAggregator) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "SetTrustedAggregator") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifySetTrustedAggregator) + if err := _Verify.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedAggregator is a log parse operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. +// +// Solidity: event SetTrustedAggregator(address newTrustedAggregator) +func (_Verify *VerifyFilterer) ParseSetTrustedAggregator(log types.Log) (*VerifySetTrustedAggregator, error) { + event := new(VerifySetTrustedAggregator) + if err := _Verify.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifySetTrustedAggregatorTimeoutIterator is returned from FilterSetTrustedAggregatorTimeout and is used to iterate over the raw logs and unpacked data for SetTrustedAggregatorTimeout events raised by the Verify contract. +type VerifySetTrustedAggregatorTimeoutIterator struct { + Event *VerifySetTrustedAggregatorTimeout // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifySetTrustedAggregatorTimeoutIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifySetTrustedAggregatorTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifySetTrustedAggregatorTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifySetTrustedAggregatorTimeoutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifySetTrustedAggregatorTimeoutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifySetTrustedAggregatorTimeout represents a SetTrustedAggregatorTimeout event raised by the Verify contract. +type VerifySetTrustedAggregatorTimeout struct { + NewTrustedAggregatorTimeout uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedAggregatorTimeout is a free log retrieval operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. +// +// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) +func (_Verify *VerifyFilterer) FilterSetTrustedAggregatorTimeout(opts *bind.FilterOpts) (*VerifySetTrustedAggregatorTimeoutIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "SetTrustedAggregatorTimeout") + if err != nil { + return nil, err + } + return &VerifySetTrustedAggregatorTimeoutIterator{contract: _Verify.contract, event: "SetTrustedAggregatorTimeout", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedAggregatorTimeout is a free log subscription operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. +// +// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) +func (_Verify *VerifyFilterer) WatchSetTrustedAggregatorTimeout(opts *bind.WatchOpts, sink chan<- *VerifySetTrustedAggregatorTimeout) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "SetTrustedAggregatorTimeout") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifySetTrustedAggregatorTimeout) + if err := _Verify.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedAggregatorTimeout is a log parse operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. +// +// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) +func (_Verify *VerifyFilterer) ParseSetTrustedAggregatorTimeout(log types.Log) (*VerifySetTrustedAggregatorTimeout, error) { + event := new(VerifySetTrustedAggregatorTimeout) + if err := _Verify.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifySetVerifyBatchTimeTargetIterator is returned from FilterSetVerifyBatchTimeTarget and is used to iterate over the raw logs and unpacked data for SetVerifyBatchTimeTarget events raised by the Verify contract. +type VerifySetVerifyBatchTimeTargetIterator struct { + Event *VerifySetVerifyBatchTimeTarget // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifySetVerifyBatchTimeTargetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifySetVerifyBatchTimeTarget) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifySetVerifyBatchTimeTarget) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifySetVerifyBatchTimeTargetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifySetVerifyBatchTimeTargetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifySetVerifyBatchTimeTarget represents a SetVerifyBatchTimeTarget event raised by the Verify contract. +type VerifySetVerifyBatchTimeTarget struct { + NewVerifyBatchTimeTarget uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetVerifyBatchTimeTarget is a free log retrieval operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. +// +// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) +func (_Verify *VerifyFilterer) FilterSetVerifyBatchTimeTarget(opts *bind.FilterOpts) (*VerifySetVerifyBatchTimeTargetIterator, error) { + + logs, sub, err := _Verify.contract.FilterLogs(opts, "SetVerifyBatchTimeTarget") + if err != nil { + return nil, err + } + return &VerifySetVerifyBatchTimeTargetIterator{contract: _Verify.contract, event: "SetVerifyBatchTimeTarget", logs: logs, sub: sub}, nil +} + +// WatchSetVerifyBatchTimeTarget is a free log subscription operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. +// +// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) +func (_Verify *VerifyFilterer) WatchSetVerifyBatchTimeTarget(opts *bind.WatchOpts, sink chan<- *VerifySetVerifyBatchTimeTarget) (event.Subscription, error) { + + logs, sub, err := _Verify.contract.WatchLogs(opts, "SetVerifyBatchTimeTarget") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifySetVerifyBatchTimeTarget) + if err := _Verify.contract.UnpackLog(event, "SetVerifyBatchTimeTarget", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetVerifyBatchTimeTarget is a log parse operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. +// +// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) +func (_Verify *VerifyFilterer) ParseSetVerifyBatchTimeTarget(log types.Log) (*VerifySetVerifyBatchTimeTarget, error) { + event := new(VerifySetVerifyBatchTimeTarget) + if err := _Verify.contract.UnpackLog(event, "SetVerifyBatchTimeTarget", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyUpdateRollupIterator is returned from FilterUpdateRollup and is used to iterate over the raw logs and unpacked data for UpdateRollup events raised by the Verify contract. +type VerifyUpdateRollupIterator struct { + Event *VerifyUpdateRollup // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyUpdateRollupIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyUpdateRollup) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyUpdateRollup) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyUpdateRollupIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyUpdateRollupIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyUpdateRollup represents a UpdateRollup event raised by the Verify contract. +type VerifyUpdateRollup struct { + RollupID uint32 + NewRollupTypeID uint32 + LastVerifiedBatchBeforeUpgrade uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateRollup is a free log retrieval operation binding the contract event 0xf585e04c05d396901170247783d3e5f0ee9c1df23072985b50af089f5e48b19d. +// +// Solidity: event UpdateRollup(uint32 indexed rollupID, uint32 newRollupTypeID, uint64 lastVerifiedBatchBeforeUpgrade) +func (_Verify *VerifyFilterer) FilterUpdateRollup(opts *bind.FilterOpts, rollupID []uint32) (*VerifyUpdateRollupIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "UpdateRollup", rollupIDRule) + if err != nil { + return nil, err + } + return &VerifyUpdateRollupIterator{contract: _Verify.contract, event: "UpdateRollup", logs: logs, sub: sub}, nil +} + +// WatchUpdateRollup is a free log subscription operation binding the contract event 0xf585e04c05d396901170247783d3e5f0ee9c1df23072985b50af089f5e48b19d. +// +// Solidity: event UpdateRollup(uint32 indexed rollupID, uint32 newRollupTypeID, uint64 lastVerifiedBatchBeforeUpgrade) +func (_Verify *VerifyFilterer) WatchUpdateRollup(opts *bind.WatchOpts, sink chan<- *VerifyUpdateRollup, rollupID []uint32) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "UpdateRollup", rollupIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyUpdateRollup) + if err := _Verify.contract.UnpackLog(event, "UpdateRollup", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdateRollup is a log parse operation binding the contract event 0xf585e04c05d396901170247783d3e5f0ee9c1df23072985b50af089f5e48b19d. +// +// Solidity: event UpdateRollup(uint32 indexed rollupID, uint32 newRollupTypeID, uint64 lastVerifiedBatchBeforeUpgrade) +func (_Verify *VerifyFilterer) ParseUpdateRollup(log types.Log) (*VerifyUpdateRollup, error) { + event := new(VerifyUpdateRollup) + if err := _Verify.contract.UnpackLog(event, "UpdateRollup", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyVerifyBatchesIterator is returned from FilterVerifyBatches and is used to iterate over the raw logs and unpacked data for VerifyBatches events raised by the Verify contract. +type VerifyVerifyBatchesIterator struct { + Event *VerifyVerifyBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyVerifyBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyVerifyBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyVerifyBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyVerifyBatches represents a VerifyBatches event raised by the Verify contract. +type VerifyVerifyBatches struct { + RollupID uint32 + NumBatch uint64 + StateRoot [32]byte + ExitRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVerifyBatches is a free log retrieval operation binding the contract event 0xaac1e7a157b259544ebacd6e8a82ae5d6c8f174e12aa48696277bcc9a661f0b4. +// +// Solidity: event VerifyBatches(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address indexed aggregator) +func (_Verify *VerifyFilterer) FilterVerifyBatches(opts *bind.FilterOpts, rollupID []uint32, aggregator []common.Address) (*VerifyVerifyBatchesIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "VerifyBatches", rollupIDRule, aggregatorRule) + if err != nil { + return nil, err + } + return &VerifyVerifyBatchesIterator{contract: _Verify.contract, event: "VerifyBatches", logs: logs, sub: sub}, nil +} + +// WatchVerifyBatches is a free log subscription operation binding the contract event 0xaac1e7a157b259544ebacd6e8a82ae5d6c8f174e12aa48696277bcc9a661f0b4. +// +// Solidity: event VerifyBatches(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address indexed aggregator) +func (_Verify *VerifyFilterer) WatchVerifyBatches(opts *bind.WatchOpts, sink chan<- *VerifyVerifyBatches, rollupID []uint32, aggregator []common.Address) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "VerifyBatches", rollupIDRule, aggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyVerifyBatches) + if err := _Verify.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVerifyBatches is a log parse operation binding the contract event 0xaac1e7a157b259544ebacd6e8a82ae5d6c8f174e12aa48696277bcc9a661f0b4. +// +// Solidity: event VerifyBatches(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address indexed aggregator) +func (_Verify *VerifyFilterer) ParseVerifyBatches(log types.Log) (*VerifyVerifyBatches, error) { + event := new(VerifyVerifyBatches) + if err := _Verify.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// VerifyVerifyBatchesTrustedAggregatorIterator is returned from FilterVerifyBatchesTrustedAggregator and is used to iterate over the raw logs and unpacked data for VerifyBatchesTrustedAggregator events raised by the Verify contract. +type VerifyVerifyBatchesTrustedAggregatorIterator struct { + Event *VerifyVerifyBatchesTrustedAggregator // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VerifyVerifyBatchesTrustedAggregatorIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VerifyVerifyBatchesTrustedAggregator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VerifyVerifyBatchesTrustedAggregator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VerifyVerifyBatchesTrustedAggregatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VerifyVerifyBatchesTrustedAggregatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VerifyVerifyBatchesTrustedAggregator represents a VerifyBatchesTrustedAggregator event raised by the Verify contract. +type VerifyVerifyBatchesTrustedAggregator struct { + RollupID uint32 + NumBatch uint64 + StateRoot [32]byte + ExitRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVerifyBatchesTrustedAggregator is a free log retrieval operation binding the contract event 0xd1ec3a1216f08b6eff72e169ceb548b782db18a6614852618d86bb19f3f9b0d3. +// +// Solidity: event VerifyBatchesTrustedAggregator(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address indexed aggregator) +func (_Verify *VerifyFilterer) FilterVerifyBatchesTrustedAggregator(opts *bind.FilterOpts, rollupID []uint32, aggregator []common.Address) (*VerifyVerifyBatchesTrustedAggregatorIterator, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Verify.contract.FilterLogs(opts, "VerifyBatchesTrustedAggregator", rollupIDRule, aggregatorRule) + if err != nil { + return nil, err + } + return &VerifyVerifyBatchesTrustedAggregatorIterator{contract: _Verify.contract, event: "VerifyBatchesTrustedAggregator", logs: logs, sub: sub}, nil +} + +// WatchVerifyBatchesTrustedAggregator is a free log subscription operation binding the contract event 0xd1ec3a1216f08b6eff72e169ceb548b782db18a6614852618d86bb19f3f9b0d3. +// +// Solidity: event VerifyBatchesTrustedAggregator(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address indexed aggregator) +func (_Verify *VerifyFilterer) WatchVerifyBatchesTrustedAggregator(opts *bind.WatchOpts, sink chan<- *VerifyVerifyBatchesTrustedAggregator, rollupID []uint32, aggregator []common.Address) (event.Subscription, error) { + + var rollupIDRule []interface{} + for _, rollupIDItem := range rollupID { + rollupIDRule = append(rollupIDRule, rollupIDItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Verify.contract.WatchLogs(opts, "VerifyBatchesTrustedAggregator", rollupIDRule, aggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VerifyVerifyBatchesTrustedAggregator) + if err := _Verify.contract.UnpackLog(event, "VerifyBatchesTrustedAggregator", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVerifyBatchesTrustedAggregator is a log parse operation binding the contract event 0xd1ec3a1216f08b6eff72e169ceb548b782db18a6614852618d86bb19f3f9b0d3. +// +// Solidity: event VerifyBatchesTrustedAggregator(uint32 indexed rollupID, uint64 numBatch, bytes32 stateRoot, bytes32 exitRoot, address indexed aggregator) +func (_Verify *VerifyFilterer) ParseVerifyBatchesTrustedAggregator(log types.Log) (*VerifyVerifyBatchesTrustedAggregator, error) { + event := new(VerifyVerifyBatchesTrustedAggregator) + if err := _Verify.contract.UnpackLog(event, "VerifyBatchesTrustedAggregator", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/errcode/code.go b/pkg/errcode/code.go new file mode 100644 index 0000000..cc0f8d4 --- /dev/null +++ b/pkg/errcode/code.go @@ -0,0 +1 @@ +package errcode diff --git a/pkg/errcode/err_test.go b/pkg/errcode/err_test.go new file mode 100644 index 0000000..2f51b2a --- /dev/null +++ b/pkg/errcode/err_test.go @@ -0,0 +1,14 @@ +package errcode + +import ( + "fmt" + "github.com/pkg/errors" + "testing" +) + +func TestErr(t *testing.T) { + // 测试 + err := ErrNoBlobFoundInBlock + fmt.Println(errors.Is(err, ErrNoBlobFoundInBlock)) + fmt.Println(errors.Is(err, ErrNoBlobFound)) +} diff --git a/pkg/errcode/error.go b/pkg/errcode/error.go new file mode 100644 index 0000000..5bd9e5b --- /dev/null +++ b/pkg/errcode/error.go @@ -0,0 +1,22 @@ +package errcode + +type ErrCode struct { + Code string // business error code + Message string // error message + Err error // real error +} + +func NewErrCodeWithMessage(code string, msg string) ErrCode { + err := ErrCode{ + Code: code, + Message: msg, + } + return err +} + +func (e ErrCode) Error() string { + if e.Err != nil { + return e.Err.Error() + } + return e.Message +} diff --git a/pkg/errcode/errors.go b/pkg/errcode/errors.go new file mode 100644 index 0000000..314ba7e --- /dev/null +++ b/pkg/errcode/errors.go @@ -0,0 +1,8 @@ +package errcode + +import "github.com/pkg/errors" + +var ( + ErrNoBlobFoundInBlock = errors.New("no blobs found in this block ") + ErrNoBlobFound = errors.New("no blobs found in this block ") +) diff --git a/pkg/event/op/l2OutputOracle.go b/pkg/event/op/l2OutputOracle.go new file mode 100644 index 0000000..f75957d --- /dev/null +++ b/pkg/event/op/l2OutputOracle.go @@ -0,0 +1,54 @@ +package op + +import ( + "encoding/json" + "math/big" + + "github.com/b2network/b2committer/pkg/event" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" +) + +var ( + OutputProposedName = "OutputProposed" + + OutputProposedHash = crypto.Keccak256([]byte("OutputProposed(bytes32,uint256,uint256,uint256)")) +) + +type OutputProposed struct { + OutputRoot string `json:"outputRoot"` + L2OutputIndex *big.Int `json:"l2OutputIndex"` + L2BlockNumber *big.Int `json:"l2BlockNumber"` + L1Timestamp *big.Int `json:"l1Timestamp"` +} + +func (*OutputProposed) Name() string { + return OutputProposedName +} + +func (*OutputProposed) EventHash() common.Hash { + return common.BytesToHash(OutputProposedHash) +} + +func (t *OutputProposed) ToObj(data string) error { + err := json.Unmarshal([]byte(data), &t) + if err != nil { + return err + } + return nil +} + +func (*OutputProposed) Data(log types.Log) (string, error) { + transfer := &OutputProposed{ + OutputRoot: event.TopicToHash(log, 1).Hex(), + L2OutputIndex: big.NewInt(event.TopicToInt64(log, 2)), + L2BlockNumber: big.NewInt(event.TopicToInt64(log, 3)), + L1Timestamp: big.NewInt(event.DataToInt64(log, 0)), + } + data, err := event.ToJSON(transfer) + if err != nil { + return "", err + } + return data, nil +} diff --git a/pkg/event/zkevm/sequenceBatches.go b/pkg/event/zkevm/sequenceBatches.go new file mode 100644 index 0000000..9e7d614 --- /dev/null +++ b/pkg/event/zkevm/sequenceBatches.go @@ -0,0 +1,49 @@ +package zkevm + +import ( + "encoding/json" + + "github.com/b2network/b2committer/pkg/event" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" +) + +var ( + SequenceBatchesName = "sequenceBatches" + + SequenceBatchesNameHash = crypto.Keccak256([]byte("SequenceBatches(uint64,bytes32)")) +) + +type SequenceBatches struct { + BatchNum uint64 `json:"numBatch"` + L1InfoRoot string `json:"l1InfoRoot"` +} + +func (*SequenceBatches) Name() string { + return SequenceBatchesName +} + +func (*SequenceBatches) EventHash() common.Hash { + return common.BytesToHash(SequenceBatchesNameHash) +} + +func (t *SequenceBatches) ToObj(data string) error { + err := json.Unmarshal([]byte(data), &t) + if err != nil { + return err + } + return nil +} + +func (*SequenceBatches) Data(log types.Log) (string, error) { + transfer := &SequenceBatches{ + BatchNum: uint64(event.TopicToInt64(log, 1)), + L1InfoRoot: event.DataToHash(log, 0).Hex(), + } + data, err := event.ToJSON(transfer) + if err != nil { + return "", err + } + return data, nil +} diff --git a/pkg/event/zkevm/verifybatches.go b/pkg/event/zkevm/verifybatches.go index 5bb4cb6..bbd6989 100644 --- a/pkg/event/zkevm/verifybatches.go +++ b/pkg/event/zkevm/verifybatches.go @@ -12,12 +12,14 @@ import ( var ( VerifyBatchesName = "verifyBatchesTrustedAggregator" - VerifyBatchesHash = crypto.Keccak256([]byte("VerifyBatchesTrustedAggregator(uint64,bytes32,address)")) + VerifyBatchesHash = crypto.Keccak256([]byte("VerifyBatchesTrustedAggregator(uint32,uint64,bytes32,bytes32,address)")) ) type VerifyBatches struct { + RollupID uint32 `json:"rollupID"` BatchNum uint64 `json:"numBatch"` StateRoot string `json:"stateRoot"` + ExitRoot string `json:"exitRoot"` Aggregator string `json:"aggregator"` } @@ -39,9 +41,11 @@ func (t *VerifyBatches) ToObj(data string) error { func (*VerifyBatches) Data(log types.Log) (string, error) { transfer := &VerifyBatches{ - BatchNum: uint64(event.TopicToInt64(log, 1)), - StateRoot: event.DataToHash(log, 0).Hex(), - Aggregator: event.TopicToHash(log, 2).Hex(), + RollupID: uint32(event.TopicToInt64(log, 1)), + Aggregator: event.TopicToAddress(log, 2).Hex(), + BatchNum: uint64(event.DataToInt64(log, 0)), + StateRoot: event.DataToHash(log, 1).Hex(), + ExitRoot: event.DataToHash(log, 2).Hex(), } data, err := event.ToJSON(transfer) if err != nil { diff --git a/pkg/inscribe/inscribe.go b/pkg/inscribe/inscribe.go index 08338e7..40b8e2a 100644 --- a/pkg/inscribe/inscribe.go +++ b/pkg/inscribe/inscribe.go @@ -25,6 +25,7 @@ import ( // InscriptionData is the data of an inscription type InscriptionData struct { + ContentType string Body []byte // The body of the inscription Destination string // The destination of the inscription } @@ -83,7 +84,7 @@ type Result struct { Fees int64 } -func Inscribe(privateKeyHex string, stateRootHash string, proofRootHash string, destination string, net *chaincfg.Params) (*Result, error) { +func Inscribe(privateKeyHex string, content []byte, destination string, net *chaincfg.Params) (*Result, error) { btcAPIClient := btcmempool.NewClient(net) dataList := make([]InscriptionData, 0) utxoPrivateKeyBytes, err := hex.DecodeString(privateKeyHex) @@ -96,7 +97,8 @@ func Inscribe(privateKeyHex string, stateRootHash string, proofRootHash string, return nil, fmt.Errorf("private key generate address error: %w", err) } dataList = append(dataList, InscriptionData{ - Body: []byte(stateRootHash + proofRootHash), + ContentType: "text/plain;charset=utf-8", + Body: content, Destination: destination, }) fmt.Println(utxoTaprootAddress.EncodeAddress()) @@ -205,7 +207,15 @@ func createInscriptionTxCtxData(net *chaincfg.Params, data InscriptionData) (*in AddData(schnorr.SerializePubKey(privateKey.PubKey())). AddOp(txscript.OP_CHECKSIG). AddOp(txscript.OP_FALSE). - AddOp(txscript.OP_IF) + AddOp(txscript.OP_IF). + AddData([]byte("ord")). + // Two OP_DATA_1 should be OP_1. However, in the following link, it's not set as OP_1: + // https://github.com/casey/ord/blob/0.5.1/src/inscription.rs#L17 + // Therefore, we use two OP_DATA_1 to maintain consistency with ord. + AddOp(txscript.OP_DATA_1). + AddOp(txscript.OP_DATA_1). + AddData([]byte(data.ContentType)). + AddOp(txscript.OP_0) maxChunkSize := 520 bodySize := len(data.Body) for i := 0; i < bodySize; i += maxChunkSize { diff --git a/pkg/merkle/merklenode_test.go b/pkg/merkle/merklenode_test.go index 408c8d7..f739294 100644 --- a/pkg/merkle/merklenode_test.go +++ b/pkg/merkle/merklenode_test.go @@ -34,15 +34,15 @@ func TestMerkleNode(t *testing.T) { newStateRoots := make([]string, 0) newStateRoots = append(newStateRoots, "e5f3471831c881c8f34ea32ab485124a09a0f35f010528eb59c51f82e3805df3") newStateRoots = append(newStateRoots, "34f02ed77cd04345bf84d0f4c8257f0d10701a1f3a8f8c0affc1af9a6301a896") - newStateRoots = append(newStateRoots, "34f02ed77cd04345bf84d0f4c8257f0d10701a1f3a8f8c0affc1af9a6301a896") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") - newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "34f02ed77cd04345bf84d0f4c8257f0d10701a1f3a8f8c0affc1af9a6301a896") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") + //newStateRoots = append(newStateRoots, "dd813c06390aa63c284c240ad3746e96db28f9ef5e4c4ea76409a10f839ba55e") stateBlocks := GenerateBlocks(newStateRoots) stateTree, _ := mt.New(nil, stateBlocks) diff --git a/pkg/store/arweave.go b/pkg/store/arweave.go new file mode 100644 index 0000000..b26c0ed --- /dev/null +++ b/pkg/store/arweave.go @@ -0,0 +1,44 @@ +package store + +import ( + "strconv" + + "github.com/everFinance/goar" + "github.com/everFinance/goar/types" +) + +type ArWeave struct { + Client *goar.Client + Wallet *goar.Wallet +} + +func NewArWeave(wallet *goar.Wallet, client *goar.Client) *ArWeave { + return &ArWeave{ + Wallet: wallet, + Client: client, + } +} + +func (ar *ArWeave) StoreDetailsOnChain(txs []byte, chainID int64, proposalID uint64) (string, error) { + tags := []types.Tag{ + {Name: "Content-Type", Value: "application/json"}, + {Name: "title", Value: "b2-batch"}, + {Name: "chainID", Value: strconv.FormatInt(chainID, 10)}, + {Name: "ProposalID", Value: strconv.FormatUint(proposalID, 10)}, + } + arTx, err := ar.Wallet.SendData(txs, tags) + if err != nil { + return "", err + } + return arTx.ID, nil +} + +func (ar *ArWeave) QueryDetailsByTxID(txID string) ([]byte, error) { + txs, err := ar.Client.GetTransactionData(txID, "json") + if err != nil { + return nil, err + } + return txs, nil +} + +var _ DecentralizedStore = (*ArWeave)(nil) diff --git a/pkg/store/arweave_test.go b/pkg/store/arweave_test.go new file mode 100644 index 0000000..5af8ad4 --- /dev/null +++ b/pkg/store/arweave_test.go @@ -0,0 +1,35 @@ +package store + +import ( + "fmt" + "github.com/everFinance/goar" + "github.com/everFinance/goar/types" + "github.com/stretchr/testify/require" + "strconv" + "testing" +) + +func TestQueryTxsByTxID(t *testing.T) { + arClient := goar.NewClient("https://arweave.net") + txs, _ := arClient.GetTransactionData("vKYQjEJIl2n8r6u_cmM5YMev8KAJ3DAwOMhsNI717Ws", "json") + //require.NoError(t, err) + fmt.Println(string(txs)) + + //state, err := arClient.GetTransactionStatus("tB0zc2qLAGsw8x2kNUUPqzOBQuRV1C5CFWEN5tfY2CY") + //require.NoError(t, err) + //fmt.Println(state) +} + +func TestSendData(t *testing.T) { + tags := []types.Tag{ + {Name: "Content-Type", Value: "application/json"}, + {Name: "title", Value: "b2-batch"}, + {Name: "chainID", Value: strconv.FormatInt(123, 10)}, + } + arNode := "https://arweave.net" + wallet := "../../wallet/account.json" + w, err := goar.NewWalletFromPath(wallet, arNode) + require.NoError(t, err) + arTx, err := w.SendData([]byte{}, tags) + fmt.Println(arTx) +} diff --git a/pkg/store/store.go b/pkg/store/store.go new file mode 100644 index 0000000..d7f119f --- /dev/null +++ b/pkg/store/store.go @@ -0,0 +1,6 @@ +package store + +type DecentralizedStore interface { + StoreDetailsOnChain(txs []byte, chainID int64, proposalID uint64) (string, error) + QueryDetailsByTxID(txID string) ([]byte, error) +} diff --git a/pkg/unisat/unisat.go b/pkg/unisat/unisat.go new file mode 100644 index 0000000..3fa6390 --- /dev/null +++ b/pkg/unisat/unisat.go @@ -0,0 +1,63 @@ +package unisat + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" + + "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/client" +) + +type UstHTTPClient struct { + auth string + cl client.HTTP +} + +func NewUnisatHTTPClient(cl client.HTTP, auth string) *UstHTTPClient { + return &UstHTTPClient{auth, cl} +} + +func (cl *UstHTTPClient) apiReq(ctx context.Context, dest any, reqPath string, reqQuery url.Values) error { + headers := http.Header{} + headers.Add("Accept", "application/json") + headers.Add("Authorization", "Bearer "+cl.auth) + resp, err := cl.cl.Get(ctx, reqPath, reqQuery, headers) + if err != nil { + return fmt.Errorf("http Get failed: %w", err) + } + if resp.StatusCode != http.StatusOK { + errMsg, _ := io.ReadAll(resp.Body) + _ = resp.Body.Close() + return fmt.Errorf("failed request with status %d: %s", resp.StatusCode, string(errMsg)) + } + if err := json.NewDecoder(resp.Body).Decode(dest); err != nil { + _ = resp.Body.Close() + return err + } + if err := resp.Body.Close(); err != nil { + return fmt.Errorf("failed to close response body: %w", err) + } + return nil +} + +func (cl *UstHTTPClient) QueryAPIBTCTxOutputsByTxID(ctx context.Context, txID string) (*types.APIBTCTxOutputs, error) { + var res types.APIBTCTxOutputs + err := cl.apiReq(ctx, &res, "/v1/indexer/tx/"+txID+"/outs", nil) + if err != nil { + return nil, err + } + return &res, nil +} + +func (cl *UstHTTPClient) QueryStateRootProposalByInsID(ctx context.Context, insID string) (*types.BtcStateRootProposal, error) { + var res types.BtcStateRootProposal + err := cl.apiReq(ctx, &res, "/v1/indexer/inscription/content/"+insID, nil) + if err != nil { + return nil, err + } + return &res, nil +} diff --git a/pkg/unisat/unisat_test.go b/pkg/unisat/unisat_test.go new file mode 100644 index 0000000..49700ed --- /dev/null +++ b/pkg/unisat/unisat_test.go @@ -0,0 +1,29 @@ +package unisat + +import ( + "context" + "fmt" + "github.com/b2network/b2committer/internal/types" + "github.com/b2network/b2committer/pkg/client" + "github.com/stretchr/testify/require" + "testing" +) + +func TestQueryInscribeNumber(t *testing.T) { + url := "https://open-api-testnet.unisat.io/" + unisat := NewUnisatHTTPClient(client.NewBasicHTTPClient(url), "4cb09e6eec9a0c3ebd07135b3817a3dcedcc9791d50fade4cb564e8ad68a7ac3") + var res types.APIBTCTxOutputs + err := unisat.apiReq(context.Background(), &res, "/v1/indexer/tx/2f0025a6c5173a4cc5ea6c3eb85b5433c700dfeae34503394933712f8b3ffb26/outs", nil) + require.NoError(t, err) + fmt.Println(res) + fmt.Println(res.Data[0].Inscriptions[0].InscriptionID) +} + +func TestQueryContent(t *testing.T) { + url := "https://open-api-testnet.unisat.io/" + unisat := NewUnisatHTTPClient(client.NewBasicHTTPClient(url), "4cb09e6eec9a0c3ebd07135b3817a3dcedcc9791d50fade4cb564e8ad68a7ac3") + var res types.StateRootProposal + err := unisat.apiReq(context.Background(), &res, "/v1/indexer/inscription/content/2f0025a6c5173a4cc5ea6c3eb85b5433c700dfeae34503394933712f8b3ffb26i0", nil) + require.NoError(t, err) + fmt.Println(res) +} diff --git a/test-docker/docker-compose.yml b/test-docker/docker-compose.yml index f9cf98a..d6f0b5f 100644 --- a/test-docker/docker-compose.yml +++ b/test-docker/docker-compose.yml @@ -12,7 +12,22 @@ services: - ./mysql.sql:/docker-entrypoint-initdb.d/init.sql - ./mysql1/datadir:/var/lib/mysql -# mysql2: + postgres: + container_name: postgres + image: postgres:15.6 + environment: + - POSTGRES_PASSWORD=postgres + - POSTGRES_USER=postgres + - POSTGRES_DB=postgres + - PGDATA=/var/lib/postgresql/data/pgdata + ports: + - "5433:5432" + volumes: + - ./postgres1/datadir:/var/lib/postgresql/data + - ./postgres.sql:/docker-entrypoint-initdb.d/init.sql + + +# mysql2: # image: mysql:8.0.28 # environment: # MYSQL_ROOT_PASSWORD: "root" diff --git a/test-docker/mysql.sql b/test-docker/mysql.sql index 9e62e7f..51d28c7 100644 --- a/test-docker/mysql.sql +++ b/test-docker/mysql.sql @@ -9,148 +9,171 @@ SET FOREIGN_KEY_CHECKS = 0; -- Table structure for rollbacks -- ---------------------------- DROP TABLE IF EXISTS `rollbacks`; -CREATE TABLE `rollbacks` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名, eth', - `event_id` bigint NOT NULL COMMENT ' 事件ID', - PRIMARY KEY (`id`), - KEY `event_id_index` (`event_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +CREATE TABLE `rollbacks` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `blockchain` varchar(32) NOT NULL COMMENT ' 链名, eth', + `event_id` bigint NOT NULL COMMENT ' 事件ID', + PRIMARY KEY (`id`), + KEY `event_id_index` (`event_id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1000000 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; -- ---------------------------- -- Table structure for sync_blocks -- ---------------------------- DROP TABLE IF EXISTS `sync_blocks`; -CREATE TABLE `sync_blocks` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `miner` varchar(42) NOT NULL COMMENT ' 出块人', - `block_time` bigint NOT NULL COMMENT ' 出块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `tx_count` bigint NOT NULL COMMENT ' 交易数量', - `event_count` bigint NOT NULL COMMENT ' 事件数量', - `parent_hash` varchar(66) NOT NULL COMMENT ' 父Hash', - `status` varchar(32) NOT NULL COMMENT ' 状态', - `check_count` bigint NOT NULL COMMENT ' 检查次数', - PRIMARY KEY (`id`), - KEY `status_index` (`status`), - KEY `tx_count_index` (`tx_count`), - KEY `check_count_index` (`check_count`) -) ENGINE=InnoDB AUTO_INCREMENT=2923365 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +CREATE TABLE `sync_blocks` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `blockchain` varchar(32) NOT NULL COMMENT ' 链名', + `miner` varchar(42) NOT NULL COMMENT ' 出块人', + `block_time` bigint NOT NULL COMMENT ' 出块时间', + `block_number` bigint NOT NULL COMMENT ' 区块高度', + `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', + `tx_count` bigint NOT NULL COMMENT ' 交易数量', + `event_count` bigint NOT NULL COMMENT ' 事件数量', + `parent_hash` varchar(66) NOT NULL COMMENT ' 父Hash', + `status` varchar(32) NOT NULL COMMENT ' 状态', + `check_count` bigint NOT NULL COMMENT ' 检查次数', + PRIMARY KEY (`id`), + KEY `status_index` (`status`), + KEY `tx_count_index` (`tx_count`), + KEY `check_count_index` (`check_count`) +) ENGINE = InnoDB + AUTO_INCREMENT = 2923365 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; -- ---------------------------- -- Table structure for sync_blocks_history -- ---------------------------- DROP TABLE IF EXISTS `sync_blocks_history`; -CREATE TABLE `sync_blocks_history` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `miner` varchar(42) NOT NULL COMMENT ' 出块人', - `block_time` bigint NOT NULL COMMENT ' 出块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `tx_count` bigint NOT NULL COMMENT ' 交易数量', - `event_count` bigint NOT NULL COMMENT ' 事件数量', - `parent_hash` varchar(66) NOT NULL COMMENT ' 父Hash', - `status` varchar(32) NOT NULL COMMENT ' 状态', - `check_count` bigint NOT NULL COMMENT ' 检查次数', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2792531 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +CREATE TABLE `sync_blocks_history` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `blockchain` varchar(32) NOT NULL COMMENT ' 链名', + `miner` varchar(42) NOT NULL COMMENT ' 出块人', + `block_time` bigint NOT NULL COMMENT ' 出块时间', + `block_number` bigint NOT NULL COMMENT ' 区块高度', + `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', + `tx_count` bigint NOT NULL COMMENT ' 交易数量', + `event_count` bigint NOT NULL COMMENT ' 事件数量', + `parent_hash` varchar(66) NOT NULL COMMENT ' 父Hash', + `status` varchar(32) NOT NULL COMMENT ' 状态', + `check_count` bigint NOT NULL COMMENT ' 检查次数', + PRIMARY KEY (`id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 2792531 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; -- ---------------------------- -- Table structure for sync_events -- ---------------------------- DROP TABLE IF EXISTS `sync_events`; -CREATE TABLE `sync_events` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `sync_block_id` bigint NOT NULL COMMENT ' 同步区块ID', - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `block_time` bigint NOT NULL COMMENT ' 区块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `block_log_indexed` bigint NOT NULL COMMENT ' 日志index', - `tx_index` bigint NOT NULL COMMENT ' 交易index', - `tx_hash` varchar(66) NOT NULL COMMENT ' 交易Hash', - `event_name` varchar(32) NOT NULL COMMENT ' 事件名称', - `event_hash` varchar(66) NOT NULL COMMENT ' 事件Hash', - `contract_address` varchar(42) NOT NULL COMMENT ' 合约地址', - `data` json NOT NULL COMMENT ' 数据内容', - `status` varchar(32) NOT NULL COMMENT ' 状态', - `retry_count` bigint DEFAULT '0' COMMENT '重试次数', - PRIMARY KEY (`id`), - KEY `status_index` (`status`) -) ENGINE=InnoDB AUTO_INCREMENT=1011299 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +CREATE TABLE `sync_events` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `sync_block_id` bigint NOT NULL COMMENT ' 同步区块ID', + `blockchain` varchar(32) NOT NULL COMMENT ' 链名', + `block_time` bigint NOT NULL COMMENT ' 区块时间', + `block_number` bigint NOT NULL COMMENT ' 区块高度', + `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', + `block_log_indexed` bigint NOT NULL COMMENT ' 日志index', + `tx_index` bigint NOT NULL COMMENT ' 交易index', + `tx_hash` varchar(66) NOT NULL COMMENT ' 交易Hash', + `event_name` varchar(32) NOT NULL COMMENT ' 事件名称', + `event_hash` varchar(66) NOT NULL COMMENT ' 事件Hash', + `contract_address` varchar(42) NOT NULL COMMENT ' 合约地址', + `data` json NOT NULL COMMENT ' 数据内容', + `status` varchar(32) NOT NULL COMMENT ' 状态', + `retry_count` bigint DEFAULT '0' COMMENT '重试次数', + PRIMARY KEY (`id`), + KEY `status_index` (`status`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1011299 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; -- ---------------------------- -- Table structure for sync_events_history -- ---------------------------- DROP TABLE IF EXISTS `sync_events_history`; -CREATE TABLE `sync_events_history` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `sync_block_id` bigint NOT NULL COMMENT ' 同步区块ID', - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `block_time` bigint NOT NULL COMMENT ' 区块时间', - `block_number` bigint NOT NULL COMMENT ' 区块高度', - `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', - `block_log_indexed` bigint NOT NULL COMMENT ' 日志index', - `tx_index` bigint NOT NULL COMMENT ' 交易index', - `tx_hash` varchar(66) NOT NULL COMMENT ' 交易Hash', - `event_name` varchar(32) NOT NULL COMMENT ' 事件名称', - `event_hash` varchar(66) NOT NULL COMMENT ' 事件Hash', - `contract_address` varchar(42) NOT NULL COMMENT ' 合约地址', - `data` json NOT NULL COMMENT ' 数据内容', - `status` varchar(32) NOT NULL COMMENT ' 状态', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +CREATE TABLE `sync_events_history` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `sync_block_id` bigint NOT NULL COMMENT ' 同步区块ID', + `blockchain` varchar(32) NOT NULL COMMENT ' 链名', + `block_time` bigint NOT NULL COMMENT ' 区块时间', + `block_number` bigint NOT NULL COMMENT ' 区块高度', + `block_hash` varchar(66) NOT NULL COMMENT ' 区块Hash', + `block_log_indexed` bigint NOT NULL COMMENT ' 日志index', + `tx_index` bigint NOT NULL COMMENT ' 交易index', + `tx_hash` varchar(66) NOT NULL COMMENT ' 交易Hash', + `event_name` varchar(32) NOT NULL COMMENT ' 事件名称', + `event_hash` varchar(66) NOT NULL COMMENT ' 事件Hash', + `contract_address` varchar(42) NOT NULL COMMENT ' 合约地址', + `data` json NOT NULL COMMENT ' 数据内容', + `status` varchar(32) NOT NULL COMMENT ' 状态', + PRIMARY KEY (`id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1000000 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; -- ---------------------------- -- Table structure for sync_tasks -- ---------------------------- DROP TABLE IF EXISTS `sync_tasks`; -CREATE TABLE `sync_tasks` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `blockchain` varchar(32) NOT NULL COMMENT ' 链名', - `latest_block` bigint NOT NULL COMMENT ' 同步高度', - `start_block` bigint NOT NULL COMMENT ' 同步开始区块高度', - `end_block` bigint NOT NULL COMMENT ' 同步结束区块高度', - `handle_num` bigint NOT NULL COMMENT ' 处理数', - `contracts` text NOT NULL COMMENT ' 合约地址,多个用,分割', - `status` varchar(32) NOT NULL COMMENT ' 状态', - PRIMARY KEY (`id`), - KEY `status_index` (`status`) -) ENGINE=InnoDB AUTO_INCREMENT=1000010 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +CREATE TABLE `sync_tasks` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `blockchain` varchar(32) NOT NULL COMMENT ' 链名', + `latest_block` bigint NOT NULL COMMENT ' 同步高度', + `start_block` bigint NOT NULL COMMENT ' 同步开始区块高度', + `end_block` bigint NOT NULL COMMENT ' 同步结束区块高度', + `handle_num` bigint NOT NULL COMMENT ' 处理数', + `contracts` text NOT NULL COMMENT ' 合约地址,多个用,分割', + `status` varchar(32) NOT NULL COMMENT ' 状态', + PRIMARY KEY (`id`), + KEY `status_index` (`status`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1000010 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci; SET FOREIGN_KEY_CHECKS = 1; DROP TABLE IF EXISTS `proposal`; -CREATE TABLE `proposal` ( - `id` bigint NOT NULL AUTO_INCREMENT, - `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `proposal_id` bigint NOT NULL, - `proposer` varchar(128) NOT NULL, +CREATE TABLE `proposal` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `proposal_id` bigint NOT NULL, `state_root_hash` varchar(128) NOT NULL, `proof_root_hash` varchar(128) NOT NULL, - `start_batch_num` bigint NOT NULL, - `end_batch_num` bigint NOT NULL, - `btc_commit_tx_hash` varchar(128) , - `btc_reveal_tx_hash` varchar(128) , - `block_height` bigint NOT NULL DEFAULT 0, - `winner` varchar(128), - `status` bigint NOT NULL DEFAULT 0, + `start_batch_num` bigint NOT NULL, + `end_batch_num` bigint NOT NULL, + `btc_tx_hash` varchar(128), + `winner` varchar(128), + `status` bigint NOT NULL DEFAULT 0, + `upload_details` tinyint(1) default 0, PRIMARY KEY (`id`), KEY `proposal_id_index` (`proposal_id`) ) diff --git a/test-docker/postgres.sql b/test-docker/postgres.sql new file mode 100644 index 0000000..38635e6 --- /dev/null +++ b/test-docker/postgres.sql @@ -0,0 +1,129 @@ +CREATE DATABASE b2_committer WITH ENCODING ='UTF8'; +-- Switch to the newly created database +\c b2_committer; + +-- Create rollbacks table +CREATE TABLE IF NOT EXISTS rollbacks +( + id SERIAL PRIMARY KEY, + created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + blockchain varchar(32) NOT NULL, + event_id bigint NOT NULL +); +CREATE INDEX if NOT EXISTS event_id_index ON rollbacks (event_id); + +-- Create sync_blocks table +CREATE TABLE IF NOT EXISTS sync_blocks +( + id SERIAL PRIMARY KEY, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + blockchain VARCHAR(32) NOT NULL, + miner VARCHAR(42) NOT NULL, + block_time BIGINT NOT NULL, + block_number BIGINT NOT NULL, + block_hash VARCHAR(66) NOT NULL, + tx_count BIGINT NOT NULL, + event_count BIGINT NOT NULL, + parent_hash VARCHAR(66) NOT NULL, + status VARCHAR(32) NOT NULL, + check_count BIGINT NOT NULL +); +CREATE INDEX if not exists status_index ON sync_blocks (status); +CREATE INDEX if not exists tx_count_index ON sync_blocks (tx_count); +CREATE INDEX if not exists check_count_index ON sync_blocks (check_count); + +-- Create sync_blocks_history table +CREATE TABLE IF NOT EXISTS sync_blocks_history +( + id SERIAL PRIMARY KEY, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + blockchain VARCHAR(32) NOT NULL, + miner VARCHAR(42) NOT NULL, + block_time BIGINT NOT NULL, + block_number BIGINT NOT NULL, + block_hash VARCHAR(66) NOT NULL, + tx_count BIGINT NOT NULL, + event_count BIGINT NOT NULL, + parent_hash VARCHAR(66) NOT NULL, + status VARCHAR(32) NOT NULL, + check_count BIGINT NOT NULL +); + +-- Create sync_events table +CREATE TABLE IF NOT EXISTS sync_events +( + id SERIAL PRIMARY KEY, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + sync_block_id BIGINT NOT NULL, + blockchain VARCHAR(32) NOT NULL, + block_time BIGINT NOT NULL, + block_number BIGINT NOT NULL, + block_hash VARCHAR(66) NOT NULL, + block_log_indexed BIGINT NOT NULL, + tx_index BIGINT NOT NULL, + tx_hash VARCHAR(66) NOT NULL, + event_name VARCHAR(32) NOT NULL, + event_hash VARCHAR(66) NOT NULL, + contract_address VARCHAR(42) NOT NULL, + data JSONB NOT NULL, + status VARCHAR(32) NOT NULL, + retry_count BIGINT DEFAULT 0 +); + +-- Create sync_events_history table +CREATE TABLE IF NOT EXISTS sync_events_history +( + id SERIAL PRIMARY KEY, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + sync_block_id BIGINT NOT NULL, + blockchain VARCHAR(32) NOT NULL, + block_time BIGINT NOT NULL, + block_number BIGINT NOT NULL, + block_hash VARCHAR(66) NOT NULL, + block_log_indexed BIGINT NOT NULL, + tx_index BIGINT NOT NULL, + tx_hash VARCHAR(66) NOT NULL, + event_name VARCHAR(32) NOT NULL, + event_hash VARCHAR(66) NOT NULL, + contract_address VARCHAR(42) NOT NULL, + data JSONB NOT NULL, + status VARCHAR(32) NOT NULL +); + +-- Create sync_tasks table +CREATE TABLE IF NOT EXISTS sync_tasks +( + id SERIAL PRIMARY KEY, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + blockchain VARCHAR(32) NOT NULL, + latest_block BIGINT NOT NULL, + start_block BIGINT NOT NULL, + end_block BIGINT NOT NULL, + handle_num BIGINT NOT NULL, + contracts TEXT NOT NULL, + status VARCHAR(32) NOT NULL +); + +drop table if exists proposal; +-- Create proposal table +CREATE TABLE IF NOT EXISTS proposal +( + id bigserial PRIMARY KEY, + created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + proposal_id bigint NOT NULL, + state_root_hash varchar(128) NOT NULL, + proof_root_hash varchar(128) NOT NULL, + start_batch_num bigint NOT NULL, + end_batch_num bigint NOT NULL, + btc_tx_hash varchar(128), + winner varchar(128), + status bigint NOT NULL DEFAULT 0 +); +CREATE INDEX if not exists proposal_id_index ON proposal (proposal_id);