diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index 664fc66a144..1dae3eabdeb 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -e66a0c889eade8e323255d3129faa4fd512d5c94 +6c82da0998363d65e5ad672dfb6601a31479ffbe diff --git a/packages/taiko-client/bindings/gen_guardian_prover.go b/packages/taiko-client/bindings/gen_guardian_prover.go index 8b42670d6f3..cb41c7d23e3 100644 --- a/packages/taiko-client/bindings/gen_guardian_prover.go +++ b/packages/taiko-client/bindings/gen_guardian_prover.go @@ -29,23 +29,6 @@ var ( _ = abi.ConvertType ) -// IVerifierContext is an auto generated low-level Go binding around an user-defined struct. -type IVerifierContext struct { - MetaHash [32]byte - BlobHash [32]byte - Prover common.Address - BlockId uint64 - IsContesting bool - BlobUsed bool - MsgSender common.Address -} - -// TaikoDataTierProof is an auto generated low-level Go binding around an user-defined struct. -type TaikoDataTierProof struct { - Tier uint16 - Data []byte -} - // GuardianProverMetaData contains all meta data concerning the GuardianProver contract. var GuardianProverMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approvals\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"approvalBits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_meta\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"approved_\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"guardianIds\",\"inputs\":[{\"name\":\"guardian\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardians\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestProofHash\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGuardians\",\"inputs\":[{\"name\":\"_newGuardians\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_minGuardians\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"_clearData\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approved\",\"inputs\":[{\"name\":\"operationId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"approvalBits\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"minGuardiansReached\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConflictingProofs\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"guardian\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"currentProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardianApproval\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"proofData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardiansUpdated\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"guardians\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", diff --git a/packages/taiko-client/bindings/gen_lib_proposing.go b/packages/taiko-client/bindings/gen_lib_proposing.go index 7a496d99912..7feaceb0e4f 100644 --- a/packages/taiko-client/bindings/gen_lib_proposing.go +++ b/packages/taiko-client/bindings/gen_lib_proposing.go @@ -31,7 +31,7 @@ var ( // LibProposingMetaData contains all meta data concerning the LibProposing contract. var LibProposingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_SAME_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]}]", } // LibProposingABI is the input ABI used to generate the binding from. diff --git a/packages/taiko-client/bindings/gen_lib_utils.go b/packages/taiko-client/bindings/gen_lib_utils.go index 09043e7ebba..abb7d582d5e 100644 --- a/packages/taiko-client/bindings/gen_lib_utils.go +++ b/packages/taiko-client/bindings/gen_lib_utils.go @@ -31,7 +31,7 @@ var ( // LibUtilsMetaData contains all meta data concerning the LibUtils contract. var LibUtilsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibUtilsABI is the input ABI used to generate the binding from. @@ -179,3 +179,159 @@ func (_LibUtils *LibUtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*type func (_LibUtils *LibUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { return _LibUtils.Contract.contract.Transact(opts, method, params...) } + +// LibUtilsBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the LibUtils contract. +type LibUtilsBlockVerifiedIterator struct { + Event *LibUtilsBlockVerified // 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 *LibUtilsBlockVerifiedIterator) 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(LibUtilsBlockVerified) + 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(LibUtilsBlockVerified) + 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 *LibUtilsBlockVerifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibUtilsBlockVerifiedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibUtilsBlockVerified represents a BlockVerified event raised by the LibUtils contract. +type LibUtilsBlockVerified struct { + BlockId *big.Int + Prover common.Address + BlockHash [32]byte + StateRoot [32]byte + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockVerified is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_LibUtils *LibUtilsFilterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*LibUtilsBlockVerifiedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _LibUtils.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return &LibUtilsBlockVerifiedIterator{contract: _LibUtils.contract, event: "BlockVerified", logs: logs, sub: sub}, nil +} + +// WatchBlockVerified is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_LibUtils *LibUtilsFilterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *LibUtilsBlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _LibUtils.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) + 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(LibUtilsBlockVerified) + if err := _LibUtils.contract.UnpackLog(event, "BlockVerified", 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 +} + +// ParseBlockVerified is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_LibUtils *LibUtilsFilterer) ParseBlockVerified(log types.Log) (*LibUtilsBlockVerified, error) { + event := new(LibUtilsBlockVerified) + if err := _LibUtils.contract.UnpackLog(event, "BlockVerified", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_lib_verifying.go b/packages/taiko-client/bindings/gen_lib_verifying.go index 7e8dba63910..f3733c15a21 100644 --- a/packages/taiko-client/bindings/gen_lib_verifying.go +++ b/packages/taiko-client/bindings/gen_lib_verifying.go @@ -31,7 +31,7 @@ var ( // LibVerifyingMetaData contains all meta data concerning the LibVerifying contract. var LibVerifyingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]}]", + ABI: "[{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]}]", } // LibVerifyingABI is the input ABI used to generate the binding from. @@ -179,293 +179,3 @@ func (_LibVerifying *LibVerifyingTransactorRaw) Transfer(opts *bind.TransactOpts func (_LibVerifying *LibVerifyingTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { return _LibVerifying.Contract.contract.Transact(opts, method, params...) } - -// LibVerifyingBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the LibVerifying contract. -type LibVerifyingBlockVerifiedIterator struct { - Event *LibVerifyingBlockVerified // 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 *LibVerifyingBlockVerifiedIterator) 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(LibVerifyingBlockVerified) - 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(LibVerifyingBlockVerified) - 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 *LibVerifyingBlockVerifiedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibVerifyingBlockVerifiedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibVerifyingBlockVerified represents a BlockVerified event raised by the LibVerifying contract. -type LibVerifyingBlockVerified struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - StateRoot [32]byte - Tier uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBlockVerified is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*LibVerifyingBlockVerifiedIterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibVerifying.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) - if err != nil { - return nil, err - } - return &LibVerifyingBlockVerifiedIterator{contract: _LibVerifying.contract, event: "BlockVerified", logs: logs, sub: sub}, nil -} - -// WatchBlockVerified is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *LibVerifyingBlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibVerifying.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) - 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(LibVerifyingBlockVerified) - if err := _LibVerifying.contract.UnpackLog(event, "BlockVerified", 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 -} - -// ParseBlockVerified is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) ParseBlockVerified(log types.Log) (*LibVerifyingBlockVerified, error) { - event := new(LibVerifyingBlockVerified) - if err := _LibVerifying.contract.UnpackLog(event, "BlockVerified", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// LibVerifyingStateVariablesUpdatedIterator is returned from FilterStateVariablesUpdated and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated events raised by the LibVerifying contract. -type LibVerifyingStateVariablesUpdatedIterator struct { - Event *LibVerifyingStateVariablesUpdated // 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 *LibVerifyingStateVariablesUpdatedIterator) 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(LibVerifyingStateVariablesUpdated) - 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(LibVerifyingStateVariablesUpdated) - 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 *LibVerifyingStateVariablesUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibVerifyingStateVariablesUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibVerifyingStateVariablesUpdated represents a StateVariablesUpdated event raised by the LibVerifying contract. -type LibVerifyingStateVariablesUpdated struct { - SlotB TaikoDataSlotB - Raw types.Log // Blockchain specific contextual infos -} - -// FilterStateVariablesUpdated is a free log retrieval operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. -// -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) -func (_LibVerifying *LibVerifyingFilterer) FilterStateVariablesUpdated(opts *bind.FilterOpts) (*LibVerifyingStateVariablesUpdatedIterator, error) { - - logs, sub, err := _LibVerifying.contract.FilterLogs(opts, "StateVariablesUpdated") - if err != nil { - return nil, err - } - return &LibVerifyingStateVariablesUpdatedIterator{contract: _LibVerifying.contract, event: "StateVariablesUpdated", logs: logs, sub: sub}, nil -} - -// WatchStateVariablesUpdated is a free log subscription operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. -// -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) -func (_LibVerifying *LibVerifyingFilterer) WatchStateVariablesUpdated(opts *bind.WatchOpts, sink chan<- *LibVerifyingStateVariablesUpdated) (event.Subscription, error) { - - logs, sub, err := _LibVerifying.contract.WatchLogs(opts, "StateVariablesUpdated") - 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(LibVerifyingStateVariablesUpdated) - if err := _LibVerifying.contract.UnpackLog(event, "StateVariablesUpdated", 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 -} - -// ParseStateVariablesUpdated is a log parse operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. -// -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) -func (_LibVerifying *LibVerifyingFilterer) ParseStateVariablesUpdated(log types.Log) (*LibVerifyingStateVariablesUpdated, error) { - event := new(LibVerifyingStateVariablesUpdated) - if err := _LibVerifying.contract.UnpackLog(event, "StateVariablesUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/packages/taiko-client/bindings/gen_sgx_verifier.go b/packages/taiko-client/bindings/gen_sgx_verifier.go index f8923ffefa9..f3ff321993a 100644 --- a/packages/taiko-client/bindings/gen_sgx_verifier.go +++ b/packages/taiko-client/bindings/gen_sgx_verifier.go @@ -29,6 +29,23 @@ var ( _ = abi.ConvertType ) +// IVerifierContext is an auto generated low-level Go binding around an user-defined struct. +type IVerifierContext struct { + MetaHash [32]byte + BlobHash [32]byte + Prover common.Address + BlockId uint64 + IsContesting bool + BlobUsed bool + MsgSender common.Address +} + +// TaikoDataTierProof is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTierProof struct { + Tier uint16 + Data []byte +} + // V3StructCertificationData is an auto generated low-level Go binding around an user-defined struct. type V3StructCertificationData struct { CertType uint16 diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index 0dfb159244c..468e9dd75bb 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -61,14 +61,14 @@ type TaikoDataBlockMetadata struct { // TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. type TaikoDataConfig struct { - ChainId uint64 - BlockMaxProposals uint64 - BlockRingBufferSize uint64 - MaxBlocksToVerifyPerProposal uint64 - BlockMaxGasLimit uint32 - LivenessBond *big.Int - BlockSyncThreshold uint8 - CheckEOAForCalldataDA bool + ChainId uint64 + BlockMaxProposals uint64 + BlockRingBufferSize uint64 + MaxBlocksToVerify uint64 + BlockMaxGasLimit uint32 + LivenessBond *big.Int + StateRootSyncInternal uint8 + CheckEOAForCalldataDA bool } // TaikoDataEthDeposit is an auto generated low-level Go binding around an user-defined struct. @@ -116,11 +116,12 @@ type TaikoDataTransitionState struct { ContestBond *big.Int Timestamp uint64 Tier uint16 + Reserved1 uint8 } // TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. var TaikoL1ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockSyncThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"checkEOAForCalldataDA\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resetGenesisHash\",\"inputs\":[{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotA\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_SAME_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NO_HOOKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"checkEOAForCalldataDA\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NO_HOOKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ClientABI is the input ABI used to generate the binding from. @@ -333,7 +334,7 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) GetBlock(_blockId uint64) (Tai // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) +// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) func (_TaikoL1Client *TaikoL1ClientCaller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1Client.contract.Call(opts, &out, "getConfig") @@ -350,18 +351,118 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetConfig(opts *bind.CallOpts) (Taiko // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) +// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) func (_TaikoL1Client *TaikoL1ClientSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1Client.Contract.GetConfig(&_TaikoL1Client.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) +// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) func (_TaikoL1Client *TaikoL1ClientCallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1Client.Contract.GetConfig(&_TaikoL1Client.CallOpts) } +// GetLastSyncedBlock is a free data retrieval call binding the contract method 0x9413caa9. +// +// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +func (_TaikoL1Client *TaikoL1ClientCaller) GetLastSyncedBlock(opts *bind.CallOpts) (struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte +}, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getLastSyncedBlock") + + outstruct := new(struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.BlockId = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.BlockHash = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.StateRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// GetLastSyncedBlock is a free data retrieval call binding the contract method 0x9413caa9. +// +// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +func (_TaikoL1Client *TaikoL1ClientSession) GetLastSyncedBlock() (struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte +}, error) { + return _TaikoL1Client.Contract.GetLastSyncedBlock(&_TaikoL1Client.CallOpts) +} + +// GetLastSyncedBlock is a free data retrieval call binding the contract method 0x9413caa9. +// +// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetLastSyncedBlock() (struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte +}, error) { + return _TaikoL1Client.Contract.GetLastSyncedBlock(&_TaikoL1Client.CallOpts) +} + +// GetLastVerifiedBlock is a free data retrieval call binding the contract method 0x26af7986. +// +// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +func (_TaikoL1Client *TaikoL1ClientCaller) GetLastVerifiedBlock(opts *bind.CallOpts) (struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte +}, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getLastVerifiedBlock") + + outstruct := new(struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.BlockId = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.BlockHash = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.StateRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// GetLastVerifiedBlock is a free data retrieval call binding the contract method 0x26af7986. +// +// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +func (_TaikoL1Client *TaikoL1ClientSession) GetLastVerifiedBlock() (struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte +}, error) { + return _TaikoL1Client.Contract.GetLastVerifiedBlock(&_TaikoL1Client.CallOpts) +} + +// GetLastVerifiedBlock is a free data retrieval call binding the contract method 0x26af7986. +// +// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetLastVerifiedBlock() (struct { + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte +}, error) { + return _TaikoL1Client.Contract.GetLastVerifiedBlock(&_TaikoL1Client.CallOpts) +} + // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // // Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint8,uint16,uint32,uint64)) @@ -396,7 +497,7 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) GetStateVariables() (TaikoData // GetTransition is a free data retrieval call binding the contract method 0x563479a5. // -// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16)) +// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) func (_TaikoL1Client *TaikoL1ClientCaller) GetTransition(opts *bind.CallOpts, _blockId uint64, _tid uint32) (TaikoDataTransitionState, error) { var out []interface{} err := _TaikoL1Client.contract.Call(opts, &out, "getTransition", _blockId, _tid) @@ -413,21 +514,21 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetTransition(opts *bind.CallOpts, _b // GetTransition is a free data retrieval call binding the contract method 0x563479a5. // -// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16)) +// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) func (_TaikoL1Client *TaikoL1ClientSession) GetTransition(_blockId uint64, _tid uint32) (TaikoDataTransitionState, error) { return _TaikoL1Client.Contract.GetTransition(&_TaikoL1Client.CallOpts, _blockId, _tid) } // GetTransition is a free data retrieval call binding the contract method 0x563479a5. // -// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16)) +// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransition(_blockId uint64, _tid uint32) (TaikoDataTransitionState, error) { return _TaikoL1Client.Contract.GetTransition(&_TaikoL1Client.CallOpts, _blockId, _tid) } // GetTransition0 is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16)) +// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) func (_TaikoL1Client *TaikoL1ClientCaller) GetTransition0(opts *bind.CallOpts, _blockId uint64, _parentHash [32]byte) (TaikoDataTransitionState, error) { var out []interface{} err := _TaikoL1Client.contract.Call(opts, &out, "getTransition0", _blockId, _parentHash) @@ -444,14 +545,14 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetTransition0(opts *bind.CallOpts, _ // GetTransition0 is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16)) +// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) func (_TaikoL1Client *TaikoL1ClientSession) GetTransition0(_blockId uint64, _parentHash [32]byte) (TaikoDataTransitionState, error) { return _TaikoL1Client.Contract.GetTransition0(&_TaikoL1Client.CallOpts, _blockId, _parentHash) } // GetTransition0 is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16)) +// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransition0(_blockId uint64, _parentHash [32]byte) (TaikoDataTransitionState, error) { return _TaikoL1Client.Contract.GetTransition0(&_TaikoL1Client.CallOpts, _blockId, _parentHash) } @@ -735,68 +836,6 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) Resolve0(_name [32]byte, _allo return _TaikoL1Client.Contract.Resolve0(&_TaikoL1Client.CallOpts, _name, _allowZeroAddress) } -// SlotA is a free data retrieval call binding the contract method 0xc7821568. -// -// Solidity: function slotA() view returns((uint64,uint64,uint64,uint64)) -func (_TaikoL1Client *TaikoL1ClientCaller) SlotA(opts *bind.CallOpts) (TaikoDataSlotA, error) { - var out []interface{} - err := _TaikoL1Client.contract.Call(opts, &out, "slotA") - - if err != nil { - return *new(TaikoDataSlotA), err - } - - out0 := *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) - - return out0, err - -} - -// SlotA is a free data retrieval call binding the contract method 0xc7821568. -// -// Solidity: function slotA() view returns((uint64,uint64,uint64,uint64)) -func (_TaikoL1Client *TaikoL1ClientSession) SlotA() (TaikoDataSlotA, error) { - return _TaikoL1Client.Contract.SlotA(&_TaikoL1Client.CallOpts) -} - -// SlotA is a free data retrieval call binding the contract method 0xc7821568. -// -// Solidity: function slotA() view returns((uint64,uint64,uint64,uint64)) -func (_TaikoL1Client *TaikoL1ClientCallerSession) SlotA() (TaikoDataSlotA, error) { - return _TaikoL1Client.Contract.SlotA(&_TaikoL1Client.CallOpts) -} - -// SlotB is a free data retrieval call binding the contract method 0x19e8dce2. -// -// Solidity: function slotB() view returns((uint64,uint64,bool,uint8,uint16,uint32,uint64)) -func (_TaikoL1Client *TaikoL1ClientCaller) SlotB(opts *bind.CallOpts) (TaikoDataSlotB, error) { - var out []interface{} - err := _TaikoL1Client.contract.Call(opts, &out, "slotB") - - if err != nil { - return *new(TaikoDataSlotB), err - } - - out0 := *abi.ConvertType(out[0], new(TaikoDataSlotB)).(*TaikoDataSlotB) - - return out0, err - -} - -// SlotB is a free data retrieval call binding the contract method 0x19e8dce2. -// -// Solidity: function slotB() view returns((uint64,uint64,bool,uint8,uint16,uint32,uint64)) -func (_TaikoL1Client *TaikoL1ClientSession) SlotB() (TaikoDataSlotB, error) { - return _TaikoL1Client.Contract.SlotB(&_TaikoL1Client.CallOpts) -} - -// SlotB is a free data retrieval call binding the contract method 0x19e8dce2. -// -// Solidity: function slotB() view returns((uint64,uint64,bool,uint8,uint16,uint32,uint64)) -func (_TaikoL1Client *TaikoL1ClientCallerSession) SlotB() (TaikoDataSlotB, error) { - return _TaikoL1Client.Contract.SlotB(&_TaikoL1Client.CallOpts) -} - // State is a free data retrieval call binding the contract method 0xc19d93fb. // // Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) @@ -1015,27 +1054,6 @@ func (_TaikoL1Client *TaikoL1ClientTransactorSession) RenounceOwnership() (*type return _TaikoL1Client.Contract.RenounceOwnership(&_TaikoL1Client.TransactOpts) } -// ResetGenesisHash is a paid mutator transaction binding the contract method 0xb008bedb. -// -// Solidity: function resetGenesisHash(bytes32 _genesisBlockHash) returns() -func (_TaikoL1Client *TaikoL1ClientTransactor) ResetGenesisHash(opts *bind.TransactOpts, _genesisBlockHash [32]byte) (*types.Transaction, error) { - return _TaikoL1Client.contract.Transact(opts, "resetGenesisHash", _genesisBlockHash) -} - -// ResetGenesisHash is a paid mutator transaction binding the contract method 0xb008bedb. -// -// Solidity: function resetGenesisHash(bytes32 _genesisBlockHash) returns() -func (_TaikoL1Client *TaikoL1ClientSession) ResetGenesisHash(_genesisBlockHash [32]byte) (*types.Transaction, error) { - return _TaikoL1Client.Contract.ResetGenesisHash(&_TaikoL1Client.TransactOpts, _genesisBlockHash) -} - -// ResetGenesisHash is a paid mutator transaction binding the contract method 0xb008bedb. -// -// Solidity: function resetGenesisHash(bytes32 _genesisBlockHash) returns() -func (_TaikoL1Client *TaikoL1ClientTransactorSession) ResetGenesisHash(_genesisBlockHash [32]byte) (*types.Transaction, error) { - return _TaikoL1Client.Contract.ResetGenesisHash(&_TaikoL1Client.TransactOpts, _genesisBlockHash) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -3041,140 +3059,6 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseStateVariablesUpdated(log type return event, nil } -// TaikoL1ClientStateVariablesUpdated0Iterator is returned from FilterStateVariablesUpdated0 and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated0 events raised by the TaikoL1Client contract. -type TaikoL1ClientStateVariablesUpdated0Iterator struct { - Event *TaikoL1ClientStateVariablesUpdated0 // 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 *TaikoL1ClientStateVariablesUpdated0Iterator) 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(TaikoL1ClientStateVariablesUpdated0) - 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(TaikoL1ClientStateVariablesUpdated0) - 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 *TaikoL1ClientStateVariablesUpdated0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1ClientStateVariablesUpdated0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1ClientStateVariablesUpdated0 represents a StateVariablesUpdated0 event raised by the TaikoL1Client contract. -type TaikoL1ClientStateVariablesUpdated0 struct { - SlotB TaikoDataSlotB - Raw types.Log // Blockchain specific contextual infos -} - -// FilterStateVariablesUpdated0 is a free log retrieval operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. -// -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterStateVariablesUpdated0(opts *bind.FilterOpts) (*TaikoL1ClientStateVariablesUpdated0Iterator, error) { - - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "StateVariablesUpdated0") - if err != nil { - return nil, err - } - return &TaikoL1ClientStateVariablesUpdated0Iterator{contract: _TaikoL1Client.contract, event: "StateVariablesUpdated0", logs: logs, sub: sub}, nil -} - -// WatchStateVariablesUpdated0 is a free log subscription operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. -// -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchStateVariablesUpdated0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientStateVariablesUpdated0) (event.Subscription, error) { - - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "StateVariablesUpdated0") - 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(TaikoL1ClientStateVariablesUpdated0) - if err := _TaikoL1Client.contract.UnpackLog(event, "StateVariablesUpdated0", 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 -} - -// ParseStateVariablesUpdated0 is a log parse operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. -// -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseStateVariablesUpdated0(log types.Log) (*TaikoL1ClientStateVariablesUpdated0, error) { - event := new(TaikoL1ClientStateVariablesUpdated0) - if err := _TaikoL1Client.contract.UnpackLog(event, "StateVariablesUpdated0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL1ClientTransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the TaikoL1Client contract. type TaikoL1ClientTransitionContestedIterator struct { Event *TaikoL1ClientTransitionContested // Event containing the contract specifics and raw log diff --git a/packages/taiko-client/bindings/gen_taiko_token.go b/packages/taiko-client/bindings/gen_taiko_token.go index 49f9bc2ae77..28754d3b031 100644 --- a/packages/taiko-client/bindings/gen_taiko_token.go +++ b/packages/taiko-client/bindings/gen_taiko_token.go @@ -37,7 +37,7 @@ type ERC20VotesUpgradeableCheckpoint struct { // TaikoTokenMetaData contains all meta data concerning the TaikoToken contract. var TaikoTokenMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchTransfer\",\"inputs\":[{\"name\":\"recipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoTokenABI is the input ABI used to generate the binding from. @@ -1104,6 +1104,27 @@ func (_TaikoToken *TaikoTokenTransactorSession) Approve(spender common.Address, return _TaikoToken.Contract.Approve(&_TaikoToken.TransactOpts, spender, amount) } +// BatchTransfer is a paid mutator transaction binding the contract method 0x88d695b2. +// +// Solidity: function batchTransfer(address[] recipients, uint256[] amounts) returns(bool) +func (_TaikoToken *TaikoTokenTransactor) BatchTransfer(opts *bind.TransactOpts, recipients []common.Address, amounts []*big.Int) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "batchTransfer", recipients, amounts) +} + +// BatchTransfer is a paid mutator transaction binding the contract method 0x88d695b2. +// +// Solidity: function batchTransfer(address[] recipients, uint256[] amounts) returns(bool) +func (_TaikoToken *TaikoTokenSession) BatchTransfer(recipients []common.Address, amounts []*big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.BatchTransfer(&_TaikoToken.TransactOpts, recipients, amounts) +} + +// BatchTransfer is a paid mutator transaction binding the contract method 0x88d695b2. +// +// Solidity: function batchTransfer(address[] recipients, uint256[] amounts) returns(bool) +func (_TaikoToken *TaikoTokenTransactorSession) BatchTransfer(recipients []common.Address, amounts []*big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.BatchTransfer(&_TaikoToken.TransactOpts, recipients, amounts) +} + // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. // // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) diff --git a/packages/taiko-client/cmd/flags/common.go b/packages/taiko-client/cmd/flags/common.go index c4035595912..da6c4247122 100644 --- a/packages/taiko-client/cmd/flags/common.go +++ b/packages/taiko-client/cmd/flags/common.go @@ -149,12 +149,6 @@ var ( Value: 12 * time.Second, EnvVars: []string{"RPC_TIMEOUT"}, } - AssignmentHookAddress = &cli.StringFlag{ - Name: "assignmentHookAddress", - Usage: "Address of the AssignmentHook contract", - Category: commonCategory, - EnvVars: []string{"ASSIGNMENT_HOOK_ADDRESS"}, - } ProverSetAddress = &cli.StringFlag{ Name: "proverSet", Usage: "ProverSet contract `address`", diff --git a/packages/taiko-client/cmd/flags/proposer.go b/packages/taiko-client/cmd/flags/proposer.go index d47399e6fbc..c1bb98dc313 100644 --- a/packages/taiko-client/cmd/flags/proposer.go +++ b/packages/taiko-client/cmd/flags/proposer.go @@ -163,7 +163,6 @@ var ProposerFlags = MergeFlags(CommonFlags, []cli.Flag{ TierFeePriceBump, MaxTierFeePriceBumps, ProposeBlockIncludeParentMetaHash, - AssignmentHookAddress, BlobAllowed, L1BlockBuilderTip, }, TxmgrFlags) diff --git a/packages/taiko-client/cmd/flags/prover.go b/packages/taiko-client/cmd/flags/prover.go index b3789287f7f..eb821348d1c 100644 --- a/packages/taiko-client/cmd/flags/prover.go +++ b/packages/taiko-client/cmd/flags/prover.go @@ -231,7 +231,6 @@ var ProverFlags = MergeFlags(CommonFlags, []cli.Flag{ MaxProposedIn, TaikoTokenAddress, MaxAcceptableBlockSlippage, - AssignmentHookAddress, Allowance, L1NodeVersion, L2NodeVersion, diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go index ff2f7d2e4b6..59ea8338714 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go @@ -209,7 +209,6 @@ func (s *BlobSyncerTestSuite) initProposer() { TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), }, - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), ProposeInterval: 1024 * time.Hour, diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go index 4b445b65781..d1d177c5ffc 100644 --- a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go @@ -60,7 +60,6 @@ func (s *ChainSyncerTestSuite) SetupTest() { TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), }, - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), ProposeInterval: 1024 * time.Hour, diff --git a/packages/taiko-client/driver/driver_test.go b/packages/taiko-client/driver/driver_test.go index 13138d2f2dd..bfa3bb1cd3a 100644 --- a/packages/taiko-client/driver/driver_test.go +++ b/packages/taiko-client/driver/driver_test.go @@ -305,7 +305,6 @@ func (s *DriverTestSuite) InitProposer() { TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), }, - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), ProposeInterval: 1024 * time.Hour, diff --git a/packages/taiko-client/integration_test/entrypoint.sh b/packages/taiko-client/integration_test/entrypoint.sh index c878085644c..769a80004b0 100755 --- a/packages/taiko-client/integration_test/entrypoint.sh +++ b/packages/taiko-client/integration_test/entrypoint.sh @@ -29,7 +29,6 @@ check_env "L2_EXECUTION_ENGINE_AUTH_ENDPOINT" check_env "TAIKO_L1_ADDRESS" check_env "TAIKO_L2_ADDRESS" check_env "TAIKO_TOKEN_ADDRESS" -check_env "ASSIGNMENT_HOOK_ADDRESS" check_env "TIMELOCK_CONTROLLER" check_env "ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS" check_env "GUARDIAN_PROVER_CONTRACT_ADDRESS" diff --git a/packages/taiko-client/integration_test/test_env.sh b/packages/taiko-client/integration_test/test_env.sh index 0ce1b01f547..5c7ff1b4490 100755 --- a/packages/taiko-client/integration_test/test_env.sh +++ b/packages/taiko-client/integration_test/test_env.sh @@ -8,7 +8,6 @@ DEPLOYMENT_JSON=$(cat ../protocol/deployments/deploy_l1.json) export TAIKO_L1_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.taiko' | sed 's/\"//g') export TAIKO_L2_ADDRESS=0x1670010000000000000000000000000000010001 export TAIKO_TOKEN_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.taiko_token' | sed 's/\"//g') -export ASSIGNMENT_HOOK_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.assignment_hook' | sed 's/\"//g') export TIMELOCK_CONTROLLER=$(echo "$DEPLOYMENT_JSON" | jq '.timelock_controller' | sed 's/\"//g') export ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.rollup_address_manager' | sed 's/\"//g') export GUARDIAN_PROVER_CONTRACT_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.guardian_prover' | sed 's/\"//g') @@ -35,7 +34,6 @@ TAIKO_L1_ADDRESS=$TAIKO_L1_ADDRESS TAIKO_L2_ADDRESS=$TAIKO_L2_ADDRESS TAIKO_TOKEN_ADDRESS=$TAIKO_TOKEN_ADDRESS PROVER_SET_ADDRESS=$PROVER_SET_ADDRESS -ASSIGNMENT_HOOK_ADDRESS=$ASSIGNMENT_HOOK_ADDRESS TIMELOCK_CONTROLLER=$TIMELOCK_CONTROLLER ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS=$ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS GUARDIAN_PROVER_CONTRACT_ADDRESS=$GUARDIAN_PROVER_CONTRACT_ADDRESS diff --git a/packages/taiko-client/internal/testutils/helper.go b/packages/taiko-client/internal/testutils/helper.go index a1f3cc05356..63bb78adec1 100644 --- a/packages/taiko-client/internal/testutils/helper.go +++ b/packages/taiko-client/internal/testutils/helper.go @@ -229,19 +229,18 @@ func (s *ClientTestSuite) NewTestProverServer( s.Nil(err) srv, err := server.New(&server.NewProverServerOpts{ - ProverPrivateKey: proverPrivKey, - MinOptimisticTierFee: common.Big1, - MinSgxTierFee: common.Big1, - MinSgxAndZkVMTierFee: common.Big1, - MinEthBalance: common.Big1, - MinTaikoTokenBalance: common.Big1, - MaxExpiry: 24 * time.Hour, - TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), - ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), - RPC: s.RPCClient, - ProtocolConfigs: &protocolConfig, - LivenessBond: protocolConfig.LivenessBond, + ProverPrivateKey: proverPrivKey, + MinOptimisticTierFee: common.Big1, + MinSgxTierFee: common.Big1, + MinSgxAndZkVMTierFee: common.Big1, + MinEthBalance: common.Big1, + MinTaikoTokenBalance: common.Big1, + MaxExpiry: 24 * time.Hour, + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), + RPC: s.RPCClient, + ProtocolConfigs: &protocolConfig, + LivenessBond: protocolConfig.LivenessBond, }) s.Nil(err) diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go index f7d701a13ef..23b1d26aca6 100644 --- a/packages/taiko-client/internal/testutils/suite.go +++ b/packages/taiko-client/internal/testutils/suite.go @@ -130,10 +130,18 @@ func (s *ClientTestSuite) SetupTest() { ) s.Nil(err) - data, err := encoding.ProverSetABI.Pack("enableProver", crypto.PubkeyToAddress(l1ProverPrivKey.PublicKey), true) + proverSetAddress := common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")) + + data, err := encoding.ProverSetABI.Pack("enableProver", crypto.PubkeyToAddress(s.TestAddrPrivKey.PublicKey), true) + s.Nil(err) + _, err = t.Send(context.Background(), txmgr.TxCandidate{ + TxData: data, + To: &proverSetAddress, + }) s.Nil(err) - proverSetAddress := common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")) + data, err = encoding.ProverSetABI.Pack("enableProver", crypto.PubkeyToAddress(l1ProverPrivKey.PublicKey), true) + s.Nil(err) _, err = t.Send(context.Background(), txmgr.TxCandidate{ TxData: data, To: &proverSetAddress, @@ -176,18 +184,6 @@ func (s *ClientTestSuite) setAllowance(key *ecdsa.PrivateKey) { ) data, err := encoding.TaikoTokenABI.Pack( - "approve", - common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), - bigInt, - ) - s.Nil(err) - _, err = t.Send(context.Background(), txmgr.TxCandidate{ - TxData: data, - To: &taikoTokenAddress, - }) - s.Nil(err) - - data, err = encoding.TaikoTokenABI.Pack( "approve", common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), bigInt, @@ -233,7 +229,7 @@ func (s *ClientTestSuite) setAllowanceForProverSet(key *ecdsa.PrivateKey) { data, err := encoding.ProverSetABI.Pack( "approveAllowance", - common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), bigInt, ) s.Nil(err) diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 6a365a4bccf..9532f63794a 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -143,7 +143,8 @@ func GetBlockProofStatus( return nil, err } - if header.Hash() != transition.BlockHash || transition.StateRoot != header.Root { + if header.Hash() != transition.BlockHash || + (transition.StateRoot != (common.Hash{}) && transition.StateRoot != header.Root) { log.Info( "Different block hash or state root detected, try submitting a contest", "localBlockHash", header.Hash(), diff --git a/packages/taiko-client/proposer/config.go b/packages/taiko-client/proposer/config.go index 109de461ada..3c61fa4aa6a 100644 --- a/packages/taiko-client/proposer/config.go +++ b/packages/taiko-client/proposer/config.go @@ -24,8 +24,6 @@ import ( // Config contains all configurations to initialize a Taiko proposer. type Config struct { *rpc.ClientConfig - AssignmentHookAddress common.Address - ProverSetAddress common.Address L1ProposerPrivKey *ecdsa.PrivateKey L2SuggestedFeeRecipient common.Address ExtraData string @@ -105,9 +103,8 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { JwtSecret: string(jwtSecret), TaikoTokenAddress: common.HexToAddress(c.String(flags.TaikoTokenAddress.Name)), Timeout: c.Duration(flags.RPCTimeout.Name), + ProverSetAddress: common.HexToAddress(c.String(flags.ProverSetAddress.Name)), }, - AssignmentHookAddress: common.HexToAddress(c.String(flags.AssignmentHookAddress.Name)), - ProverSetAddress: common.HexToAddress(c.String(flags.ProverSetAddress.Name)), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(l2SuggestedFeeRecipient), ExtraData: c.String(flags.ExtraData.Name), diff --git a/packages/taiko-client/proposer/config_test.go b/packages/taiko-client/proposer/config_test.go index 47707e55d56..6fd9b587a5d 100644 --- a/packages/taiko-client/proposer/config_test.go +++ b/packages/taiko-client/proposer/config_test.go @@ -143,7 +143,6 @@ func (s *ProposerTestSuite) SetupApp() *cli.App { &cli.Uint64Flag{Name: flags.TierFeePriceBump.Name}, &cli.Uint64Flag{Name: flags.MaxTierFeePriceBumps.Name}, &cli.BoolFlag{Name: flags.ProposeBlockIncludeParentMetaHash.Name}, - &cli.StringFlag{Name: flags.AssignmentHookAddress.Name}, } app.Flags = append(app.Flags, flags.TxmgrFlags...) app.Action = func(ctx *cli.Context) error { diff --git a/packages/taiko-client/proposer/proposer.go b/packages/taiko-client/proposer/proposer.go index 0cd3a9eccbc..6808e35caf5 100644 --- a/packages/taiko-client/proposer/proposer.go +++ b/packages/taiko-client/proposer/proposer.go @@ -27,11 +27,6 @@ import ( builder "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/transaction_builder" ) -var ( - proverAssignmentTimeout = 30 * time.Minute - requestProverServerTimeout = 12 * time.Second -) - // Proposer keep proposing new transactions from L2 execution engine's tx pool at a fixed interval. type Proposer struct { // configurations @@ -118,13 +113,10 @@ func (p *Proposer) InitFromConfig(ctx context.Context, cfg *Config) (err error) p.proposerAddress, cfg.TaikoL1Address, cfg.ProverSetAddress, - cfg.AssignmentHookAddress, p.tierFees, cfg.TierFeePriceBump, cfg.ProverEndpoints, cfg.MaxTierFeePriceBumps, - proverAssignmentTimeout, - requestProverServerTimeout, ); err != nil { return err } @@ -138,7 +130,6 @@ func (p *Proposer) InitFromConfig(ctx context.Context, cfg *Config) (err error) cfg.TaikoL1Address, cfg.ProverSetAddress, cfg.L2SuggestedFeeRecipient, - cfg.AssignmentHookAddress, cfg.ProposeBlockTxGasLimit, cfg.ExtraData, ) @@ -151,7 +142,6 @@ func (p *Proposer) InitFromConfig(ctx context.Context, cfg *Config) (err error) cfg.L2SuggestedFeeRecipient, cfg.TaikoL1Address, cfg.ProverSetAddress, - cfg.AssignmentHookAddress, cfg.ProposeBlockTxGasLimit, cfg.ExtraData, ) diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index 72f5c7d7012..e75f86242da 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -74,7 +74,6 @@ func (s *ProposerTestSuite) SetupTest() { TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), }, - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), MinProposingInternal: 0, @@ -123,7 +122,6 @@ func (s *ProposerTestSuite) TestProposeTxLists() { cfg.TaikoL1Address, cfg.ProverSetAddress, cfg.L2SuggestedFeeRecipient, - cfg.AssignmentHookAddress, cfg.ProposeBlockTxGasLimit, cfg.ExtraData, ) @@ -262,7 +260,7 @@ func (s *ProposerTestSuite) TestAssignProverSuccessFirstRound() { s.SetL1Automine(false) defer s.SetL1Automine(true) - _, _, fee, err := s.p.proverSelector.AssignProver(context.Background(), s.p.tierFees, testutils.RandomHash()) + fee, err := s.p.proverSelector.AssignProver(context.Background(), s.p.tierFees) s.Nil(err) s.Equal(fee.Uint64(), s.p.OptimisticTierFee.Uint64()) diff --git a/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go index bbd472c5afd..1d7dd28f188 100644 --- a/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go +++ b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go @@ -5,18 +5,14 @@ import ( "errors" "fmt" "math/big" - "math/rand" "net/url" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" - "github.com/go-resty/resty/v2" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/server" ) var ( @@ -34,13 +30,10 @@ type ETHFeeEOASelector struct { proposerAddress common.Address taikoL1Address common.Address proverSetAddress common.Address - assignmentHookAddress common.Address tiersFee []encoding.TierFee tierFeePriceBump *big.Int proverEndpoints []*url.URL maxTierFeePriceBumpIterations uint64 - proposalExpiry time.Duration - requestTimeout time.Duration } // NewETHFeeEOASelector creates a new ETHFeeEOASelector instance. @@ -50,13 +43,10 @@ func NewETHFeeEOASelector( proposerAddress common.Address, taikoL1Address common.Address, proverSetAddress common.Address, - assignmentHookAddress common.Address, tiersFee []encoding.TierFee, tierFeePriceBump *big.Int, proverEndpoints []*url.URL, maxTierFeePriceBumpIterations uint64, - proposalExpiry time.Duration, - requestTimeout time.Duration, ) (*ETHFeeEOASelector, error) { if len(proverEndpoints) == 0 { return nil, errEmptyProverEndpoints @@ -74,13 +64,10 @@ func NewETHFeeEOASelector( proposerAddress, taikoL1Address, proverSetAddress, - assignmentHookAddress, tiersFee, tierFeePriceBump, proverEndpoints, maxTierFeePriceBumpIterations, - proposalExpiry, - requestTimeout, }, nil } @@ -91,10 +78,8 @@ func (s *ETHFeeEOASelector) ProverEndpoints() []*url.URL { return s.proverEndpoi func (s *ETHFeeEOASelector) AssignProver( ctx context.Context, tierFees []encoding.TierFee, - txListHash common.Hash, -) (*encoding.ProverAssignment, common.Address, *big.Int, error) { +) (*big.Int, error) { var ( - expiry = uint64(time.Now().Add(s.proposalExpiry).Unix()) fees = make([]encoding.TierFee, len(tierFees)) big100 = new(big.Int).SetUint64(uint64(100)) maxProverFee = common.Big0 @@ -121,157 +106,29 @@ func (s *ETHFeeEOASelector) AssignProver( } } - // Try to assign a prover from all given endpoints. - for _, endpoint := range s.shuffleProverEndpoints() { - encodedAssignment, proverAddress, err := assignProver( - ctx, - s.protocolConfigs.ChainId, - endpoint, - expiry, - s.proposerAddress, - fees, - s.taikoL1Address, - s.assignmentHookAddress, - txListHash, - s.requestTimeout, - ) - if err != nil { - log.Warn("Failed to assign prover", "endpoint", endpoint, "error", err) - continue - } - - spender := s.assignmentHookAddress - if s.proverSetAddress != rpc.ZeroAddress && s.proverSetAddress == proverAddress { - spender = s.taikoL1Address - } - - ok, err := rpc.CheckProverBalance( - ctx, - s.rpc, - proverAddress, - spender, - s.protocolConfigs.LivenessBond, - ) - if err != nil { - log.Warn("Failed to check prover balance", "endpoint", endpoint, "error", err) - continue - } - if !ok { - continue - } - - return encodedAssignment, proverAddress, maxProverFee, nil + spender := s.taikoL1Address + proverAddress := s.proposerAddress + if s.proverSetAddress != rpc.ZeroAddress { + proverAddress = s.proverSetAddress } - } - return nil, common.Address{}, nil, errUnableToFindProver -} - -// shuffleProverEndpoints shuffles the current selector's prover endpoints. -func (s *ETHFeeEOASelector) shuffleProverEndpoints() []*url.URL { - // Clone the slice to avoid modifying the original proverEndpoints - shuffledEndpoints := make([]*url.URL, len(s.proverEndpoints)) - copy(shuffledEndpoints, s.proverEndpoints) - - rand.Shuffle(len(shuffledEndpoints), func(i, j int) { - shuffledEndpoints[i], shuffledEndpoints[j] = shuffledEndpoints[j], shuffledEndpoints[i] - }) - return shuffledEndpoints -} - -// assignProver tries to assign a proof generation task to the given prover by HTTP API. -func assignProver( - ctx context.Context, - chainID uint64, - endpoint *url.URL, - expiry uint64, - proposerAddress common.Address, - tierFees []encoding.TierFee, - taikoL1Address common.Address, - assignmentHookAddress common.Address, - txListHash common.Hash, - timeout time.Duration, -) (*encoding.ProverAssignment, common.Address, error) { - log.Info( - "Attempting to assign prover", - "endpoint", endpoint, - "expiry", expiry, - "txListHash", txListHash, - "tierFees", tierFees, - ) - - // Send the HTTP request - var ( - client = resty.New() - reqBody = &server.CreateAssignmentRequestBody{ - Proposer: proposerAddress, - FeeToken: rpc.ZeroAddress, - TierFees: tierFees, - Expiry: expiry, - BlobHash: txListHash, + ok, err := rpc.CheckProverBalance( + ctx, + s.rpc, + proverAddress, + spender, + s.protocolConfigs.LivenessBond, + ) + if err != nil { + log.Warn("Failed to check prover balance", "error", err) + continue + } + if !ok { + continue } - result = server.ProposeBlockResponse{} - ) - requestURL, err := url.JoinPath(endpoint.String(), "/assignment") - if err != nil { - return nil, common.Address{}, err - } - - ctxTimeout, cancel := context.WithTimeout(ctx, timeout) - defer cancel() - - resp, err := client.R(). - SetContext(ctxTimeout). - SetHeader("Content-Type", "application/json"). - SetHeader("Accept", "application/json"). - SetBody(reqBody). - SetResult(&result). - Post(requestURL) - if err != nil { - return nil, common.Address{}, err - } - if !resp.IsSuccess() { - return nil, common.Address{}, fmt.Errorf("unsuccessful response %d", resp.StatusCode()) - } - // Ensure prover in response is the same as the one recovered - // from the signature - _, err = encoding.EncodeProverAssignmentPayload( - chainID, - taikoL1Address, - assignmentHookAddress, - proposerAddress, - result.Prover, - txListHash, - common.Address{}, - expiry, - result.MaxBlockID, - result.MaxProposedIn, - tierFees, - ) - if err != nil { - return nil, common.Address{}, err + return maxProverFee, nil } - log.Info( - "Prover assigned", - "address", result.Prover, - "endpoint", endpoint, - "tierFees", tierFees, - "maxBlockID", result.MaxBlockID, - "expiry", expiry, - ) - - // Convert signature to one solidity can recover by adding 27 to 65th byte - result.SignedPayload[64] = uint8(uint(result.SignedPayload[64])) + 27 - - return &encoding.ProverAssignment{ - FeeToken: common.Address{}, - TierFees: tierFees, - Expiry: reqBody.Expiry, - MaxBlockId: result.MaxBlockID, - MaxProposedIn: result.MaxProposedIn, - MetaHash: [32]byte{}, - Signature: result.SignedPayload, - }, result.Prover, nil + return nil, errUnableToFindProver } diff --git a/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go index aa156d04cc1..b8db28ff7d0 100644 --- a/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go +++ b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go @@ -1,11 +1,9 @@ package selector import ( - "context" "net/url" "os" "testing" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -40,13 +38,10 @@ func (s *ProverSelectorTestSuite) SetupTest() { crypto.PubkeyToAddress(l1ProposerPrivKey.PublicKey), common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), - common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), []encoding.TierFee{}, common.Big2, []*url.URL{s.ProverEndpoints[0]}, 32, - 1*time.Minute, - 1*time.Minute, ) s.Nil(err) } @@ -55,16 +50,6 @@ func (s *ProverSelectorTestSuite) TestProverEndpoints() { s.Equal(1, len(s.s.ProverEndpoints())) } -func (s *ProverSelectorTestSuite) TestProverAssignProver() { - sig, _, fee, err := s.s.AssignProver(context.Background(), []encoding.TierFee{ - {Tier: encoding.TierOptimisticID, Fee: common.Big256}, - {Tier: encoding.TierSgxID, Fee: common.Big256}, - }, testutils.RandomHash()) - s.Nil(err) - s.NotEmpty(sig) - s.Equal(fee.Cmp(common.Big32), 1) -} - func TestProverSelectorTestSuite(t *testing.T) { suite.Run(t, new(ProverSelectorTestSuite)) } diff --git a/packages/taiko-client/proposer/prover_selector/interface.go b/packages/taiko-client/proposer/prover_selector/interface.go index a0b55801fa7..804282e2109 100644 --- a/packages/taiko-client/proposer/prover_selector/interface.go +++ b/packages/taiko-client/proposer/prover_selector/interface.go @@ -5,8 +5,6 @@ import ( "math/big" "net/url" - "github.com/ethereum/go-ethereum/common" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" ) @@ -14,7 +12,6 @@ type ProverSelector interface { AssignProver( ctx context.Context, tierFees []encoding.TierFee, - txListHash common.Hash, - ) (assignment *encoding.ProverAssignment, assignedProver common.Address, fee *big.Int, err error) + ) (fee *big.Int, err error) ProverEndpoints() []*url.URL } diff --git a/packages/taiko-client/proposer/transaction_builder/blob.go b/packages/taiko-client/proposer/transaction_builder/blob.go index f177b923a57..2dda18194d6 100644 --- a/packages/taiko-client/proposer/transaction_builder/blob.go +++ b/packages/taiko-client/proposer/transaction_builder/blob.go @@ -27,7 +27,6 @@ type BlobTransactionBuilder struct { taikoL1Address common.Address proverSetAddress common.Address l2SuggestedFeeRecipient common.Address - assignmentHookAddress common.Address gasLimit uint64 extraData string } @@ -41,7 +40,6 @@ func NewBlobTransactionBuilder( taikoL1Address common.Address, proverSetAddress common.Address, l2SuggestedFeeRecipient common.Address, - assignmentHookAddress common.Address, gasLimit uint64, extraData string, ) *BlobTransactionBuilder { @@ -53,7 +51,6 @@ func NewBlobTransactionBuilder( taikoL1Address, proverSetAddress, l2SuggestedFeeRecipient, - assignmentHookAddress, gasLimit, extraData, } @@ -71,17 +68,10 @@ func (b *BlobTransactionBuilder) Build( return nil, err } - // Make a sidecar then calculate the blob hash. - sideCar, _, err := txmgr.MakeSidecar([]*eth.Blob{blob}) - if err != nil { - return nil, err - } - // Try to assign a prover. - assignment, assignedProver, maxFee, err := b.proverSelector.AssignProver( + maxFee, err := b.proverSelector.AssignProver( ctx, tierFees, - sideCar.BlobHashes()[0], ) if err != nil { return nil, err @@ -95,15 +85,6 @@ func (b *BlobTransactionBuilder) Build( } } - // Initially just use the AssignmentHook default. - hookInputData, err := encoding.EncodeAssignmentHookInput(&encoding.AssignmentHookInput{ - Assignment: assignment, - Tip: b.l1BlockBuilderTip, - }) - if err != nil { - return nil, err - } - commitment, err := blob.ComputeKZGCommitment() if err != nil { return nil, err @@ -117,29 +98,25 @@ func (b *BlobTransactionBuilder) Build( signature[64] = uint8(uint(signature[64])) + 27 var ( - to = &b.taikoL1Address - hookCalls = []encoding.HookCall{{Hook: b.assignmentHookAddress, Data: hookInputData}} - data []byte + to = &b.taikoL1Address + data []byte ) - if b.proverSetAddress != rpc.ZeroAddress && b.assignmentHookAddress == rpc.ZeroAddress { + if b.proverSetAddress != rpc.ZeroAddress { to = &b.proverSetAddress - hookCalls = []encoding.HookCall{} } // ABI encode the TaikoL1.proposeBlock parameters. encodedParams, err := encoding.EncodeBlockParams(&encoding.BlockParams{ - AssignedProver: assignedProver, ExtraData: rpc.StringToBytes32(b.extraData), Coinbase: b.l2SuggestedFeeRecipient, ParentMetaHash: parentMetaHash, - HookCalls: hookCalls, Signature: signature, }) if err != nil { return nil, err } - if b.proverSetAddress != rpc.ZeroAddress && b.assignmentHookAddress == rpc.ZeroAddress { + if b.proverSetAddress != rpc.ZeroAddress { data, err = encoding.ProverSetABI.Pack("proposeBlock", encodedParams, []byte{}) if err != nil { return nil, err diff --git a/packages/taiko-client/proposer/transaction_builder/calldata.go b/packages/taiko-client/proposer/transaction_builder/calldata.go index 50711dcc8ff..5fef780f53a 100644 --- a/packages/taiko-client/proposer/transaction_builder/calldata.go +++ b/packages/taiko-client/proposer/transaction_builder/calldata.go @@ -24,7 +24,6 @@ type CalldataTransactionBuilder struct { l2SuggestedFeeRecipient common.Address taikoL1Address common.Address proverSetAddress common.Address - assignmentHookAddress common.Address gasLimit uint64 extraData string } @@ -38,7 +37,6 @@ func NewCalldataTransactionBuilder( l2SuggestedFeeRecipient common.Address, taikoL1Address common.Address, proverSetAddress common.Address, - assignmentHookAddress common.Address, gasLimit uint64, extraData string, ) *CalldataTransactionBuilder { @@ -50,7 +48,6 @@ func NewCalldataTransactionBuilder( l2SuggestedFeeRecipient, taikoL1Address, proverSetAddress, - assignmentHookAddress, gasLimit, extraData, } @@ -64,10 +61,9 @@ func (b *CalldataTransactionBuilder) Build( txListBytes []byte, ) (*txmgr.TxCandidate, error) { // Try to assign a prover. - assignment, assignedProver, maxFee, err := b.proverSelector.AssignProver( + maxFee, err := b.proverSelector.AssignProver( ctx, tierFees, - crypto.Keccak256Hash(txListBytes), ) if err != nil { return nil, err @@ -81,15 +77,6 @@ func (b *CalldataTransactionBuilder) Build( } } - // Initially just use the AssignmentHook default. - hookInputData, err := encoding.EncodeAssignmentHookInput(&encoding.AssignmentHookInput{ - Assignment: assignment, - Tip: b.l1BlockBuilderTip, - }) - if err != nil { - return nil, err - } - signature, err := crypto.Sign(crypto.Keccak256(txListBytes), b.proposerPrivateKey) if err != nil { return nil, err @@ -97,29 +84,25 @@ func (b *CalldataTransactionBuilder) Build( signature[64] = uint8(uint(signature[64])) + 27 var ( - to = &b.taikoL1Address - hookCalls = []encoding.HookCall{{Hook: b.assignmentHookAddress, Data: hookInputData}} - data []byte + to = &b.taikoL1Address + data []byte ) - if b.proverSetAddress != rpc.ZeroAddress && b.assignmentHookAddress == rpc.ZeroAddress { + if b.proverSetAddress != rpc.ZeroAddress { to = &b.proverSetAddress - hookCalls = []encoding.HookCall{} } // ABI encode the TaikoL1.proposeBlock / ProverSet.proposeBlock parameters. encodedParams, err := encoding.EncodeBlockParams(&encoding.BlockParams{ - AssignedProver: assignedProver, Coinbase: b.l2SuggestedFeeRecipient, ExtraData: rpc.StringToBytes32(b.extraData), ParentMetaHash: parentMetaHash, - HookCalls: hookCalls, Signature: signature, }) if err != nil { return nil, err } - if b.proverSetAddress != rpc.ZeroAddress && b.assignmentHookAddress == rpc.ZeroAddress { + if b.proverSetAddress != rpc.ZeroAddress { data, err = encoding.ProverSetABI.Pack("proposeBlock", encodedParams, txListBytes) if err != nil { return nil, err diff --git a/packages/taiko-client/proposer/transaction_builder/common_test.go b/packages/taiko-client/proposer/transaction_builder/common_test.go index 634f43c2762..21f268ee60b 100644 --- a/packages/taiko-client/proposer/transaction_builder/common_test.go +++ b/packages/taiko-client/proposer/transaction_builder/common_test.go @@ -5,7 +5,6 @@ import ( "net/url" "os" "testing" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -37,13 +36,10 @@ func (s *TransactionBuilderTestSuite) SetupTest() { crypto.PubkeyToAddress(l1ProposerPrivKey.PublicKey), common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), - common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), []encoding.TierFee{}, common.Big2, []*url.URL{s.ProverEndpoints[0]}, 32, - 1*time.Minute, - 1*time.Minute, ) s.Nil(err) s.calldataTxBuilder = NewCalldataTransactionBuilder( @@ -54,7 +50,6 @@ func (s *TransactionBuilderTestSuite) SetupTest() { common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), - common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), 0, "test", ) @@ -66,7 +61,6 @@ func (s *TransactionBuilderTestSuite) SetupTest() { common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), - common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), 10_000_000, "test", ) diff --git a/packages/taiko-client/prover/config.go b/packages/taiko-client/prover/config.go index 3e8a4662fd0..616e7c0a727 100644 --- a/packages/taiko-client/prover/config.go +++ b/packages/taiko-client/prover/config.go @@ -28,7 +28,6 @@ type Config struct { TaikoL1Address common.Address TaikoL2Address common.Address TaikoTokenAddress common.Address - AssignmentHookAddress common.Address ProverSetAddress common.Address L1ProverPrivKey *ecdsa.PrivateKey StartingBlockID *big.Int @@ -160,7 +159,6 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { TaikoL1Address: common.HexToAddress(c.String(flags.TaikoL1Address.Name)), TaikoL2Address: common.HexToAddress(c.String(flags.TaikoL2Address.Name)), TaikoTokenAddress: common.HexToAddress(c.String(flags.TaikoTokenAddress.Name)), - AssignmentHookAddress: common.HexToAddress(c.String(flags.AssignmentHookAddress.Name)), ProverSetAddress: common.HexToAddress(c.String(flags.ProverSetAddress.Name)), L1ProverPrivKey: l1ProverPrivKey, RaikoHostEndpoint: c.String(flags.RaikoHostEndpoint.Name), diff --git a/packages/taiko-client/prover/config_test.go b/packages/taiko-client/prover/config_test.go index 8a04955028f..5176d7e3bf7 100644 --- a/packages/taiko-client/prover/config_test.go +++ b/packages/taiko-client/prover/config_test.go @@ -57,7 +57,6 @@ func (s *ProverTestSuite) TestNewConfigFromCliContextGuardianProver() { s.Nil(new(Prover).InitFromCli(context.Background(), ctx)) s.True(c.ProveUnassignedBlocks) s.Equal(uint64(100), c.MaxProposedIn) - s.Equal(os.Getenv("ASSIGNMENT_HOOK_ADDRESS"), c.AssignmentHookAddress.String()) allowanceWithDecimal, err := utils.EtherToWei(allowance) s.Nil(err) s.Equal(allowanceWithDecimal.Uint64(), c.Allowance.Uint64()) @@ -83,7 +82,6 @@ func (s *ProverTestSuite) TestNewConfigFromCliContextGuardianProver() { "--" + flags.ProverCapacity.Name, "8", "--" + flags.GuardianProverMajority.Name, os.Getenv("GUARDIAN_PROVER_CONTRACT_ADDRESS"), "--" + flags.GuardianProverMinority.Name, os.Getenv("GUARDIAN_PROVER_MINORITY_ADDRESS"), - "--" + flags.AssignmentHookAddress.Name, os.Getenv("ASSIGNMENT_HOOK_ADDRESS"), "--" + flags.Graffiti.Name, "", "--" + flags.ProveUnassignedBlocks.Name, "--" + flags.MaxProposedIn.Name, "100", @@ -124,7 +122,6 @@ func (s *ProverTestSuite) SetupApp() *cli.App { &cli.Uint64Flag{Name: flags.MinOptimisticTierFee.Name}, &cli.Uint64Flag{Name: flags.MinSgxTierFee.Name}, &cli.Uint64Flag{Name: flags.MaxProposedIn.Name}, - &cli.StringFlag{Name: flags.AssignmentHookAddress.Name}, &cli.StringFlag{Name: flags.Allowance.Name}, &cli.StringFlag{Name: flags.ContesterMode.Name}, &cli.StringFlag{Name: flags.L1NodeVersion.Name}, diff --git a/packages/taiko-client/prover/event_handler/transition_proved_test.go b/packages/taiko-client/prover/event_handler/transition_proved_test.go index fce99e240f8..3393053635f 100644 --- a/packages/taiko-client/prover/event_handler/transition_proved_test.go +++ b/packages/taiko-client/prover/event_handler/transition_proved_test.go @@ -86,7 +86,6 @@ func (s *EventHandlerTestSuite) SetupTest() { TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), }, - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), ProposeInterval: 1024 * time.Hour, diff --git a/packages/taiko-client/prover/init_test.go b/packages/taiko-client/prover/init_test.go index 25c4e320b3f..17a1557baac 100644 --- a/packages/taiko-client/prover/init_test.go +++ b/packages/taiko-client/prover/init_test.go @@ -13,7 +13,7 @@ import ( func (s *ProverTestSuite) TestSetApprovalAmount() { data, err := encoding.TaikoTokenABI.Pack( "approve", - s.p.cfg.AssignmentHookAddress, + s.p.cfg.TaikoL1Address, common.Big0, ) s.Nil(err) @@ -24,7 +24,7 @@ func (s *ProverTestSuite) TestSetApprovalAmount() { }) s.Nil(err) - allowance, err := s.p.rpc.TaikoToken.Allowance(nil, s.p.ProverAddress(), s.p.cfg.AssignmentHookAddress) + allowance, err := s.p.rpc.TaikoToken.Allowance(nil, s.p.ProverAddress(), s.p.cfg.TaikoL1Address) s.Nil(err) s.Equal(0, allowance.Cmp(common.Big0)) @@ -35,9 +35,9 @@ func (s *ProverTestSuite) TestSetApprovalAmount() { s.p.cfg.Allowance = amt - s.Nil(s.p.setApprovalAmount(context.Background(), s.p.cfg.AssignmentHookAddress)) + s.Nil(s.p.setApprovalAmount(context.Background(), s.p.cfg.TaikoL1Address)) - allowance, err = s.p.rpc.TaikoToken.Allowance(nil, s.p.ProverAddress(), s.p.cfg.AssignmentHookAddress) + allowance, err = s.p.rpc.TaikoToken.Allowance(nil, s.p.ProverAddress(), s.p.cfg.TaikoL1Address) s.Nil(err) s.Equal(0, amt.Cmp(allowance)) diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go index e5ea73015d6..95d9148d3a5 100644 --- a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go @@ -133,7 +133,6 @@ func (s *ProofSubmitterTestSuite) SetupTest() { TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), }, - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), ProposeInterval: 1024 * time.Hour, diff --git a/packages/taiko-client/prover/prover.go b/packages/taiko-client/prover/prover.go index e69f28271fc..08766bf1c66 100644 --- a/packages/taiko-client/prover/prover.go +++ b/packages/taiko-client/prover/prover.go @@ -179,20 +179,19 @@ func InitFromConfig(ctx context.Context, p *Prover, cfg *Config) (err error) { // Prover server if p.server, err = server.New(&server.NewProverServerOpts{ - ProverPrivateKey: p.cfg.L1ProverPrivKey, - ProverSetAddress: p.cfg.ProverSetAddress, - MinOptimisticTierFee: p.cfg.MinOptimisticTierFee, - MinSgxTierFee: p.cfg.MinSgxTierFee, - MinSgxAndZkVMTierFee: p.cfg.MinSgxAndZkVMTierFee, - MinEthBalance: p.cfg.MinEthBalance, - MinTaikoTokenBalance: p.cfg.MinTaikoTokenBalance, - MaxExpiry: p.cfg.MaxExpiry, - MaxBlockSlippage: p.cfg.MaxBlockSlippage, - TaikoL1Address: p.cfg.TaikoL1Address, - AssignmentHookAddress: p.cfg.AssignmentHookAddress, - RPC: p.rpc, - ProtocolConfigs: &protocolConfigs, - LivenessBond: protocolConfigs.LivenessBond, + ProverPrivateKey: p.cfg.L1ProverPrivKey, + ProverSetAddress: p.cfg.ProverSetAddress, + MinOptimisticTierFee: p.cfg.MinOptimisticTierFee, + MinSgxTierFee: p.cfg.MinSgxTierFee, + MinSgxAndZkVMTierFee: p.cfg.MinSgxAndZkVMTierFee, + MinEthBalance: p.cfg.MinEthBalance, + MinTaikoTokenBalance: p.cfg.MinTaikoTokenBalance, + MaxExpiry: p.cfg.MaxExpiry, + MaxBlockSlippage: p.cfg.MaxBlockSlippage, + TaikoL1Address: p.cfg.TaikoL1Address, + RPC: p.rpc, + ProtocolConfigs: &protocolConfigs, + LivenessBond: protocolConfigs.LivenessBond, }); err != nil { return err } @@ -229,7 +228,7 @@ func InitFromConfig(ctx context.Context, p *Prover, cfg *Config) (err error) { // Start starts the main loop of the L2 block prover. func (p *Prover) Start() error { // 1. Set approval amount for the contracts. - for _, contract := range []common.Address{p.cfg.TaikoL1Address, p.cfg.AssignmentHookAddress} { + for _, contract := range []common.Address{p.cfg.TaikoL1Address} { if err := p.setApprovalAmount(p.ctx, contract); err != nil { log.Crit("Failed to set approval amount", "contract", contract, "error", err) } diff --git a/packages/taiko-client/prover/prover_test.go b/packages/taiko-client/prover/prover_test.go index a14d1382307..6d28c6ce39b 100644 --- a/packages/taiko-client/prover/prover_test.go +++ b/packages/taiko-client/prover/prover_test.go @@ -84,7 +84,6 @@ func (s *ProverTestSuite) SetupTest() { TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), }, - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), L1ProposerPrivKey: l1ProposerPrivKey, L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), ProposeInterval: 1024 * time.Hour, @@ -136,7 +135,6 @@ func (s *ProverTestSuite) TestInitError() { TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_CONTRACT_ADDRESS")), L1ProverPrivKey: l1ProverPrivKey, Dummy: true, ProveUnassignedBlocks: true, @@ -517,7 +515,6 @@ func (s *ProverTestSuite) initProver( TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), ProverSetAddress: common.HexToAddress(os.Getenv("PROVER_SET_ADDRESS")), L1ProverPrivKey: key, Dummy: true, diff --git a/packages/taiko-client/prover/server/api.go b/packages/taiko-client/prover/server/api.go index a32e08105f0..bdf20d8ecd7 100644 --- a/packages/taiko-client/prover/server/api.go +++ b/packages/taiko-client/prover/server/api.go @@ -1,24 +1,12 @@ package server import ( - "context" - "math/big" "net/http" - "time" - "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/log" "github.com/labstack/echo/v4" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" -) - -const ( - rpcTimeout = 1 * time.Minute ) // @title Taiko Prover Server API @@ -93,213 +81,210 @@ type ProposeBlockResponse struct { // @Failure 422 {string} string "expiry too long" // @Failure 422 {string} string "prover does not have capacity" // @Router /assignment [post] -func (s *ProverServer) CreateAssignment(c echo.Context) error { - req := new(CreateAssignmentRequestBody) - if err := c.Bind(req); err != nil { - return c.JSON(http.StatusUnprocessableEntity, err) - } - - log.Info( - "Proof assignment request body", - "feeToken", req.FeeToken, - "expiry", req.Expiry, - "tierFees", req.TierFees, - "blobHash", req.BlobHash, - "currentUsedCapacity", len(s.proofSubmissionCh), - ) - - // If the prover set address is set, use it as the prover address. - prover := s.proverAddress - if s.proverSetAddress != rpc.ZeroAddress { - prover = s.proverSetAddress - } - - // 1. Check if the request body is valid. - if req.BlobHash == (common.Hash{}) { - log.Warn("Empty blob hash", "prover", s.proverAddress) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "empty blob hash") - } - if req.FeeToken != (common.Address{}) { - log.Warn("Only receive ETH", "prover", s.proverAddress) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "only receive ETH") - } - - // 2. Check if the prover has the required minimum on-chain ETH and Taiko token balance. - ok, err := s.checkMinEthAndToken(c.Request().Context(), prover) - if err != nil { - log.Error("Failed to check prover's ETH and Taiko token balance", "error", err) - return echo.NewHTTPError(http.StatusInternalServerError, err) - } - - if !ok { - log.Error("Insufficient prover balance", "prover", s.proverAddress) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "insufficient prover balance") - } - - // 3. Check if the prover's token balance is enough to cover the bonds. - spender := s.assignmentHookAddress - if s.proverSetAddress != rpc.ZeroAddress { - spender = s.taikoL1Address - } - if ok, err = rpc.CheckProverBalance( - c.Request().Context(), - s.rpc, - prover, - spender, - s.livenessBond, - ); err != nil { - log.Error("Failed to check prover's token balance", "error", err) - return echo.NewHTTPError(http.StatusInternalServerError, err) - } - if !ok { - log.Warn( - "Insufficient prover token balance, please get more tokens or wait for verification of the blocks you proved", - "prover", s.proverAddress, - ) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "insufficient prover balance") - } - - // 4. Check if the proof fee meets prover's minimum requirement for each tier. - for _, tier := range req.TierFees { - if tier.Tier == encoding.TierGuardianMajorityID { - continue - } - - if tier.Tier == encoding.TierGuardianMinorityID { - continue - } - - var minTierFee *big.Int - switch tier.Tier { - case encoding.TierOptimisticID: - minTierFee = s.minOptimisticTierFee - case encoding.TierSgxID: - minTierFee = s.minSgxTierFee - case encoding.TierSgxAndZkVMID: - minTierFee = s.minSgxAndZkVMTierFee - default: - log.Warn("Unknown tier", "tier", tier.Tier, "fee", tier.Fee, "proposerIP", c.RealIP()) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "unknown tier") - } - - if tier.Fee.Cmp(minTierFee) < 0 { - log.Warn( - "Proof fee too low", - "tier", tier.Tier, - "fee", tier.Fee, - "minTierFee", minTierFee, - "proposerIP", c.RealIP(), - ) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "proof fee too low") - } - } - - // 5. Check if the expiry is too long. - if req.Expiry > uint64(time.Now().Add(s.maxExpiry).Unix()) { - log.Warn( - "Expiry too long", - "requestExpiry", req.Expiry, - "srvMaxExpiry", s.maxExpiry, - "proposerIP", c.RealIP(), - ) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "expiry too long") - } - - // 6. Check if the prover has any capacity now. - if s.proofSubmissionCh != nil && len(s.proofSubmissionCh) == cap(s.proofSubmissionCh) { - log.Warn("Prover does not have capacity", "capacity", cap(s.proofSubmissionCh)) - return echo.NewHTTPError(http.StatusUnprocessableEntity, "prover does not have capacity") - } - - // 7. Encode and sign the prover assignment payload. - l1Head, err := s.rpc.L1.BlockNumber(c.Request().Context()) - if err != nil { - log.Error("Failed to get L1 block head", "error", err) - return echo.NewHTTPError(http.StatusUnprocessableEntity, err) - } - - encoded, err := encoding.EncodeProverAssignmentPayload( - s.protocolConfigs.ChainId, - s.taikoL1Address, - s.assignmentHookAddress, - req.Proposer, - prover, - req.BlobHash, - req.FeeToken, - req.Expiry, - l1Head+s.maxSlippage, - s.maxProposedIn, - req.TierFees, - ) - if err != nil { - log.Error("Failed to encode proverAssignment payload data", "error", err) - return echo.NewHTTPError(http.StatusUnprocessableEntity, err) - } - - signed, err := crypto.Sign(crypto.Keccak256Hash(encoded).Bytes(), s.proverPrivateKey) - if err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, err) - } - - // 8. Return the signed payload. - return c.JSON(http.StatusOK, &ProposeBlockResponse{ - SignedPayload: signed, - Prover: prover, - MaxBlockID: l1Head + s.maxSlippage, - MaxProposedIn: s.maxProposedIn, - }) -} +//func (s *ProverServer) CreateAssignment(c echo.Context) error { +// req := new(CreateAssignmentRequestBody) +// if err := c.Bind(req); err != nil { +// return c.JSON(http.StatusUnprocessableEntity, err) +// } +// +// log.Info( +// "Proof assignment request body", +// "feeToken", req.FeeToken, +// "expiry", req.Expiry, +// "tierFees", req.TierFees, +// "blobHash", req.BlobHash, +// "currentUsedCapacity", len(s.proofSubmissionCh), +// ) +// +// // If the prover set address is set, use it as the prover address. +// prover := s.proverAddress +// if s.proverSetAddress != rpc.ZeroAddress { +// prover = s.proverSetAddress +// } +// +// // 1. Check if the request body is valid. +// if req.BlobHash == (common.Hash{}) { +// log.Warn("Empty blob hash", "prover", s.proverAddress) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "empty blob hash") +// } +// if req.FeeToken != (common.Address{}) { +// log.Warn("Only receive ETH", "prover", s.proverAddress) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "only receive ETH") +// } +// +// // 2. Check if the prover has the required minimum on-chain ETH and Taiko token balance. +// ok, err := s.checkMinEthAndToken(c.Request().Context(), prover) +// if err != nil { +// log.Error("Failed to check prover's ETH and Taiko token balance", "error", err) +// return echo.NewHTTPError(http.StatusInternalServerError, err) +// } +// +// if !ok { +// log.Error("Insufficient prover balance", "prover", s.proverAddress) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "insufficient prover balance") +// } +// +// // 3. Check if the prover's token balance is enough to cover the bonds. +// spender := s.taikoL1Address +// if ok, err = rpc.CheckProverBalance( +// c.Request().Context(), +// s.rpc, +// prover, +// spender, +// s.livenessBond, +// ); err != nil { +// log.Error("Failed to check prover's token balance", "error", err) +// return echo.NewHTTPError(http.StatusInternalServerError, err) +// } +// if !ok { +// log.Warn( +// "Insufficient prover token balance, please get more tokens or wait for verification of the blocks you proved", +// "prover", s.proverAddress, +// ) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "insufficient prover balance") +// } +// +// // 4. Check if the proof fee meets prover's minimum requirement for each tier. +// for _, tier := range req.TierFees { +// if tier.Tier == encoding.TierGuardianMajorityID { +// continue +// } +// +// if tier.Tier == encoding.TierGuardianMinorityID { +// continue +// } +// +// var minTierFee *big.Int +// switch tier.Tier { +// case encoding.TierOptimisticID: +// minTierFee = s.minOptimisticTierFee +// case encoding.TierSgxID: +// minTierFee = s.minSgxTierFee +// case encoding.TierSgxAndZkVMID: +// minTierFee = s.minSgxAndZkVMTierFee +// default: +// log.Warn("Unknown tier", "tier", tier.Tier, "fee", tier.Fee, "proposerIP", c.RealIP()) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "unknown tier") +// } +// +// if tier.Fee.Cmp(minTierFee) < 0 { +// log.Warn( +// "Proof fee too low", +// "tier", tier.Tier, +// "fee", tier.Fee, +// "minTierFee", minTierFee, +// "proposerIP", c.RealIP(), +// ) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "proof fee too low") +// } +// } +// +// // 5. Check if the expiry is too long. +// if req.Expiry > uint64(time.Now().Add(s.maxExpiry).Unix()) { +// log.Warn( +// "Expiry too long", +// "requestExpiry", req.Expiry, +// "srvMaxExpiry", s.maxExpiry, +// "proposerIP", c.RealIP(), +// ) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "expiry too long") +// } +// +// // 6. Check if the prover has any capacity now. +// if s.proofSubmissionCh != nil && len(s.proofSubmissionCh) == cap(s.proofSubmissionCh) { +// log.Warn("Prover does not have capacity", "capacity", cap(s.proofSubmissionCh)) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, "prover does not have capacity") +// } +// +// // 7. Encode and sign the prover assignment payload. +// l1Head, err := s.rpc.L1.BlockNumber(c.Request().Context()) +// if err != nil { +// log.Error("Failed to get L1 block head", "error", err) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, err) +// } +// +// encoded, err := encoding.EncodeProverAssignmentPayload( +// s.protocolConfigs.ChainId, +// s.taikoL1Address, +// s.assignmentHookAddress, +// req.Proposer, +// prover, +// req.BlobHash, +// req.FeeToken, +// req.Expiry, +// l1Head+s.maxSlippage, +// s.maxProposedIn, +// req.TierFees, +// ) +// if err != nil { +// log.Error("Failed to encode proverAssignment payload data", "error", err) +// return echo.NewHTTPError(http.StatusUnprocessableEntity, err) +// } +// +// signed, err := crypto.Sign(crypto.Keccak256Hash(encoded).Bytes(), s.proverPrivateKey) +// if err != nil { +// return echo.NewHTTPError(http.StatusInternalServerError, err) +// } +// +// // 8. Return the signed payload. +// return c.JSON(http.StatusOK, &ProposeBlockResponse{ +// SignedPayload: signed, +// Prover: prover, +// MaxBlockID: l1Head + s.maxSlippage, +// MaxProposedIn: s.maxProposedIn, +// }) +//} // checkMinEthAndToken checks if the prover has the required minimum on-chain Taiko token balance. -func (s *ProverServer) checkMinEthAndToken(ctx context.Context, proverAddress common.Address) (bool, error) { - ctx, cancel := context.WithTimeout(ctx, rpcTimeout) - defer cancel() - - // 1. Check prover's ETH balance, if it's using proverSet. - if proverAddress == s.proverAddress { - ethBalance, err := s.rpc.L1.BalanceAt(ctx, proverAddress, nil) - if err != nil { - return false, err - } - - log.Info( - "Prover's ETH balance", - "balance", utils.WeiToEther(ethBalance), - "address", proverAddress, - ) - - if ethBalance.Cmp(s.minEthBalance) <= 0 { - log.Warn( - "Prover does not have required minimum on-chain ETH balance", - "providedProver", proverAddress, - "ethBalance", utils.WeiToEther(ethBalance), - "minEthBalance", utils.WeiToEther(s.minEthBalance), - ) - return false, nil - } - } - - // 2. Check prover's Taiko token balance. - balance, err := s.rpc.TaikoToken.BalanceOf(&bind.CallOpts{Context: ctx}, proverAddress) - if err != nil { - return false, err - } - - log.Info( - "Prover's Taiko token balance", - "balance", utils.WeiToEther(balance), - "address", proverAddress, - ) - - if balance.Cmp(s.minTaikoTokenBalance) <= 0 { - log.Warn( - "Prover does not have required on-chain Taiko token balance", - "providedProver", proverAddress, - "taikoTokenBalance", utils.WeiToEther(balance), - "minTaikoTokenBalance", utils.WeiToEther(s.minTaikoTokenBalance), - ) - return false, nil - } - - return true, nil -} +//func (s *ProverServer) checkMinEthAndToken(ctx context.Context, proverAddress common.Address) (bool, error) { +// ctx, cancel := context.WithTimeout(ctx, rpcTimeout) +// defer cancel() +// +// // 1. Check prover's ETH balance, if it's using proverSet. +// if proverAddress == s.proverAddress { +// ethBalance, err := s.rpc.L1.BalanceAt(ctx, proverAddress, nil) +// if err != nil { +// return false, err +// } +// +// log.Info( +// "Prover's ETH balance", +// "balance", utils.WeiToEther(ethBalance), +// "address", proverAddress, +// ) +// +// if ethBalance.Cmp(s.minEthBalance) <= 0 { +// log.Warn( +// "Prover does not have required minimum on-chain ETH balance", +// "providedProver", proverAddress, +// "ethBalance", utils.WeiToEther(ethBalance), +// "minEthBalance", utils.WeiToEther(s.minEthBalance), +// ) +// return false, nil +// } +// } +// +// // 2. Check prover's Taiko token balance. +// balance, err := s.rpc.TaikoToken.BalanceOf(&bind.CallOpts{Context: ctx}, proverAddress) +// if err != nil { +// return false, err +// } +// +// log.Info( +// "Prover's Taiko token balance", +// "balance", utils.WeiToEther(balance), +// "address", proverAddress, +// ) +// +// if balance.Cmp(s.minTaikoTokenBalance) <= 0 { +// log.Warn( +// "Prover does not have required on-chain Taiko token balance", +// "providedProver", proverAddress, +// "taikoTokenBalance", utils.WeiToEther(balance), +// "minTaikoTokenBalance", utils.WeiToEther(s.minTaikoTokenBalance), +// ) +// return false, nil +// } +// +// return true, nil +//} diff --git a/packages/taiko-client/prover/server/api_test.go b/packages/taiko-client/prover/server/api_test.go index 7f72c1a2f00..b127e7a007b 100644 --- a/packages/taiko-client/prover/server/api_test.go +++ b/packages/taiko-client/prover/server/api_test.go @@ -4,12 +4,6 @@ import ( "encoding/json" "io" "net/http" - "strings" - "time" - - "github.com/ethereum/go-ethereum/common" - - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" ) func (s *ProverServerTestSuite) TestGetStatusSuccess() { @@ -28,23 +22,3 @@ func (s *ProverServerTestSuite) TestGetStatusSuccess() { s.Equal(uint64(s.s.maxExpiry.Seconds()), status.MaxExpiry) s.NotEmpty(status.Prover) } - -func (s *ProverServerTestSuite) TestProposeBlockSuccess() { - data, err := json.Marshal(CreateAssignmentRequestBody{ - FeeToken: (common.Address{}), - TierFees: []encoding.TierFee{ - {Tier: encoding.TierOptimisticID, Fee: common.Big256}, - {Tier: encoding.TierSgxID, Fee: common.Big256}, - }, - Expiry: uint64(time.Now().Add(time.Minute).Unix()), - BlobHash: common.BigToHash(common.Big1), - }) - s.Nil(err) - res, err := http.Post(s.testServer.URL+"/assignment", "application/json", strings.NewReader(string(data))) - s.Nil(err) - s.Equal(http.StatusOK, res.StatusCode) - defer res.Body.Close() - b, err := io.ReadAll(res.Body) - s.Nil(err) - s.Contains(string(b), "signedPayload") -} diff --git a/packages/taiko-client/prover/server/server.go b/packages/taiko-client/prover/server/server.go index a996a81d0d1..cd9c5499f6b 100644 --- a/packages/taiko-client/prover/server/server.go +++ b/packages/taiko-client/prover/server/server.go @@ -30,67 +30,64 @@ import ( // @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md // ProverServer represents a prover server instance. type ProverServer struct { - echo *echo.Echo - proverPrivateKey *ecdsa.PrivateKey - proverAddress common.Address - proverSetAddress common.Address - minOptimisticTierFee *big.Int - minSgxTierFee *big.Int - minSgxAndZkVMTierFee *big.Int - minEthBalance *big.Int - minTaikoTokenBalance *big.Int - maxExpiry time.Duration - maxSlippage uint64 - maxProposedIn uint64 - taikoL1Address common.Address - assignmentHookAddress common.Address - proofSubmissionCh chan<- proofProducer.ProofRequestBody - rpc *rpc.Client - protocolConfigs *bindings.TaikoDataConfig - livenessBond *big.Int + echo *echo.Echo + proverPrivateKey *ecdsa.PrivateKey + proverAddress common.Address + proverSetAddress common.Address + minOptimisticTierFee *big.Int + minSgxTierFee *big.Int + minSgxAndZkVMTierFee *big.Int + minEthBalance *big.Int + minTaikoTokenBalance *big.Int + maxExpiry time.Duration + maxSlippage uint64 + maxProposedIn uint64 + taikoL1Address common.Address + proofSubmissionCh chan<- proofProducer.ProofRequestBody + rpc *rpc.Client + protocolConfigs *bindings.TaikoDataConfig + livenessBond *big.Int } // NewProverServerOpts contains all configurations for creating a prover server instance. type NewProverServerOpts struct { - ProverPrivateKey *ecdsa.PrivateKey - ProverSetAddress common.Address - MinOptimisticTierFee *big.Int - MinSgxTierFee *big.Int - MinSgxAndZkVMTierFee *big.Int - MinEthBalance *big.Int - MinTaikoTokenBalance *big.Int - MaxExpiry time.Duration - MaxBlockSlippage uint64 - MaxProposedIn uint64 - TaikoL1Address common.Address - AssignmentHookAddress common.Address - ProofSubmissionCh chan<- proofProducer.ProofRequestBody - RPC *rpc.Client - ProtocolConfigs *bindings.TaikoDataConfig - LivenessBond *big.Int + ProverPrivateKey *ecdsa.PrivateKey + ProverSetAddress common.Address + MinOptimisticTierFee *big.Int + MinSgxTierFee *big.Int + MinSgxAndZkVMTierFee *big.Int + MinEthBalance *big.Int + MinTaikoTokenBalance *big.Int + MaxExpiry time.Duration + MaxBlockSlippage uint64 + MaxProposedIn uint64 + TaikoL1Address common.Address + ProofSubmissionCh chan<- proofProducer.ProofRequestBody + RPC *rpc.Client + ProtocolConfigs *bindings.TaikoDataConfig + LivenessBond *big.Int } // New creates a new prover server instance. func New(opts *NewProverServerOpts) (*ProverServer, error) { srv := &ProverServer{ - proverPrivateKey: opts.ProverPrivateKey, - proverAddress: crypto.PubkeyToAddress(opts.ProverPrivateKey.PublicKey), - proverSetAddress: opts.ProverSetAddress, - echo: echo.New(), - minOptimisticTierFee: opts.MinOptimisticTierFee, - minSgxTierFee: opts.MinSgxTierFee, - minSgxAndZkVMTierFee: opts.MinSgxAndZkVMTierFee, - minEthBalance: opts.MinEthBalance, - minTaikoTokenBalance: opts.MinTaikoTokenBalance, - maxExpiry: opts.MaxExpiry, - maxProposedIn: opts.MaxProposedIn, - maxSlippage: opts.MaxBlockSlippage, - taikoL1Address: opts.TaikoL1Address, - assignmentHookAddress: opts.AssignmentHookAddress, - proofSubmissionCh: opts.ProofSubmissionCh, - rpc: opts.RPC, - protocolConfigs: opts.ProtocolConfigs, - livenessBond: opts.LivenessBond, + proverPrivateKey: opts.ProverPrivateKey, + proverAddress: crypto.PubkeyToAddress(opts.ProverPrivateKey.PublicKey), + proverSetAddress: opts.ProverSetAddress, + echo: echo.New(), + minOptimisticTierFee: opts.MinOptimisticTierFee, + minSgxTierFee: opts.MinSgxTierFee, + minSgxAndZkVMTierFee: opts.MinSgxAndZkVMTierFee, + minEthBalance: opts.MinEthBalance, + minTaikoTokenBalance: opts.MinTaikoTokenBalance, + maxExpiry: opts.MaxExpiry, + maxProposedIn: opts.MaxProposedIn, + maxSlippage: opts.MaxBlockSlippage, + taikoL1Address: opts.TaikoL1Address, + proofSubmissionCh: opts.ProofSubmissionCh, + rpc: opts.RPC, + protocolConfigs: opts.ProtocolConfigs, + livenessBond: opts.LivenessBond, } srv.echo.HideBanner = true @@ -144,5 +141,4 @@ func (s *ProverServer) configureRoutes() { s.echo.GET("/", s.Health) s.echo.GET("/healthz", s.Health) s.echo.GET("/status", s.GetStatus) - s.echo.POST("/assignment", s.CreateAssignment) } diff --git a/packages/taiko-client/prover/server/server_test.go b/packages/taiko-client/prover/server/server_test.go index 37907b2f7d8..f46ae7e5d06 100644 --- a/packages/taiko-client/prover/server/server_test.go +++ b/packages/taiko-client/prover/server/server_test.go @@ -49,19 +49,18 @@ func (s *ProverServerTestSuite) SetupTest() { s.Nil(err) p, err := New(&NewProverServerOpts{ - ProverPrivateKey: l1ProverPrivKey, - MinOptimisticTierFee: common.Big1, - MinSgxTierFee: common.Big1, - MinSgxAndZkVMTierFee: common.Big1, - MinEthBalance: common.Big1, - MinTaikoTokenBalance: common.Big1, - MaxExpiry: time.Hour, - ProofSubmissionCh: make(chan<- proofProducer.ProofRequestBody, 1024), - TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), - AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), - RPC: rpcClient, - ProtocolConfigs: &configs, - LivenessBond: common.Big0, + ProverPrivateKey: l1ProverPrivKey, + MinOptimisticTierFee: common.Big1, + MinSgxTierFee: common.Big1, + MinSgxAndZkVMTierFee: common.Big1, + MinEthBalance: common.Big1, + MinTaikoTokenBalance: common.Big1, + MaxExpiry: time.Hour, + ProofSubmissionCh: make(chan<- proofProducer.ProofRequestBody, 1024), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + RPC: rpcClient, + ProtocolConfigs: &configs, + LivenessBond: common.Big0, }) s.Nil(err) diff --git a/packages/taiko-client/scripts/gen_bindings.sh b/packages/taiko-client/scripts/gen_bindings.sh index b577b6294db..23063df5d7a 100755 --- a/packages/taiko-client/scripts/gen_bindings.sh +++ b/packages/taiko-client/scripts/gen_bindings.sh @@ -62,10 +62,6 @@ cat ../protocol/out/GuardianProver.sol/GuardianProver.json | jq .abi | ${ABIGEN_BIN} --abi - --type GuardianProver --pkg bindings --out $DIR/../bindings/gen_guardian_prover.go -cat ../protocol/out/AssignmentHook.sol/AssignmentHook.json | - jq .abi | - ${ABIGEN_BIN} --abi - --type AssignmentHook --pkg bindings --out $DIR/../bindings/gen_assignment_hook.go - cat ../protocol/out/ProverSet.sol/ProverSet.json | jq .abi | ${ABIGEN_BIN} --abi - --type ProverSet --pkg bindings --out $DIR/../bindings/gen_prover_set.go