From 478d9392b9dad74a52585d5c10d053bcd4a1f2a9 Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Mon, 30 Jun 2025 14:13:57 -0400 Subject: [PATCH 1/6] chore: naming --- .../destination/OperatorTableUpdater.md | 44 +-- .../BN254CertificateVerifier/binding.go | 2 +- .../ECDSACertificateVerifier/binding.go | 2 +- pkg/bindings/IOperatorTableUpdater/binding.go | 236 ++++++++-------- pkg/bindings/OperatorTableUpdater/binding.go | 257 +++++++++--------- .../OperatorTableUpdaterStorage/binding.go | 238 ++++++++-------- .../interfaces/IOperatorTableUpdater.sol | 30 +- .../multichain/OperatorTableUpdater.sol | 56 ++-- .../OperatorTableUpdaterStorage.sol | 2 +- src/test/tree/OperatorTableUpdaterUnit.tree | 18 +- src/test/unit/OperatorTableUpdaterUnit.t.sol | 94 +++---- 11 files changed, 494 insertions(+), 485 deletions(-) diff --git a/docs/multichain/destination/OperatorTableUpdater.md b/docs/multichain/destination/OperatorTableUpdater.md index 2aae7c055b..4b32611bfd 100644 --- a/docs/multichain/destination/OperatorTableUpdater.md +++ b/docs/multichain/destination/OperatorTableUpdater.md @@ -14,24 +14,24 @@ Libraries and Mixins: ## Overview -The `OperatorTableUpdater` is responsible for updating the `GlobalTableRoot` and updating operator tables from merkle proofs against the `GlobalTableRoot`. The contract is deployed on every destination chain. The contract maintains a set of valid global table roots that are confirmed by a designated global root confirmer set, and allows updating individual operator tables by providing merkle proofs against these roots. +The `OperatorTableUpdater` is responsible for updating the `GlobalTableRoot` and updating operator tables from merkle proofs against the `GlobalTableRoot`. The contract is deployed on every destination chain. The contract maintains a set of valid global table roots that are confirmed by a designated generator, and allows updating individual operator tables by providing merkle proofs against these roots. The contract supports both BN254 and ECDSA operator tables and routes updates to the appropriate certificate verifier based on the curve type. ## Parameterization -Upon initialization, the `globalRootConfirmerSet` (ie. `Generator`) is updated. This operatorSet is a *"shadow-operatorSet"*. It does not exist in the core protocol, does not have stake backing it, and is not transported to other chains via the multichain protocol. It can only be updated upon initialization or by a [privileged role](#updateglobalrootconfirmerset). This entity is the same across all destination chains. +Upon initialization, the `generator` is updated. This operatorSet is a *"shadow-operatorSet"*. It does not exist in the core protocol, does not have stake backing it, and is not transported to other chains via the multichain protocol. It can only be updated upon initialization or by a [privileged role](#updategenerator). This entity is the same across all destination chains. -* `GlobalRootConfirmerSet`, also known as the `Generator`, is an EigenLabs-run entity that signs off on `GlobalTableRoots`. The operatorSet is of size 1. -* `maxStalenessPeriod`: 0. Set to zero to confirm roots without updating the `globalConfirmerOperatorSet`. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics +* `Generator` is an EigenLabs-run entity that signs off on `GlobalTableRoots`. The operatorSet is of size 1. +* `maxStalenessPeriod`: 0. Set to zero to confirm roots without updating the `generator`. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics * `globalRootConfirmationThreshold`: 10000. The threshold in basis points required for global root confirmation. Since the operatorSet is of size 1 a single signature is needed -* `referenceTimestamp`: A past timestamp at which the `globalRootConfirmerSet` is generated. This value is set to the initial `latestReferenceTimestamp` in the `OperatorTableUpdater. It is the same across all destination chains, even for destination chains that are supported after the initial deployment +* `referenceTimestamp`: A past timestamp at which the `generator` is generated. This value is set to the initial `latestReferenceTimestamp` in the `OperatorTableUpdater. It is the same across all destination chains, even for destination chains that are supported after the initial deployment --- ## Global Root Confirmation -Global table roots must be confirmed by the `globalRootConfirmerSet` (ie. `Generator`) before operator tables can be updated against them. +Global table roots must be confirmed by the `generator` before operator tables can be updated against them. ### `confirmGlobalTableRoot` @@ -42,7 +42,7 @@ Global table roots must be confirmed by the `globalRootConfirmerSet` (ie. `Gener * @param globalTableRoot merkle root of all operatorSet tables * @param referenceTimestamp timestamp of the root * @param referenceBlockNumber block number of the root - * @dev Any entity can submit with a valid certificate signed off by the `globalRootConfirmerSet` + * @dev Any entity can submit with a valid certificate signed off by the `generator` * @dev The `msgHash` in the `globalOperatorTableRootCert` is the hash of the `globalOperatorTableRoot` */ function confirmGlobalTableRoot( @@ -53,7 +53,7 @@ function confirmGlobalTableRoot( ) external; ``` -Confirms a new global table root by verifying a BN254 certificate signed by the `globalRootConfirmerSet`. See [`BN254CertificateVerifier`](./CertificateVerifier.md#bn254certificateverifier) for certificate verification. Roots are append only and cannot be overridden, only [disabled](#disableroot). +Confirms a new global table root by verifying a BN254 certificate signed by the `generator`. See [`BN254CertificateVerifier`](./CertificateVerifier.md#bn254certificateverifier) for certificate verification. Roots are append only and cannot be overridden, only [disabled](#disableroot). *Effects*: * Updates `_latestReferenceTimestamp` to the new `referenceTimestamp` @@ -115,9 +115,9 @@ Updates an operator table by verifying its inclusion in a confirmed global table ## System Configuration -The `owner` can configure the `globalRootConfirmerSet` and confirmation parameters. +The `owner` can configure the `generator` and confirmation parameters. -### `setGlobalRootConfirmerSet` +### `setGenerator` ```solidity /** @@ -126,7 +126,7 @@ The `owner` can configure the `globalRootConfirmerSet` and confirmation paramete * @dev The `operatorSet` is used to verify the certificate of the global table root * @dev Only callable by the owner of the contract */ -function setGlobalRootConfirmerSet( +function setGenerator( OperatorSet calldata operatorSet ) external; ``` @@ -134,8 +134,8 @@ function setGlobalRootConfirmerSet( Updates the operator set responsible for confirming global table roots. *Effects*: -* Updates `_globalRootConfirmerSet` to the new `operatorSet` -* Emits a `GlobalRootConfirmerSetUpdated` event +* Updates `_generator` to the new `operatorSet` +* Emits a `GeneratorUpdated` event *Requirements*: * Caller MUST be the `owner` @@ -186,29 +186,29 @@ Disables a global table root, preventing further operator table updates against * Caller MUST be the `owner` * The `globalTableRoot` MUST exist and be currently valid -### `updateGlobalRootConfirmerSet` +### `updateGenerator` ```solidity /** - * @notice Updates the operator table for the global root confirmer set + * @notice Updates the operator table for the generator * @param referenceTimestamp The reference timestamp of the operator table update - * @param globalRootConfirmerSetInfo The operatorSetInfo for the global root confirmer set - * @param globalRootConfirmerSetConfig The operatorSetConfig for the global root confirmer set + * @param generatorInfo The operatorSetInfo for the generator + * @param generatorConfig The operatorSetConfig for the generator * @dev We have a separate function for updating this operatorSet since it's not transported and updated * in the same way as the other operatorSets * @dev Only callable by the owner of the contract */ -function updateGlobalRootConfirmerSet( +function updateGenerator( uint32 referenceTimestamp, - BN254OperatorSetInfo calldata globalRootConfirmerSetInfo, - OperatorSetConfig calldata globalRootConfirmerSetConfig + BN254OperatorSetInfo calldata generatorInfo, + OperatorSetConfig calldata generatorConfig ) external; ``` -Updates the operator table for the `globalRootConfirmerSet` itself. This operatorSet is a ["shadow-operatorSet"](#parameterization), so it must be updated manually +Updates the operator table for the `generator` itself. This operatorSet is a ["shadow-operatorSet"](#parameterization), so it must be updated manually *Effects*: -* Calls `bn254CertificateVerifier.updateOperatorTable` for the `globalRootConfirmerSet` +* Calls `bn254CertificateVerifier.updateOperatorTable` for the `generator` *Requirements*: * Caller MUST be the `owner` diff --git a/pkg/bindings/BN254CertificateVerifier/binding.go b/pkg/bindings/BN254CertificateVerifier/binding.go index fd1efac7c2..bb29d16398 100644 --- a/pkg/bindings/BN254CertificateVerifier/binding.go +++ b/pkg/bindings/BN254CertificateVerifier/binding.go @@ -86,7 +86,7 @@ type OperatorSet struct { // BN254CertificateVerifierMetaData contains all meta data concerning the BN254CertificateVerifier contract. var BN254CertificateVerifierMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_operatorTableUpdater\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableUpdater\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getNonsignerOperatorInfo\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetInfo\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isNonsignerCached\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorTableUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableUpdater\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"trySignatureVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"aggPubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"signatureValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]}],\"outputs\":[{\"name\":\"signedStakes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECAddFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECMulFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECPairingFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpModFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f5ffd5b50604051612a06380380612a0683398101604081905261002e9161016a565b6001600160a01b0382166080528061004581610058565b60a0525061005161009e565b5050610294565b5f5f829050601f8151111561008b578260405163305a27a960e01b81526004016100829190610239565b60405180910390fd5b80516100968261026e565b179392505050565b5f54610100900460ff16156101055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610082565b5f5460ff90811614610154575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017b575f5ffd5b82516001600160a01b0381168114610191575f5ffd5b60208401519092506001600160401b038111156101ac575f5ffd5b8301601f810185136101bc575f5ffd5b80516001600160401b038111156101d5576101d5610156565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020357610203610156565b60405281815282820160200187101561021a575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561028e575f198160200360031b1b821691505b50919050565b60805160a0516127436102c35f395f6104e401525f81816101de0152818161062f0152610d0201526127435ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635ddb9b5b1161008857806368d6e0811161006357806368d6e081146101d95780638481892014610218578063dd2ae1b91461022b578063eb39e68f1461023e575f5ffd5b80635ddb9b5b146101895780636141879e146101b15780636738c40b146101c4575f5ffd5b8063017d7974146100cf578063080b7150146100f75780631a18746c1461011757806326af6a3c1461014157806354fd4d50146101615780635be8727414610176575b5f5ffd5b6100e26100dd366004612103565b61025e565b60405190151581526020015b60405180910390f35b61010a6101053660046121de565b6103ef565b6040516100ee9190612229565b61012a610125366004612260565b610404565b6040805192151583529015156020830152016100ee565b61015461014f3660046122ae565b610425565b6040516100ee9190612323565b6101696104dd565b6040516100ee9190612358565b6100e26101843660046122ae565b61050d565b61019c61019736600461238d565b6105d8565b60405163ffffffff90911681526020016100ee565b61019c6101bf36600461238d565b6105fe565b6101d76101d23660046123bd565b610624565b005b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ee565b61020061022636600461238d565b6107f1565b6100e2610239366004612476565b61081a565b61025161024c3660046124e9565b6108ad565b6040516100ee9190612560565b5f5f61026a8585610972565b90505f61027686610b32565b5f8181526004602081815260408084208a5163ffffffff16855282528084208151608081018352815481526001820154818501528251808401845260028301548152600383015481860152818401529381018054835181860281018601909452808452969750949593949093606086019383018282801561031457602002820191905f5260205f20905b815481526020019060010190808311610300575b50505050508152505090505f8160600151905085518451146103495760405163512509d360e11b815260040160405180910390fd5b5f5b84518110156103de575f61271088838151811061036a5761036a612572565b602002602001015161ffff1684848151811061038857610388612572565b602002602001015161039a919061259a565b6103a491906125c5565b9050808683815181106103b9576103b9612572565b602002602001015110156103d5575f96505050505050506103e8565b5060010161034b565b5060019450505050505b9392505050565b60606103fb8383610972565b90505b92915050565b5f5f61041886848787600162061a80610b95565b9150915094509492505050565b61042d611a9c565b5f61043785610b32565b5f81815260056020908152604080832063ffffffff8916845282528083208784528252918290208251608081018452815481850190815260018301546060830152815260028201805485518186028101860190965280865295965090949193858401939092908301828280156104ca57602002820191905f5260205f20905b8154815260200190600101908083116104b6575b5050505050815250509150509392505050565b60606105087f0000000000000000000000000000000000000000000000000000000000000000610c5d565b905090565b5f5f61051885610b32565b5f81815260056020908152604080832063ffffffff891684528252808320878452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552969750949590949193858101939291908301828280156105ac57602002820191905f5260205f20905b815481526020019060010190808311610598575b50505091909252505081515191925050158015906105ce575080516020015115155b9695505050505050565b5f5f6105e383610b32565b5f9081526003602052604090205463ffffffff169392505050565b5f5f61060983610b32565b5f9081526002602052604090205463ffffffff169392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461066d5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106856106803687900387018761238d565b610b32565b5f8181526003602052604090205490915063ffffffff908116908516116106bf57604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020818152604080842063ffffffff8916855282529283902086518155818701516001820155928601518051600285015581015160038401556060860151805187949361071793908501920190611ac6565b5050505f818152600360209081526040909120805463ffffffff191663ffffffff8716179055610749908301836125d8565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b039490941693909317909255610788919084019084016125f1565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e906107e29087908790879061260a565b60405180910390a15050505050565b5f5f6107fc83610b32565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f6108268585610972565b9050825181511461084a5760405163512509d360e11b815260040160405180910390fd5b5f5b81518110156108a15783818151811061086757610867612572565b602002602001015182828151811061088157610881612572565b60200260200101511015610899575f925050506103e8565b60010161084c565b50600195945050505050565b6108b5611b0f565b5f6108bf84610b32565b5f81815260046020818152604080842063ffffffff891685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652959650929490936060860193909290919083018282801561096057602002820191905f5260205f20905b81548152602001906001019080831161094c575b50505050508152505091505092915050565b606061097c611b41565b61098584610b32565b80825283516109949190610c9a565b80515f908152600460208181526040808420875163ffffffff1685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652939491936060860193830182828015610a3057602002820191905f5260205f20905b815481526020019060010190808311610a1c575b505050919092525050506020820181905251610a5f57604051630cad17b760e31b815260040160405180910390fd5b806020015160600151516001600160401b03811115610a8057610a80611c6f565b604051908082528060200260200182016040528015610aa9578160200160208202803683370190505b5060408201525f5b81602001516060015151811015610b0d578160200151606001518181518110610adc57610adc612572565b602002602001015182604001518281518110610afa57610afa612572565b6020908102919091010152600101610ab1565b50610b188184610d95565b6060820152610b278184610ebf565b604001519392505050565b5f815f0151826020015163ffffffff16604051602001610b7d92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526103fe90612656565b5f5f5f610ba189610f2d565b90505f610bb08a89898c610fb7565b90505f610bc7610bc08a8461106b565b8b906110db565b90505f610c09610c0284610bfc6040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061106b565b85906110db565b90508715610c2e57610c2582610c1d61114f565b838c8b61120f565b96509450610c4e565b610c4182610c3a61114f565b838c611423565b95508515610c4e57600194505b50505050965096945050505050565b60605f610c698361165a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8281526002602052604090205463ffffffff16801580610cca5750610cc08183612679565b63ffffffff164211155b610ce75760405163640fcd6b60e11b815260040160405180910390fd5b60405163193877e160e21b815263ffffffff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906364e1df8490602401602060405180830381865afa158015610d4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d739190612695565b610d9057604051631b14174b60e01b815260040160405180910390fd5b505050565b6040805180820182525f808252602091820181905282518084019093528083529082018190525b826080015151811015610eb8575f83608001518281518110610de057610de0612572565b60200260200101519050846020015160200151815f015163ffffffff1610610e1b576040516301fa53c760e11b815260040160405180910390fd5b845184515f91610e2b9184611681565b8051909150610e3b9085906110db565b93505f5b816020015151811015610ead57866040015151811015610ea55781602001518181518110610e6f57610e6f612572565b602002602001015187604001518281518110610e8d57610e8d612572565b60200260200101818151610ea191906126b4565b9052505b600101610e3f565b505050600101610dbc565b5092915050565b5f610edf610ed084606001516117f8565b602085015160400151906110db565b90505f5f610efb84602001518486606001518760400151610404565b91509150818015610f095750805b610f265760405163439cc0cd60e01b815260040160405180910390fd5b5050505050565b604080518082019091525f80825260208201525f8080610f5a5f5160206126ee5f395f51905f52866126c7565b90505b610f668161188e565b90935091505f5160206126ee5f395f51905f528283098303610f9e576040805180820190915290815260208101919091529392505050565b5f5160206126ee5f395f51905f52600182089050610f5d565b8251602080850151845180519083015186840151805190850151875188870151604080519889018e90528801989098526060870195909552608086019390935260a085019190915260c084015260e08301526101008201526101208101919091525f907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019061014001604051602081830303815290604052805190602001205f1c61106291906126c7565b95945050505050565b604080518082019091525f8082526020820152611086611b86565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806110b457fe5b50806110d357604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526110f6611ba4565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061113057fe5b50806110d35760405163d4b68fd760e01b815260040160405180910390fd5b611157611bc2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190611240611be2565b5f5b60028110156113f7575f61125782600661259a565b905084826002811061126b5761126b612572565b6020020151518361127c835f6126da565b600c811061128c5761128c612572565b60200201528482600281106112a3576112a3612572565b602002015160200151838260016112ba91906126da565b600c81106112ca576112ca612572565b60200201528382600281106112e1576112e1612572565b60200201515151836112f48360026126da565b600c811061130457611304612572565b602002015283826002811061131b5761131b612572565b60200201515160016020020151836113348360036126da565b600c811061134457611344612572565b602002015283826002811061135b5761135b612572565b6020020151602001515f6002811061137557611375612572565b6020020151836113868360046126da565b600c811061139657611396612572565b60200201528382600281106113ad576113ad612572565b6020020151602001516001600281106113c8576113c8612572565b6020020151836113d98360056126da565b600c81106113e9576113e9612572565b602002015250600101611242565b50611400611c01565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6040805180820182528581526020808201859052825180840190935285835282018390525f91611451611be2565b5f5b6002811015611608575f61146882600661259a565b905084826002811061147c5761147c612572565b6020020151518361148d835f6126da565b600c811061149d5761149d612572565b60200201528482600281106114b4576114b4612572565b602002015160200151838260016114cb91906126da565b600c81106114db576114db612572565b60200201528382600281106114f2576114f2612572565b60200201515151836115058360026126da565b600c811061151557611515612572565b602002015283826002811061152c5761152c612572565b60200201515160016020020151836115458360036126da565b600c811061155557611555612572565b602002015283826002811061156c5761156c612572565b6020020151602001515f6002811061158657611586612572565b6020020151836115978360046126da565b600c81106115a7576115a7612572565b60200201528382600281106115be576115be612572565b6020020151602001516001600281106115d9576115d9612572565b6020020151836115ea8360056126da565b600c81106115fa576115fa612572565b602002015250600101611453565b50611611611c01565b5f6020826101808560086107d05a03fa9050808061162b57fe5b508061164a576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b5f60ff8216601f8111156103fe57604051632cd44ac360e21b815260040160405180910390fd5b611689611a9c565b5f84815260056020908152604080832063ffffffff808816855290835281842086519091168452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552919492938584019390929083018282801561171e57602002820191905f5260205f20905b81548152602001906001019080831161170a575b5050509190925250508151519192505f911515905080611742575081516020015115155b9050806117eb575f6117628787875f01518860400151896020015161190a565b9050806117825760405163439cc0cd60e01b815260040160405180910390fd5b6040808601515f8981526005602090815283822063ffffffff808c1684529082528483208a51909116835281529290208151805182558301516001820155828201518051929391926117da9260028501920190611ac6565b5090505084604001519350506117ef565b8192505b50509392505050565b604080518082019091525f8082526020820152815115801561181c57506020820151155b15611839575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206126ee5f395f51905f52846020015161186a91906126c7565b611881905f5160206126ee5f395f51905f526126b4565b905292915050565b919050565b5f80805f5160206126ee5f395f51905f5260035f5160206126ee5f395f51905f52865f5160206126ee5f395f51905f52888909090890505f6118fe827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206126ee5f395f51905f52611975565b91959194509092505050565b5f5f8360405160200161191d9190612323565b60408051601f1981840301815291815281516020928301205f8a81526004845282812063ffffffff808c1683529452919091205490925090611969908590839085908a8116906119ee16565b98975050505050505050565b5f5f61197f611c01565b611987611c1f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806119c457fe5b50826119e35760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b5f836119fb868585611a05565b1495945050505050565b5f60208451611a1491906126c7565b15611a32576040516313717da960e21b815260040160405180910390fd5b8260205b85518111611a9357611a496002856126c7565b5f03611a6a57815f528086015160205260405f209150600284049350611a81565b808601515f528160205260405f2091506002840493505b611a8c6020826126da565b9050611a36565b50949350505050565b604080516080810182525f91810182815260608201929092529081905b8152602001606081525090565b828054828255905f5260205f20908101928215611aff579160200282015b82811115611aff578251825591602001919060010190611ae4565b50611b0b929150611c3d565b5090565b60405180608001604052805f81526020015f8152602001611ab960405180604001604052805f81526020015f81525090565b60405180608001604052805f8152602001611b5a611b0f565b815260200160608152602001611b8160405180604001604052805f81526020015f81525090565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611bd5611c51565b8152602001611b81611c51565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b80821115611b0b575f8155600101611c3e565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715611ca557611ca5611c6f565b60405290565b60405160a081016001600160401b0381118282101715611ca557611ca5611c6f565b604051606081016001600160401b0381118282101715611ca557611ca5611c6f565b604051608081016001600160401b0381118282101715611ca557611ca5611c6f565b604051601f8201601f191681016001600160401b0381118282101715611d3957611d39611c6f565b604052919050565b80356001600160a01b0381168114611889575f5ffd5b803563ffffffff81168114611889575f5ffd5b5f60408284031215611d7a575f5ffd5b611d82611c83565b9050611d8d82611d41565b8152611d9b60208301611d57565b602082015292915050565b5f60408284031215611db6575f5ffd5b611dbe611c83565b823581526020928301359281019290925250919050565b5f82601f830112611de4575f5ffd5b611dec611c83565b806040840185811115611dfd575f5ffd5b845b81811015611e17578035845260209384019301611dff565b509095945050505050565b5f60808284031215611e32575f5ffd5b611e3a611c83565b9050611e468383611dd5565b8152611d9b8360408401611dd5565b5f6001600160401b03821115611e6d57611e6d611c6f565b5060051b60200190565b5f82601f830112611e86575f5ffd5b8135611e99611e9482611e55565b611d11565b8082825260208201915060208360051b860101925085831115611eba575f5ffd5b602085015b83811015611ed7578035835260209283019201611ebf565b5095945050505050565b5f60608284031215611ef1575f5ffd5b611ef9611c83565b9050611f058383611da6565b815260408201356001600160401b03811115611f1f575f5ffd5b611f2b84828501611e77565b60208301525092915050565b5f6101208284031215611f48575f5ffd5b611f50611cab565b9050611f5b82611d57565b815260208281013590820152611f748360408401611da6565b6040820152611f868360808401611e22565b60608201526101008201356001600160401b03811115611fa4575f5ffd5b8201601f81018413611fb4575f5ffd5b8035611fc2611e9482611e55565b8082825260208201915060208360051b850101925086831115611fe3575f5ffd5b602084015b838110156120f35780356001600160401b03811115612005575f5ffd5b85016060818a03601f1901121561201a575f5ffd5b612022611ccd565b61202e60208301611d57565b815260408201356001600160401b03811115612048575f5ffd5b82016020810190603f018b1361205c575f5ffd5b80356001600160401b0381111561207557612075611c6f565b612088601f8201601f1916602001611d11565b8181528c602083850101111561209c575f5ffd5b816020840160208301375f6020838301015280602085015250505060608201356001600160401b038111156120cf575f5ffd5b6120de8b602083860101611ee1565b60408301525084525060209283019201611fe8565b5060808501525091949350505050565b5f5f5f60808486031215612115575f5ffd5b61211f8585611d6a565b925060408401356001600160401b03811115612139575f5ffd5b61214586828701611f37565b92505060608401356001600160401b03811115612160575f5ffd5b8401601f81018613612170575f5ffd5b803561217e611e9482611e55565b8082825260208201915060208360051b85010192508883111561219f575f5ffd5b6020840193505b828410156121d057833561ffff811681146121bf575f5ffd5b8252602093840193909101906121a6565b809450505050509250925092565b5f5f606083850312156121ef575f5ffd5b6121f98484611d6a565b915060408301356001600160401b03811115612213575f5ffd5b61221f85828601611f37565b9150509250929050565b602080825282518282018190525f918401906040840190835b81811015611e17578351835260209384019390920191600101612242565b5f5f5f5f6101208587031215612274575f5ffd5b843593506122858660208701611da6565b92506122948660608701611e22565b91506122a38660e08701611da6565b905092959194509250565b5f5f5f608084860312156122c0575f5ffd5b6122ca8585611d6a565b92506122d860408501611d57565b929592945050506060919091013590565b5f8151808452602084019350602083015f5b828110156123195781518652602095860195909101906001016122fb565b5093949350505050565b60208082528251805183830152015160408201525f602083015160608084015261235060808401826122e9565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6040828403121561239d575f5ffd5b6103fb8383611d6a565b5f604082840312156123b7575f5ffd5b50919050565b5f5f5f5f60c085870312156123d0575f5ffd5b6123da86866123a7565b93506123e860408601611d57565b925060608501356001600160401b03811115612402575f5ffd5b850160a08188031215612413575f5ffd5b61241b611cef565b81358152602080830135908201526124368860408401611da6565b604082015260808201356001600160401b03811115612453575f5ffd5b61245f89828501611e77565b60608301525092506122a3905086608087016123a7565b5f5f5f60808486031215612488575f5ffd5b6124928585611d6a565b925060408401356001600160401b038111156124ac575f5ffd5b6124b886828701611f37565b92505060608401356001600160401b038111156124d3575f5ffd5b6124df86828701611e77565b9150509250925092565b5f5f606083850312156124fa575f5ffd5b6125048484611d6a565b915061251260408401611d57565b90509250929050565b80518252602081015160208301525f6040820151612546604085018280518252602090810151910152565b50606082015160a0608085015261235060a08501826122e9565b602081525f6103fb602083018461251b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103fe576103fe612586565b634e487b7160e01b5f52601260045260245ffd5b5f826125d3576125d36125b1565b500490565b5f602082840312156125e8575f5ffd5b6103fb82611d41565b5f60208284031215612601575f5ffd5b6103fb82611d57565b6001600160a01b0361261b85611d41565b16815263ffffffff61262f60208601611d57565b16602082015263ffffffff83166040820152608060608201525f611062608083018461251b565b805160208083015191908110156123b7575f1960209190910360031b1b16919050565b63ffffffff81811683821601908111156103fe576103fe612586565b5f602082840312156126a5575f5ffd5b815180151581146103e8575f5ffd5b818103818111156103fe576103fe612586565b5f826126d5576126d56125b1565b500690565b808201808211156103fe576103fe61258656fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212206fd3a0141843c00711802970cdf44e4c37ec698294505e9170e942963e33491e64736f6c634300081b0033", + Bin: "0x60c060405234801561000f575f5ffd5b50604051612a06380380612a0683398101604081905261002e9161016a565b6001600160a01b0382166080528061004581610058565b60a0525061005161009e565b5050610294565b5f5f829050601f8151111561008b578260405163305a27a960e01b81526004016100829190610239565b60405180910390fd5b80516100968261026e565b179392505050565b5f54610100900460ff16156101055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610082565b5f5460ff90811614610154575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017b575f5ffd5b82516001600160a01b0381168114610191575f5ffd5b60208401519092506001600160401b038111156101ac575f5ffd5b8301601f810185136101bc575f5ffd5b80516001600160401b038111156101d5576101d5610156565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020357610203610156565b60405281815282820160200187101561021a575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561028e575f198160200360031b1b821691505b50919050565b60805160a0516127436102c35f395f6104e401525f81816101de0152818161062f0152610d0201526127435ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635ddb9b5b1161008857806368d6e0811161006357806368d6e081146101d95780638481892014610218578063dd2ae1b91461022b578063eb39e68f1461023e575f5ffd5b80635ddb9b5b146101895780636141879e146101b15780636738c40b146101c4575f5ffd5b8063017d7974146100cf578063080b7150146100f75780631a18746c1461011757806326af6a3c1461014157806354fd4d50146101615780635be8727414610176575b5f5ffd5b6100e26100dd366004612103565b61025e565b60405190151581526020015b60405180910390f35b61010a6101053660046121de565b6103ef565b6040516100ee9190612229565b61012a610125366004612260565b610404565b6040805192151583529015156020830152016100ee565b61015461014f3660046122ae565b610425565b6040516100ee9190612323565b6101696104dd565b6040516100ee9190612358565b6100e26101843660046122ae565b61050d565b61019c61019736600461238d565b6105d8565b60405163ffffffff90911681526020016100ee565b61019c6101bf36600461238d565b6105fe565b6101d76101d23660046123bd565b610624565b005b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ee565b61020061022636600461238d565b6107f1565b6100e2610239366004612476565b61081a565b61025161024c3660046124e9565b6108ad565b6040516100ee9190612560565b5f5f61026a8585610972565b90505f61027686610b32565b5f8181526004602081815260408084208a5163ffffffff16855282528084208151608081018352815481526001820154818501528251808401845260028301548152600383015481860152818401529381018054835181860281018601909452808452969750949593949093606086019383018282801561031457602002820191905f5260205f20905b815481526020019060010190808311610300575b50505050508152505090505f8160600151905085518451146103495760405163512509d360e11b815260040160405180910390fd5b5f5b84518110156103de575f61271088838151811061036a5761036a612572565b602002602001015161ffff1684848151811061038857610388612572565b602002602001015161039a919061259a565b6103a491906125c5565b9050808683815181106103b9576103b9612572565b602002602001015110156103d5575f96505050505050506103e8565b5060010161034b565b5060019450505050505b9392505050565b60606103fb8383610972565b90505b92915050565b5f5f61041886848787600162061a80610b95565b9150915094509492505050565b61042d611a9c565b5f61043785610b32565b5f81815260056020908152604080832063ffffffff8916845282528083208784528252918290208251608081018452815481850190815260018301546060830152815260028201805485518186028101860190965280865295965090949193858401939092908301828280156104ca57602002820191905f5260205f20905b8154815260200190600101908083116104b6575b5050505050815250509150509392505050565b60606105087f0000000000000000000000000000000000000000000000000000000000000000610c5d565b905090565b5f5f61051885610b32565b5f81815260056020908152604080832063ffffffff891684528252808320878452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552969750949590949193858101939291908301828280156105ac57602002820191905f5260205f20905b815481526020019060010190808311610598575b50505091909252505081515191925050158015906105ce575080516020015115155b9695505050505050565b5f5f6105e383610b32565b5f9081526003602052604090205463ffffffff169392505050565b5f5f61060983610b32565b5f9081526002602052604090205463ffffffff169392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461066d5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106856106803687900387018761238d565b610b32565b5f8181526003602052604090205490915063ffffffff908116908516116106bf57604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020818152604080842063ffffffff8916855282529283902086518155818701516001820155928601518051600285015581015160038401556060860151805187949361071793908501920190611ac6565b5050505f818152600360209081526040909120805463ffffffff191663ffffffff8716179055610749908301836125d8565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b039490941693909317909255610788919084019084016125f1565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e906107e29087908790879061260a565b60405180910390a15050505050565b5f5f6107fc83610b32565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f6108268585610972565b9050825181511461084a5760405163512509d360e11b815260040160405180910390fd5b5f5b81518110156108a15783818151811061086757610867612572565b602002602001015182828151811061088157610881612572565b60200260200101511015610899575f925050506103e8565b60010161084c565b50600195945050505050565b6108b5611b0f565b5f6108bf84610b32565b5f81815260046020818152604080842063ffffffff891685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652959650929490936060860193909290919083018282801561096057602002820191905f5260205f20905b81548152602001906001019080831161094c575b50505050508152505091505092915050565b606061097c611b41565b61098584610b32565b80825283516109949190610c9a565b80515f908152600460208181526040808420875163ffffffff1685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652939491936060860193830182828015610a3057602002820191905f5260205f20905b815481526020019060010190808311610a1c575b505050919092525050506020820181905251610a5f57604051630cad17b760e31b815260040160405180910390fd5b806020015160600151516001600160401b03811115610a8057610a80611c6f565b604051908082528060200260200182016040528015610aa9578160200160208202803683370190505b5060408201525f5b81602001516060015151811015610b0d578160200151606001518181518110610adc57610adc612572565b602002602001015182604001518281518110610afa57610afa612572565b6020908102919091010152600101610ab1565b50610b188184610d95565b6060820152610b278184610ebf565b604001519392505050565b5f815f0151826020015163ffffffff16604051602001610b7d92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526103fe90612656565b5f5f5f610ba189610f2d565b90505f610bb08a89898c610fb7565b90505f610bc7610bc08a8461106b565b8b906110db565b90505f610c09610c0284610bfc6040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061106b565b85906110db565b90508715610c2e57610c2582610c1d61114f565b838c8b61120f565b96509450610c4e565b610c4182610c3a61114f565b838c611423565b95508515610c4e57600194505b50505050965096945050505050565b60605f610c698361165a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8281526002602052604090205463ffffffff16801580610cca5750610cc08183612679565b63ffffffff164211155b610ce75760405163640fcd6b60e11b815260040160405180910390fd5b60405163193877e160e21b815263ffffffff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906364e1df8490602401602060405180830381865afa158015610d4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d739190612695565b610d9057604051631b14174b60e01b815260040160405180910390fd5b505050565b6040805180820182525f808252602091820181905282518084019093528083529082018190525b826080015151811015610eb8575f83608001518281518110610de057610de0612572565b60200260200101519050846020015160200151815f015163ffffffff1610610e1b576040516301fa53c760e11b815260040160405180910390fd5b845184515f91610e2b9184611681565b8051909150610e3b9085906110db565b93505f5b816020015151811015610ead57866040015151811015610ea55781602001518181518110610e6f57610e6f612572565b602002602001015187604001518281518110610e8d57610e8d612572565b60200260200101818151610ea191906126b4565b9052505b600101610e3f565b505050600101610dbc565b5092915050565b5f610edf610ed084606001516117f8565b602085015160400151906110db565b90505f5f610efb84602001518486606001518760400151610404565b91509150818015610f095750805b610f265760405163439cc0cd60e01b815260040160405180910390fd5b5050505050565b604080518082019091525f80825260208201525f8080610f5a5f5160206126ee5f395f51905f52866126c7565b90505b610f668161188e565b90935091505f5160206126ee5f395f51905f528283098303610f9e576040805180820190915290815260208101919091529392505050565b5f5160206126ee5f395f51905f52600182089050610f5d565b8251602080850151845180519083015186840151805190850151875188870151604080519889018e90528801989098526060870195909552608086019390935260a085019190915260c084015260e08301526101008201526101208101919091525f907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019061014001604051602081830303815290604052805190602001205f1c61106291906126c7565b95945050505050565b604080518082019091525f8082526020820152611086611b86565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806110b457fe5b50806110d357604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526110f6611ba4565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061113057fe5b50806110d35760405163d4b68fd760e01b815260040160405180910390fd5b611157611bc2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190611240611be2565b5f5b60028110156113f7575f61125782600661259a565b905084826002811061126b5761126b612572565b6020020151518361127c835f6126da565b600c811061128c5761128c612572565b60200201528482600281106112a3576112a3612572565b602002015160200151838260016112ba91906126da565b600c81106112ca576112ca612572565b60200201528382600281106112e1576112e1612572565b60200201515151836112f48360026126da565b600c811061130457611304612572565b602002015283826002811061131b5761131b612572565b60200201515160016020020151836113348360036126da565b600c811061134457611344612572565b602002015283826002811061135b5761135b612572565b6020020151602001515f6002811061137557611375612572565b6020020151836113868360046126da565b600c811061139657611396612572565b60200201528382600281106113ad576113ad612572565b6020020151602001516001600281106113c8576113c8612572565b6020020151836113d98360056126da565b600c81106113e9576113e9612572565b602002015250600101611242565b50611400611c01565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6040805180820182528581526020808201859052825180840190935285835282018390525f91611451611be2565b5f5b6002811015611608575f61146882600661259a565b905084826002811061147c5761147c612572565b6020020151518361148d835f6126da565b600c811061149d5761149d612572565b60200201528482600281106114b4576114b4612572565b602002015160200151838260016114cb91906126da565b600c81106114db576114db612572565b60200201528382600281106114f2576114f2612572565b60200201515151836115058360026126da565b600c811061151557611515612572565b602002015283826002811061152c5761152c612572565b60200201515160016020020151836115458360036126da565b600c811061155557611555612572565b602002015283826002811061156c5761156c612572565b6020020151602001515f6002811061158657611586612572565b6020020151836115978360046126da565b600c81106115a7576115a7612572565b60200201528382600281106115be576115be612572565b6020020151602001516001600281106115d9576115d9612572565b6020020151836115ea8360056126da565b600c81106115fa576115fa612572565b602002015250600101611453565b50611611611c01565b5f6020826101808560086107d05a03fa9050808061162b57fe5b508061164a576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b5f60ff8216601f8111156103fe57604051632cd44ac360e21b815260040160405180910390fd5b611689611a9c565b5f84815260056020908152604080832063ffffffff808816855290835281842086519091168452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552919492938584019390929083018282801561171e57602002820191905f5260205f20905b81548152602001906001019080831161170a575b5050509190925250508151519192505f911515905080611742575081516020015115155b9050806117eb575f6117628787875f01518860400151896020015161190a565b9050806117825760405163439cc0cd60e01b815260040160405180910390fd5b6040808601515f8981526005602090815283822063ffffffff808c1684529082528483208a51909116835281529290208151805182558301516001820155828201518051929391926117da9260028501920190611ac6565b5090505084604001519350506117ef565b8192505b50509392505050565b604080518082019091525f8082526020820152815115801561181c57506020820151155b15611839575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206126ee5f395f51905f52846020015161186a91906126c7565b611881905f5160206126ee5f395f51905f526126b4565b905292915050565b919050565b5f80805f5160206126ee5f395f51905f5260035f5160206126ee5f395f51905f52865f5160206126ee5f395f51905f52888909090890505f6118fe827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206126ee5f395f51905f52611975565b91959194509092505050565b5f5f8360405160200161191d9190612323565b60408051601f1981840301815291815281516020928301205f8a81526004845282812063ffffffff808c1683529452919091205490925090611969908590839085908a8116906119ee16565b98975050505050505050565b5f5f61197f611c01565b611987611c1f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806119c457fe5b50826119e35760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b5f836119fb868585611a05565b1495945050505050565b5f60208451611a1491906126c7565b15611a32576040516313717da960e21b815260040160405180910390fd5b8260205b85518111611a9357611a496002856126c7565b5f03611a6a57815f528086015160205260405f209150600284049350611a81565b808601515f528160205260405f2091506002840493505b611a8c6020826126da565b9050611a36565b50949350505050565b604080516080810182525f91810182815260608201929092529081905b8152602001606081525090565b828054828255905f5260205f20908101928215611aff579160200282015b82811115611aff578251825591602001919060010190611ae4565b50611b0b929150611c3d565b5090565b60405180608001604052805f81526020015f8152602001611ab960405180604001604052805f81526020015f81525090565b60405180608001604052805f8152602001611b5a611b0f565b815260200160608152602001611b8160405180604001604052805f81526020015f81525090565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611bd5611c51565b8152602001611b81611c51565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b80821115611b0b575f8155600101611c3e565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715611ca557611ca5611c6f565b60405290565b60405160a081016001600160401b0381118282101715611ca557611ca5611c6f565b604051606081016001600160401b0381118282101715611ca557611ca5611c6f565b604051608081016001600160401b0381118282101715611ca557611ca5611c6f565b604051601f8201601f191681016001600160401b0381118282101715611d3957611d39611c6f565b604052919050565b80356001600160a01b0381168114611889575f5ffd5b803563ffffffff81168114611889575f5ffd5b5f60408284031215611d7a575f5ffd5b611d82611c83565b9050611d8d82611d41565b8152611d9b60208301611d57565b602082015292915050565b5f60408284031215611db6575f5ffd5b611dbe611c83565b823581526020928301359281019290925250919050565b5f82601f830112611de4575f5ffd5b611dec611c83565b806040840185811115611dfd575f5ffd5b845b81811015611e17578035845260209384019301611dff565b509095945050505050565b5f60808284031215611e32575f5ffd5b611e3a611c83565b9050611e468383611dd5565b8152611d9b8360408401611dd5565b5f6001600160401b03821115611e6d57611e6d611c6f565b5060051b60200190565b5f82601f830112611e86575f5ffd5b8135611e99611e9482611e55565b611d11565b8082825260208201915060208360051b860101925085831115611eba575f5ffd5b602085015b83811015611ed7578035835260209283019201611ebf565b5095945050505050565b5f60608284031215611ef1575f5ffd5b611ef9611c83565b9050611f058383611da6565b815260408201356001600160401b03811115611f1f575f5ffd5b611f2b84828501611e77565b60208301525092915050565b5f6101208284031215611f48575f5ffd5b611f50611cab565b9050611f5b82611d57565b815260208281013590820152611f748360408401611da6565b6040820152611f868360808401611e22565b60608201526101008201356001600160401b03811115611fa4575f5ffd5b8201601f81018413611fb4575f5ffd5b8035611fc2611e9482611e55565b8082825260208201915060208360051b850101925086831115611fe3575f5ffd5b602084015b838110156120f35780356001600160401b03811115612005575f5ffd5b85016060818a03601f1901121561201a575f5ffd5b612022611ccd565b61202e60208301611d57565b815260408201356001600160401b03811115612048575f5ffd5b82016020810190603f018b1361205c575f5ffd5b80356001600160401b0381111561207557612075611c6f565b612088601f8201601f1916602001611d11565b8181528c602083850101111561209c575f5ffd5b816020840160208301375f6020838301015280602085015250505060608201356001600160401b038111156120cf575f5ffd5b6120de8b602083860101611ee1565b60408301525084525060209283019201611fe8565b5060808501525091949350505050565b5f5f5f60808486031215612115575f5ffd5b61211f8585611d6a565b925060408401356001600160401b03811115612139575f5ffd5b61214586828701611f37565b92505060608401356001600160401b03811115612160575f5ffd5b8401601f81018613612170575f5ffd5b803561217e611e9482611e55565b8082825260208201915060208360051b85010192508883111561219f575f5ffd5b6020840193505b828410156121d057833561ffff811681146121bf575f5ffd5b8252602093840193909101906121a6565b809450505050509250925092565b5f5f606083850312156121ef575f5ffd5b6121f98484611d6a565b915060408301356001600160401b03811115612213575f5ffd5b61221f85828601611f37565b9150509250929050565b602080825282518282018190525f918401906040840190835b81811015611e17578351835260209384019390920191600101612242565b5f5f5f5f6101208587031215612274575f5ffd5b843593506122858660208701611da6565b92506122948660608701611e22565b91506122a38660e08701611da6565b905092959194509250565b5f5f5f608084860312156122c0575f5ffd5b6122ca8585611d6a565b92506122d860408501611d57565b929592945050506060919091013590565b5f8151808452602084019350602083015f5b828110156123195781518652602095860195909101906001016122fb565b5093949350505050565b60208082528251805183830152015160408201525f602083015160608084015261235060808401826122e9565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6040828403121561239d575f5ffd5b6103fb8383611d6a565b5f604082840312156123b7575f5ffd5b50919050565b5f5f5f5f60c085870312156123d0575f5ffd5b6123da86866123a7565b93506123e860408601611d57565b925060608501356001600160401b03811115612402575f5ffd5b850160a08188031215612413575f5ffd5b61241b611cef565b81358152602080830135908201526124368860408401611da6565b604082015260808201356001600160401b03811115612453575f5ffd5b61245f89828501611e77565b60608301525092506122a3905086608087016123a7565b5f5f5f60808486031215612488575f5ffd5b6124928585611d6a565b925060408401356001600160401b038111156124ac575f5ffd5b6124b886828701611f37565b92505060608401356001600160401b038111156124d3575f5ffd5b6124df86828701611e77565b9150509250925092565b5f5f606083850312156124fa575f5ffd5b6125048484611d6a565b915061251260408401611d57565b90509250929050565b80518252602081015160208301525f6040820151612546604085018280518252602090810151910152565b50606082015160a0608085015261235060a08501826122e9565b602081525f6103fb602083018461251b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103fe576103fe612586565b634e487b7160e01b5f52601260045260245ffd5b5f826125d3576125d36125b1565b500490565b5f602082840312156125e8575f5ffd5b6103fb82611d41565b5f60208284031215612601575f5ffd5b6103fb82611d57565b6001600160a01b0361261b85611d41565b16815263ffffffff61262f60208601611d57565b16602082015263ffffffff83166040820152608060608201525f611062608083018461251b565b805160208083015191908110156123b7575f1960209190910360031b1b16919050565b63ffffffff81811683821601908111156103fe576103fe612586565b5f602082840312156126a5575f5ffd5b815180151581146103e8575f5ffd5b818103818111156103fe576103fe612586565b5f826126d5576126d56125b1565b500690565b808201808211156103fe576103fe61258656fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122031963e94296179a019ba570b979e00f5f8e1fb5a3a141a6bdbf11d381fa34d4a64736f6c634300081b0033", } // BN254CertificateVerifierABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/ECDSACertificateVerifier/binding.go b/pkg/bindings/ECDSACertificateVerifier/binding.go index c0c87dc80b..d7f13abdc8 100644 --- a/pkg/bindings/ECDSACertificateVerifier/binding.go +++ b/pkg/bindings/ECDSACertificateVerifier/binding.go @@ -57,7 +57,7 @@ type OperatorSet struct { // ECDSACertificateVerifierMetaData contains all meta data concerning the ECDSACertificateVerifier contract. var ECDSACertificateVerifierMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_operatorTableUpdater\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableUpdater\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateCertificateDigest\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorInfo\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.ECDSAOperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorInfos\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIOperatorTableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorTableUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableUpdater\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIOperatorTableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structIOperatorTableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f5ffd5b5060405161244c38038061244c83398101604081905261002e9161016d565b6001600160a01b03821660805280806100468161005b565b60a0525061005490506100a1565b5050610297565b5f5f829050601f8151111561008e578260405163305a27a960e01b8152600401610085919061023c565b60405180910390fd5b805161009982610271565b179392505050565b5f54610100900460ff16156101085760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610085565b5f5460ff90811614610157575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017e575f5ffd5b82516001600160a01b0381168114610194575f5ffd5b60208401519092506001600160401b038111156101af575f5ffd5b8301601f810185136101bf575f5ffd5b80516001600160401b038111156101d8576101d8610159565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020657610206610159565b60405281815282820160200187101561021d575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610291575f198160200360031b1b821691505b50919050565b60805160a05161217f6102cd5f395f8181610679015261123f01525f81816101db015281816106ad0152610e74015261217f5ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80636141879e1161009357806384818920116100635780638481892014610248578063be86e0b21461025b578063c0da24201461027e578063f698da2514610291575f5ffd5b80636141879e146101c357806368d6e081146101d65780637c85ac4c1461021557806380c7d3f314610235575f5ffd5b806323c2a3cb116100ce57806323c2a3cb1461015e57806354fd4d501461018657806356d482f51461019b5780635ddb9b5b146101b0575f5ffd5b806304cdbae4146100f4578063082ef73d1461011d578063184674341461013d575b5f5ffd5b6101076101023660046117b7565b610299565b60405161011491906117e9565b60405180910390f35b61013061012b3660046118e3565b61049d565b6040516101149190611979565b61015061014b36600461198b565b6105d0565b604051908152602001610114565b61017161016c3660046119b3565b61063f565b60405163ffffffff9091168152602001610114565b61018e610672565b60405161011491906119fc565b6101ae6101a9366004611a4e565b6106a2565b005b6101716101be366004611ac0565b61089f565b6101716101d1366004611ac0565b6108c5565b6101fd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6102286102233660046119b3565b6108eb565b6040516101149190611ada565b610107610243366004611b4d565b610a59565b6101fd610256366004611ac0565b610a65565b61026e610269366004611b98565b610a8e565b6040519015158152602001610114565b61026e61028c366004611c7a565b610b21565b610150610c13565b60605f6102b36102ae36869003860186611ac0565b610cd3565b5f8181526003602052604090205490915063ffffffff8481169116146102ec57604051630cad17b760e31b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff871684529091529020548061032957604051630cad17b760e31b815260040160405180910390fd5b5f82815260056020908152604080832063ffffffff88168452825280832083805290915281206001015490816001600160401b0381111561036c5761036c61182b565b604051908082528060200260200182016040528015610395578160200160208202803683370190505b5090505f5b83811015610490575f85815260056020908152604080832063ffffffff808c168552908352818420908516845282528083206001018054825181850281018501909352808352919290919083018282801561041257602002820191905f5260205f20905b8154815260200190600101908083116103fe575b509394505f93505050505b81518110801561042c57508481105b156104865781818151811061044357610443611cf0565b602002602001015184828151811061045d5761045d611cf0565b602002602001018181516104719190611d18565b9052508061047e81611d2b565b91505061041d565b505060010161039a565b5093505050505b92915050565b604080518082019091525f8152606060208201525f6104bb85610cd3565b5f81815260046020908152604080832063ffffffff808a1685529252909120549192508416106105315760405162461bcd60e51b815260206004820152601c60248201527f4f70657261746f7220696e646578206f7574206f6620626f756e647300000000604482015260640160405180910390fd5b5f81815260056020908152604080832063ffffffff808916855290835281842090871684528252918290208251808401845281546001600160a01b03168152600182018054855181860281018601909652808652919492938581019392908301828280156105bc57602002820191905f5260205f20905b8154815260200190600101908083116105a8575b5050505050815250509150505b9392505050565b604080517fda346acb3ce99e7c5132bf8cafb159ad8085970ebfdba78007ef0fe163063d14602082015263ffffffff841691810191909152606081018290525f90819060800160405160208183030381529060405280519060200120905061063781610d36565b949350505050565b5f5f61064a84610cd3565b5f90815260046020908152604080832063ffffffff8716845290915290205491505092915050565b606061069d7f0000000000000000000000000000000000000000000000000000000000000000610d7c565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106eb5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106fe6102ae36889003880188611ac0565b5f8181526003602052604090205490915063ffffffff9081169086161161073857604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff8916845290915281208490555b838110156107c45784848281811061077457610774611cf0565b90506020028101906107869190611d43565b5f83815260056020908152604080832063ffffffff808c168552908352818420908616845290915290206107ba8282611d78565b505060010161075a565b505f818152600360209081526040909120805463ffffffff191663ffffffff88161790556107f490830183611e7b565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b03949094169390931790925561083391908401908401611e96565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4f588da9ec57976194a79b5594f8f8782923d93013df2b9ed12fe125805011ef9061088f908890889088908890611eaf565b60405180910390a1505050505050565b5f5f6108aa83610cd3565b5f9081526003602052604090205463ffffffff169392505050565b5f5f6108d083610cd3565b5f9081526002602052604090205463ffffffff169392505050565b60605f6108f784610cd3565b5f81815260046020908152604080832063ffffffff8089168552925282205492935082166001600160401b038111156109325761093261182b565b60405190808252806020026020018201604052801561097757816020015b604080518082019091525f8152606060208201528152602001906001900390816109505790505b5090505f5b8263ffffffff168163ffffffff161015610a4f575f84815260056020908152604080832063ffffffff808b16855290835281842090851684528252918290208251808401845281546001600160a01b0316815260018201805485518186028101860190965280865291949293858101939290830182828015610a1b57602002820191905f5260205f20905b815481526020019060010190808311610a07575b505050505081525050828263ffffffff1681518110610a3c57610a3c611cf0565b602090810291909101015260010161097c565b5095945050505050565b60606105c98383610db9565b5f5f610a7083610cd3565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f610a9a8585610db9565b90508251815114610abe5760405163512509d360e11b815260040160405180910390fd5b5f5b8151811015610b1557838181518110610adb57610adb611cf0565b6020026020010151828281518110610af557610af5611cf0565b60200260200101511015610b0d575f925050506105c9565b600101610ac0565b50600195945050505050565b5f5f610b2d8686610db9565b90505f610b41876101026020890189611e96565b82519091508414610b655760405163512509d360e11b815260040160405180910390fd5b5f5b8251811015610c05575f612710878784818110610b8657610b86611cf0565b9050602002016020810190610b9b9190611fe2565b61ffff16848481518110610bb157610bb1611cf0565b6020026020010151610bc39190611d61565b610bcd9190612017565b905080848381518110610be257610be2611cf0565b60200260200101511015610bfc575f945050505050610637565b50600101610b67565b506001979650505050505050565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f91ab3d17e3a50a9d89e63fd30b92be7f5336b03b287bb946787a83a9d62a27667f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610c80611237565b8051602091820120604051610cb8949392309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60405160208183030381529060405280519060200120905090565b5f815f0151826020015163ffffffff16604051602001610d1e92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526104979061202a565b5f610d3f610c13565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610d88836112ac565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60605f610dce6102ae36869003860186611ac0565b5f8181526002602090815260409091205491925063ffffffff90911690610df790850185611e96565b610e01919061204d565b63ffffffff16421115610e275760405163640fcd6b60e11b815260040160405180910390fd5b610e346020840184611e96565b5f8281526003602052604090205463ffffffff908116911614610e6a57604051630cad17b760e31b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166364e1df84610ea66020860186611e96565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa158015610ee6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0a9190612069565b610f2757604051631b14174b60e01b815260040160405180910390fd5b5f610f39856101026020870187611e96565b90505f81516001600160401b03811115610f5557610f5561182b565b604051908082528060200260200182016040528015610f7e578160200160208202803683370190505b5090505f610f9c610f926020880188611e96565b87602001356105d0565b90505f80610fea83610fb160408b018b612088565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506112d392505050565b915091508061100c5760405163439cc0cd60e01b815260040160405180910390fd5b5f5b8251811015611229575f83828151811061102a5761102a611cf0565b602002602001015190505f5f905061105d60405180604001604052805f6001600160a01b03168152602001606081525090565b5f5b60045f8c81526020019081526020015f205f8e5f0160208101906110839190611e96565b63ffffffff1663ffffffff1681526020019081526020015f20548110156111885760055f8c81526020019081526020015f205f8e5f0160208101906110c89190611e96565b63ffffffff908116825260208083019390935260409182015f90812091851681529083528190208151808301835281546001600160a01b03168152600182018054845181870281018701909552808552919492938584019390929083018282801561115057602002820191905f5260205f20905b81548152602001906001019080831161113c575b5050505050815250509150836001600160a01b0316825f01516001600160a01b0316036111805760019250611188565b60010161105f565b50816111a75760405163439cc0cd60e01b815260040160405180910390fd5b60208101515f5b8151811080156111be5750895181105b15611218578181815181106111d5576111d5611cf0565b60200260200101518a82815181106111ef576111ef611cf0565b602002602001018181516112039190611d18565b9052508061121081611d2b565b9150506111ae565b50506001909301925061100e915050565b509298975050505050505050565b60605f6112637f0000000000000000000000000000000000000000000000000000000000000000610d7c565b9050805f8151811061127757611277611cf0565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b5f60ff8216601f81111561049757604051632cd44ac360e21b815260040160405180910390fd5b60605f5f83511180156112f15750604183516112ef91906120ca565b155b61130e57604051634be6321b60e01b815260040160405180910390fd5b5f6041845161131d9190612017565b9050806001600160401b038111156113375761133761182b565b604051908082528060200260200182016040528015611360578160200160208202803683370190505b5092505f5b818110156114e257604080516041808252608082019092525f916020820181803683370190505090505f5b60418110156113fb5786816113a6856041611d61565b6113b09190611d18565b815181106113c0576113c0611cf0565b602001015160f81c60f81b8282815181106113dd576113dd611cf0565b60200101906001600160f81b03191690815f1a905350600101611390565b505f5f61140889846114f0565b90925090505f816004811115611420576114206120dd565b14158061143457506001600160a01b038216155b1561144757505f94506114e99350505050565b5f8411801561148b57508661145d6001866120f1565b8151811061146d5761146d611cf0565b60200260200101516001600160a01b0316826001600160a01b031611155b1561149e57505f94506114e99350505050565b6114ab828a855f1961152f565b818785815181106114be576114be611cf0565b6001600160a01b039290921660209283029190910190910152505050600101611365565b5060019150505b9250929050565b5f5f8251604103611524576020830151604084015160608501515f1a61151887828585611587565b945094505050506114e9565b505f905060026114e9565b4281101561155057604051630819bdcd60e01b815260040160405180910390fd5b6115646001600160a01b0385168484611644565b61158157604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115bc57505f9050600361163b565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561160d573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611635575f6001925092505061163b565b91505f90505b94509492505050565b5f5f5f61165185856114f0565b90925090505f816004811115611669576116696120dd565b1480156116875750856001600160a01b0316826001600160a01b0316145b8061169857506116988686866116a2565b9695505050505050565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016116ca929190612104565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611708919061211c565b5f60405180830381855afa9150503d805f8114611740576040519150601f19603f3d011682016040523d82523d5f602084013e611745565b606091505b509150915081801561175957506020815110155b801561169857508051630b135d3f60e11b9061177e9083016020908101908401612132565b149695505050505050565b5f60408284031215611799575f5ffd5b50919050565b803563ffffffff811681146117b2575f5ffd5b919050565b5f5f606083850312156117c8575f5ffd5b6117d28484611789565b91506117e06040840161179f565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015611820578351835260209384019390920191600101611802565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156118675761186761182b565b604052919050565b6001600160a01b0381168114611883575f5ffd5b50565b5f60408284031215611896575f5ffd5b604080519081016001600160401b03811182821017156118b8576118b861182b565b60405290508082356118c98161186f565b81526118d76020840161179f565b60208201525092915050565b5f5f5f608084860312156118f5575f5ffd5b6118ff8585611886565b925061190d6040850161179f565b915061191b6060850161179f565b90509250925092565b80516001600160a01b03168252602080820151604082850181905281519085018190525f929190910190829060608601905b80831015610a4f5783518252602082019150602084019350600183019250611956565b602081525f6105c96020830184611924565b5f5f6040838503121561199c575f5ffd5b6119a58361179f565b946020939093013593505050565b5f5f606083850312156119c4575f5ffd5b6117d28484611886565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105c960208301846119ce565b5f5f83601f840112611a1e575f5ffd5b5081356001600160401b03811115611a34575f5ffd5b6020830191508360208260051b85010111156114e9575f5ffd5b5f5f5f5f5f60c08688031215611a62575f5ffd5b611a6c8787611789565b9450611a7a6040870161179f565b935060608601356001600160401b03811115611a94575f5ffd5b611aa088828901611a0e565b9094509250611ab490508760808801611789565b90509295509295909350565b5f60408284031215611ad0575f5ffd5b6105c98383611886565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611b3157603f19878603018452611b1c858351611924565b94506020938401939190910190600101611b00565b50929695505050505050565b5f60608284031215611799575f5ffd5b5f5f60608385031215611b5e575f5ffd5b611b688484611789565b915060408301356001600160401b03811115611b82575f5ffd5b611b8e85828601611b3d565b9150509250929050565b5f5f5f60808486031215611baa575f5ffd5b611bb48585611789565b925060408401356001600160401b03811115611bce575f5ffd5b611bda86828701611b3d565b92505060608401356001600160401b03811115611bf5575f5ffd5b8401601f81018613611c05575f5ffd5b80356001600160401b03811115611c1e57611c1e61182b565b8060051b611c2e6020820161183f565b91825260208184018101929081019089841115611c49575f5ffd5b6020850194505b83851015611c6b578435825260209485019490910190611c50565b80955050505050509250925092565b5f5f5f5f60808587031215611c8d575f5ffd5b611c978686611789565b935060408501356001600160401b03811115611cb1575f5ffd5b611cbd87828801611b3d565b93505060608501356001600160401b03811115611cd8575f5ffd5b611ce487828801611a0e565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561049757610497611d04565b5f60018201611d3c57611d3c611d04565b5060010190565b5f8235603e19833603018112611d57575f5ffd5b9190910192915050565b808202811582820484141761049757610497611d04565b8135611d838161186f565b81546001600160a01b0319166001600160a01b0391909116178155602082013536839003601e19018112611db5575f5ffd5b820180356001600160401b03811115611dcc575f5ffd5b6020820191508060051b3603821315611de3575f5ffd5b600183016001600160401b03821115611dfe57611dfe61182b565b68010000000000000000821115611e1757611e1761182b565b805482825580831015611e4c575f828152602090208381019082015b80821015611e49575f8255600182019150611e33565b50505b505f90815260208120905b82811015611e7357833582820155602090930192600101611e57565b505050505050565b5f60208284031215611e8b575f5ffd5b81356105c98161186f565b5f60208284031215611ea6575f5ffd5b6105c98261179f565b5f608082018635611ebf8161186f565b6001600160a01b0316835263ffffffff611edb6020890161179f565b16602084015263ffffffff861660408401526080606084015283905260a0600584901b83018101908301855f603e1936839003015b87821015611fd357868503609f190184528235818112611f2e575f5ffd5b89018035611f3b8161186f565b6001600160a01b03168652602081013536829003601e19018112611f5d575f5ffd5b016020810190356001600160401b03811115611f77575f5ffd5b8060051b803603831315611f89575f5ffd5b60406020890181905288018290526001600160fb1b03821115611faa575f5ffd5b808360608a01376060818901019750505050602083019250602084019350600182019150611f10565b50929998505050505050505050565b5f60208284031215611ff2575f5ffd5b813561ffff811681146105c9575f5ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261202557612025612003565b500490565b80516020808301519190811015611799575f1960209190910360031b1b16919050565b63ffffffff818116838216019081111561049757610497611d04565b5f60208284031215612079575f5ffd5b815180151581146105c9575f5ffd5b5f5f8335601e1984360301811261209d575f5ffd5b8301803591506001600160401b038211156120b6575f5ffd5b6020019150368190038213156114e9575f5ffd5b5f826120d8576120d8612003565b500690565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561049757610497611d04565b828152604060208201525f61063760408301846119ce565b5f82518060208501845e5f920191825250919050565b5f60208284031215612142575f5ffd5b505191905056fea26469706673582212203944a2d5eacbd5ec7762fdbc633863a51d890003c8be9eac36e3df64b78835b364736f6c634300081b0033", + Bin: "0x60c060405234801561000f575f5ffd5b5060405161244c38038061244c83398101604081905261002e9161016d565b6001600160a01b03821660805280806100468161005b565b60a0525061005490506100a1565b5050610297565b5f5f829050601f8151111561008e578260405163305a27a960e01b8152600401610085919061023c565b60405180910390fd5b805161009982610271565b179392505050565b5f54610100900460ff16156101085760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610085565b5f5460ff90811614610157575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017e575f5ffd5b82516001600160a01b0381168114610194575f5ffd5b60208401519092506001600160401b038111156101af575f5ffd5b8301601f810185136101bf575f5ffd5b80516001600160401b038111156101d8576101d8610159565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020657610206610159565b60405281815282820160200187101561021d575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610291575f198160200360031b1b821691505b50919050565b60805160a05161217f6102cd5f395f8181610679015261123f01525f81816101db015281816106ad0152610e74015261217f5ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80636141879e1161009357806384818920116100635780638481892014610248578063be86e0b21461025b578063c0da24201461027e578063f698da2514610291575f5ffd5b80636141879e146101c357806368d6e081146101d65780637c85ac4c1461021557806380c7d3f314610235575f5ffd5b806323c2a3cb116100ce57806323c2a3cb1461015e57806354fd4d501461018657806356d482f51461019b5780635ddb9b5b146101b0575f5ffd5b806304cdbae4146100f4578063082ef73d1461011d578063184674341461013d575b5f5ffd5b6101076101023660046117b7565b610299565b60405161011491906117e9565b60405180910390f35b61013061012b3660046118e3565b61049d565b6040516101149190611979565b61015061014b36600461198b565b6105d0565b604051908152602001610114565b61017161016c3660046119b3565b61063f565b60405163ffffffff9091168152602001610114565b61018e610672565b60405161011491906119fc565b6101ae6101a9366004611a4e565b6106a2565b005b6101716101be366004611ac0565b61089f565b6101716101d1366004611ac0565b6108c5565b6101fd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6102286102233660046119b3565b6108eb565b6040516101149190611ada565b610107610243366004611b4d565b610a59565b6101fd610256366004611ac0565b610a65565b61026e610269366004611b98565b610a8e565b6040519015158152602001610114565b61026e61028c366004611c7a565b610b21565b610150610c13565b60605f6102b36102ae36869003860186611ac0565b610cd3565b5f8181526003602052604090205490915063ffffffff8481169116146102ec57604051630cad17b760e31b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff871684529091529020548061032957604051630cad17b760e31b815260040160405180910390fd5b5f82815260056020908152604080832063ffffffff88168452825280832083805290915281206001015490816001600160401b0381111561036c5761036c61182b565b604051908082528060200260200182016040528015610395578160200160208202803683370190505b5090505f5b83811015610490575f85815260056020908152604080832063ffffffff808c168552908352818420908516845282528083206001018054825181850281018501909352808352919290919083018282801561041257602002820191905f5260205f20905b8154815260200190600101908083116103fe575b509394505f93505050505b81518110801561042c57508481105b156104865781818151811061044357610443611cf0565b602002602001015184828151811061045d5761045d611cf0565b602002602001018181516104719190611d18565b9052508061047e81611d2b565b91505061041d565b505060010161039a565b5093505050505b92915050565b604080518082019091525f8152606060208201525f6104bb85610cd3565b5f81815260046020908152604080832063ffffffff808a1685529252909120549192508416106105315760405162461bcd60e51b815260206004820152601c60248201527f4f70657261746f7220696e646578206f7574206f6620626f756e647300000000604482015260640160405180910390fd5b5f81815260056020908152604080832063ffffffff808916855290835281842090871684528252918290208251808401845281546001600160a01b03168152600182018054855181860281018601909652808652919492938581019392908301828280156105bc57602002820191905f5260205f20905b8154815260200190600101908083116105a8575b5050505050815250509150505b9392505050565b604080517fda346acb3ce99e7c5132bf8cafb159ad8085970ebfdba78007ef0fe163063d14602082015263ffffffff841691810191909152606081018290525f90819060800160405160208183030381529060405280519060200120905061063781610d36565b949350505050565b5f5f61064a84610cd3565b5f90815260046020908152604080832063ffffffff8716845290915290205491505092915050565b606061069d7f0000000000000000000000000000000000000000000000000000000000000000610d7c565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106eb5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106fe6102ae36889003880188611ac0565b5f8181526003602052604090205490915063ffffffff9081169086161161073857604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff8916845290915281208490555b838110156107c45784848281811061077457610774611cf0565b90506020028101906107869190611d43565b5f83815260056020908152604080832063ffffffff808c168552908352818420908616845290915290206107ba8282611d78565b505060010161075a565b505f818152600360209081526040909120805463ffffffff191663ffffffff88161790556107f490830183611e7b565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b03949094169390931790925561083391908401908401611e96565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4f588da9ec57976194a79b5594f8f8782923d93013df2b9ed12fe125805011ef9061088f908890889088908890611eaf565b60405180910390a1505050505050565b5f5f6108aa83610cd3565b5f9081526003602052604090205463ffffffff169392505050565b5f5f6108d083610cd3565b5f9081526002602052604090205463ffffffff169392505050565b60605f6108f784610cd3565b5f81815260046020908152604080832063ffffffff8089168552925282205492935082166001600160401b038111156109325761093261182b565b60405190808252806020026020018201604052801561097757816020015b604080518082019091525f8152606060208201528152602001906001900390816109505790505b5090505f5b8263ffffffff168163ffffffff161015610a4f575f84815260056020908152604080832063ffffffff808b16855290835281842090851684528252918290208251808401845281546001600160a01b0316815260018201805485518186028101860190965280865291949293858101939290830182828015610a1b57602002820191905f5260205f20905b815481526020019060010190808311610a07575b505050505081525050828263ffffffff1681518110610a3c57610a3c611cf0565b602090810291909101015260010161097c565b5095945050505050565b60606105c98383610db9565b5f5f610a7083610cd3565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f610a9a8585610db9565b90508251815114610abe5760405163512509d360e11b815260040160405180910390fd5b5f5b8151811015610b1557838181518110610adb57610adb611cf0565b6020026020010151828281518110610af557610af5611cf0565b60200260200101511015610b0d575f925050506105c9565b600101610ac0565b50600195945050505050565b5f5f610b2d8686610db9565b90505f610b41876101026020890189611e96565b82519091508414610b655760405163512509d360e11b815260040160405180910390fd5b5f5b8251811015610c05575f612710878784818110610b8657610b86611cf0565b9050602002016020810190610b9b9190611fe2565b61ffff16848481518110610bb157610bb1611cf0565b6020026020010151610bc39190611d61565b610bcd9190612017565b905080848381518110610be257610be2611cf0565b60200260200101511015610bfc575f945050505050610637565b50600101610b67565b506001979650505050505050565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f91ab3d17e3a50a9d89e63fd30b92be7f5336b03b287bb946787a83a9d62a27667f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610c80611237565b8051602091820120604051610cb8949392309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60405160208183030381529060405280519060200120905090565b5f815f0151826020015163ffffffff16604051602001610d1e92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526104979061202a565b5f610d3f610c13565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610d88836112ac565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60605f610dce6102ae36869003860186611ac0565b5f8181526002602090815260409091205491925063ffffffff90911690610df790850185611e96565b610e01919061204d565b63ffffffff16421115610e275760405163640fcd6b60e11b815260040160405180910390fd5b610e346020840184611e96565b5f8281526003602052604090205463ffffffff908116911614610e6a57604051630cad17b760e31b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166364e1df84610ea66020860186611e96565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa158015610ee6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0a9190612069565b610f2757604051631b14174b60e01b815260040160405180910390fd5b5f610f39856101026020870187611e96565b90505f81516001600160401b03811115610f5557610f5561182b565b604051908082528060200260200182016040528015610f7e578160200160208202803683370190505b5090505f610f9c610f926020880188611e96565b87602001356105d0565b90505f80610fea83610fb160408b018b612088565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506112d392505050565b915091508061100c5760405163439cc0cd60e01b815260040160405180910390fd5b5f5b8251811015611229575f83828151811061102a5761102a611cf0565b602002602001015190505f5f905061105d60405180604001604052805f6001600160a01b03168152602001606081525090565b5f5b60045f8c81526020019081526020015f205f8e5f0160208101906110839190611e96565b63ffffffff1663ffffffff1681526020019081526020015f20548110156111885760055f8c81526020019081526020015f205f8e5f0160208101906110c89190611e96565b63ffffffff908116825260208083019390935260409182015f90812091851681529083528190208151808301835281546001600160a01b03168152600182018054845181870281018701909552808552919492938584019390929083018282801561115057602002820191905f5260205f20905b81548152602001906001019080831161113c575b5050505050815250509150836001600160a01b0316825f01516001600160a01b0316036111805760019250611188565b60010161105f565b50816111a75760405163439cc0cd60e01b815260040160405180910390fd5b60208101515f5b8151811080156111be5750895181105b15611218578181815181106111d5576111d5611cf0565b60200260200101518a82815181106111ef576111ef611cf0565b602002602001018181516112039190611d18565b9052508061121081611d2b565b9150506111ae565b50506001909301925061100e915050565b509298975050505050505050565b60605f6112637f0000000000000000000000000000000000000000000000000000000000000000610d7c565b9050805f8151811061127757611277611cf0565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b5f60ff8216601f81111561049757604051632cd44ac360e21b815260040160405180910390fd5b60605f5f83511180156112f15750604183516112ef91906120ca565b155b61130e57604051634be6321b60e01b815260040160405180910390fd5b5f6041845161131d9190612017565b9050806001600160401b038111156113375761133761182b565b604051908082528060200260200182016040528015611360578160200160208202803683370190505b5092505f5b818110156114e257604080516041808252608082019092525f916020820181803683370190505090505f5b60418110156113fb5786816113a6856041611d61565b6113b09190611d18565b815181106113c0576113c0611cf0565b602001015160f81c60f81b8282815181106113dd576113dd611cf0565b60200101906001600160f81b03191690815f1a905350600101611390565b505f5f61140889846114f0565b90925090505f816004811115611420576114206120dd565b14158061143457506001600160a01b038216155b1561144757505f94506114e99350505050565b5f8411801561148b57508661145d6001866120f1565b8151811061146d5761146d611cf0565b60200260200101516001600160a01b0316826001600160a01b031611155b1561149e57505f94506114e99350505050565b6114ab828a855f1961152f565b818785815181106114be576114be611cf0565b6001600160a01b039290921660209283029190910190910152505050600101611365565b5060019150505b9250929050565b5f5f8251604103611524576020830151604084015160608501515f1a61151887828585611587565b945094505050506114e9565b505f905060026114e9565b4281101561155057604051630819bdcd60e01b815260040160405180910390fd5b6115646001600160a01b0385168484611644565b61158157604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115bc57505f9050600361163b565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561160d573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611635575f6001925092505061163b565b91505f90505b94509492505050565b5f5f5f61165185856114f0565b90925090505f816004811115611669576116696120dd565b1480156116875750856001600160a01b0316826001600160a01b0316145b8061169857506116988686866116a2565b9695505050505050565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016116ca929190612104565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611708919061211c565b5f60405180830381855afa9150503d805f8114611740576040519150601f19603f3d011682016040523d82523d5f602084013e611745565b606091505b509150915081801561175957506020815110155b801561169857508051630b135d3f60e11b9061177e9083016020908101908401612132565b149695505050505050565b5f60408284031215611799575f5ffd5b50919050565b803563ffffffff811681146117b2575f5ffd5b919050565b5f5f606083850312156117c8575f5ffd5b6117d28484611789565b91506117e06040840161179f565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015611820578351835260209384019390920191600101611802565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156118675761186761182b565b604052919050565b6001600160a01b0381168114611883575f5ffd5b50565b5f60408284031215611896575f5ffd5b604080519081016001600160401b03811182821017156118b8576118b861182b565b60405290508082356118c98161186f565b81526118d76020840161179f565b60208201525092915050565b5f5f5f608084860312156118f5575f5ffd5b6118ff8585611886565b925061190d6040850161179f565b915061191b6060850161179f565b90509250925092565b80516001600160a01b03168252602080820151604082850181905281519085018190525f929190910190829060608601905b80831015610a4f5783518252602082019150602084019350600183019250611956565b602081525f6105c96020830184611924565b5f5f6040838503121561199c575f5ffd5b6119a58361179f565b946020939093013593505050565b5f5f606083850312156119c4575f5ffd5b6117d28484611886565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105c960208301846119ce565b5f5f83601f840112611a1e575f5ffd5b5081356001600160401b03811115611a34575f5ffd5b6020830191508360208260051b85010111156114e9575f5ffd5b5f5f5f5f5f60c08688031215611a62575f5ffd5b611a6c8787611789565b9450611a7a6040870161179f565b935060608601356001600160401b03811115611a94575f5ffd5b611aa088828901611a0e565b9094509250611ab490508760808801611789565b90509295509295909350565b5f60408284031215611ad0575f5ffd5b6105c98383611886565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611b3157603f19878603018452611b1c858351611924565b94506020938401939190910190600101611b00565b50929695505050505050565b5f60608284031215611799575f5ffd5b5f5f60608385031215611b5e575f5ffd5b611b688484611789565b915060408301356001600160401b03811115611b82575f5ffd5b611b8e85828601611b3d565b9150509250929050565b5f5f5f60808486031215611baa575f5ffd5b611bb48585611789565b925060408401356001600160401b03811115611bce575f5ffd5b611bda86828701611b3d565b92505060608401356001600160401b03811115611bf5575f5ffd5b8401601f81018613611c05575f5ffd5b80356001600160401b03811115611c1e57611c1e61182b565b8060051b611c2e6020820161183f565b91825260208184018101929081019089841115611c49575f5ffd5b6020850194505b83851015611c6b578435825260209485019490910190611c50565b80955050505050509250925092565b5f5f5f5f60808587031215611c8d575f5ffd5b611c978686611789565b935060408501356001600160401b03811115611cb1575f5ffd5b611cbd87828801611b3d565b93505060608501356001600160401b03811115611cd8575f5ffd5b611ce487828801611a0e565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561049757610497611d04565b5f60018201611d3c57611d3c611d04565b5060010190565b5f8235603e19833603018112611d57575f5ffd5b9190910192915050565b808202811582820484141761049757610497611d04565b8135611d838161186f565b81546001600160a01b0319166001600160a01b0391909116178155602082013536839003601e19018112611db5575f5ffd5b820180356001600160401b03811115611dcc575f5ffd5b6020820191508060051b3603821315611de3575f5ffd5b600183016001600160401b03821115611dfe57611dfe61182b565b68010000000000000000821115611e1757611e1761182b565b805482825580831015611e4c575f828152602090208381019082015b80821015611e49575f8255600182019150611e33565b50505b505f90815260208120905b82811015611e7357833582820155602090930192600101611e57565b505050505050565b5f60208284031215611e8b575f5ffd5b81356105c98161186f565b5f60208284031215611ea6575f5ffd5b6105c98261179f565b5f608082018635611ebf8161186f565b6001600160a01b0316835263ffffffff611edb6020890161179f565b16602084015263ffffffff861660408401526080606084015283905260a0600584901b83018101908301855f603e1936839003015b87821015611fd357868503609f190184528235818112611f2e575f5ffd5b89018035611f3b8161186f565b6001600160a01b03168652602081013536829003601e19018112611f5d575f5ffd5b016020810190356001600160401b03811115611f77575f5ffd5b8060051b803603831315611f89575f5ffd5b60406020890181905288018290526001600160fb1b03821115611faa575f5ffd5b808360608a01376060818901019750505050602083019250602084019350600182019150611f10565b50929998505050505050505050565b5f60208284031215611ff2575f5ffd5b813561ffff811681146105c9575f5ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261202557612025612003565b500490565b80516020808301519190811015611799575f1960209190910360031b1b16919050565b63ffffffff818116838216019081111561049757610497611d04565b5f60208284031215612079575f5ffd5b815180151581146105c9575f5ffd5b5f5f8335601e1984360301811261209d575f5ffd5b8301803591506001600160401b038211156120b6575f5ffd5b6020019150368190038213156114e9575f5ffd5b5f826120d8576120d8612003565b500690565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561049757610497611d04565b828152604060208201525f61063760408301846119ce565b5f82518060208501845e5f920191825250919050565b5f60208284031215612142575f5ffd5b505191905056fea264697066735822122028329069b0800b699041f96edc6f6e12268382babd56fe61ee16c519674d991364736f6c634300081b0033", } // ECDSACertificateVerifierABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/IOperatorTableUpdater/binding.go b/pkg/bindings/IOperatorTableUpdater/binding.go index 8482422311..bdbff46ff0 100644 --- a/pkg/bindings/IOperatorTableUpdater/binding.go +++ b/pkg/bindings/IOperatorTableUpdater/binding.go @@ -85,7 +85,7 @@ type OperatorSet struct { // IOperatorTableUpdaterMetaData contains all meta data concerning the IOperatorTableUpdater contract. var IOperatorTableUpdaterMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalConfirmerSetReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"GeneratorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"GeneratorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", } // IOperatorTableUpdaterABI is the input ABI used to generate the binding from. @@ -296,66 +296,66 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetCurrentGlob return _IOperatorTableUpdater.Contract.GetCurrentGlobalTableRoot(&_IOperatorTableUpdater.CallOpts) } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetGlobalConfirmerSetReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { +// Solidity: function getGenerator() view returns((address,uint32)) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetGenerator(opts *bind.CallOpts) (OperatorSet, error) { var out []interface{} - err := _IOperatorTableUpdater.contract.Call(opts, &out, "getGlobalConfirmerSetReferenceTimestamp") + err := _IOperatorTableUpdater.contract.Call(opts, &out, "getGenerator") if err != nil { - return *new(uint32), err + return *new(OperatorSet), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) return out0, err } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetGlobalConfirmerSetReferenceTimestamp() (uint32, error) { - return _IOperatorTableUpdater.Contract.GetGlobalConfirmerSetReferenceTimestamp(&_IOperatorTableUpdater.CallOpts) +// Solidity: function getGenerator() view returns((address,uint32)) +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetGenerator() (OperatorSet, error) { + return _IOperatorTableUpdater.Contract.GetGenerator(&_IOperatorTableUpdater.CallOpts) } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetGlobalConfirmerSetReferenceTimestamp() (uint32, error) { - return _IOperatorTableUpdater.Contract.GetGlobalConfirmerSetReferenceTimestamp(&_IOperatorTableUpdater.CallOpts) +// Solidity: function getGenerator() view returns((address,uint32)) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetGenerator() (OperatorSet, error) { + return _IOperatorTableUpdater.Contract.GetGenerator(&_IOperatorTableUpdater.CallOpts) } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetGlobalRootConfirmerSet(opts *bind.CallOpts) (OperatorSet, error) { +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetGeneratorReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _IOperatorTableUpdater.contract.Call(opts, &out, "getGlobalRootConfirmerSet") + err := _IOperatorTableUpdater.contract.Call(opts, &out, "getGeneratorReferenceTimestamp") if err != nil { - return *new(OperatorSet), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { - return _IOperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_IOperatorTableUpdater.CallOpts) +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetGeneratorReferenceTimestamp() (uint32, error) { + return _IOperatorTableUpdater.Contract.GetGeneratorReferenceTimestamp(&_IOperatorTableUpdater.CallOpts) } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { - return _IOperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_IOperatorTableUpdater.CallOpts) +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetGeneratorReferenceTimestamp() (uint32, error) { + return _IOperatorTableUpdater.Contract.GetGeneratorReferenceTimestamp(&_IOperatorTableUpdater.CallOpts) } // GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. @@ -648,6 +648,27 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) DisableRoo return _IOperatorTableUpdater.Contract.DisableRoot(&_IOperatorTableUpdater.TransactOpts, globalTableRoot) } +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactor) SetGenerator(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _IOperatorTableUpdater.contract.Transact(opts, "setGenerator", operatorSet) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) SetGenerator(operatorSet OperatorSet) (*types.Transaction, error) { + return _IOperatorTableUpdater.Contract.SetGenerator(&_IOperatorTableUpdater.TransactOpts, operatorSet) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) SetGenerator(operatorSet OperatorSet) (*types.Transaction, error) { + return _IOperatorTableUpdater.Contract.SetGenerator(&_IOperatorTableUpdater.TransactOpts, operatorSet) +} + // SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. // // Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() @@ -669,46 +690,25 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) SetGlobalR return _IOperatorTableUpdater.Contract.SetGlobalRootConfirmationThreshold(&_IOperatorTableUpdater.TransactOpts, bps) } -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactor) SetGlobalRootConfirmerSet(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { - return _IOperatorTableUpdater.contract.Transact(opts, "setGlobalRootConfirmerSet", operatorSet) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) GeneratorInfo, (address,uint32) GeneratorConfig) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactor) UpdateGenerator(opts *bind.TransactOpts, referenceTimestamp uint32, GeneratorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, GeneratorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _IOperatorTableUpdater.contract.Transact(opts, "updateGenerator", referenceTimestamp, GeneratorInfo, GeneratorConfig) } -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.SetGlobalRootConfirmerSet(&_IOperatorTableUpdater.TransactOpts, operatorSet) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) GeneratorInfo, (address,uint32) GeneratorConfig) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) UpdateGenerator(referenceTimestamp uint32, GeneratorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, GeneratorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _IOperatorTableUpdater.Contract.UpdateGenerator(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, GeneratorInfo, GeneratorConfig) } -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.SetGlobalRootConfirmerSet(&_IOperatorTableUpdater.TransactOpts, operatorSet) -} - -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. -// -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactor) UpdateGlobalRootConfirmerSet(opts *bind.TransactOpts, referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.contract.Transact(opts, "updateGlobalRootConfirmerSet", referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) -} - -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. -// -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.UpdateGlobalRootConfirmerSet(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) -} - -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. -// -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.UpdateGlobalRootConfirmerSet(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) GeneratorInfo, (address,uint32) GeneratorConfig) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) UpdateGenerator(referenceTimestamp uint32, GeneratorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, GeneratorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _IOperatorTableUpdater.Contract.UpdateGenerator(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, GeneratorInfo, GeneratorConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. @@ -732,9 +732,9 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) UpdateOper return _IOperatorTableUpdater.Contract.UpdateOperatorTable(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) } -// IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the IOperatorTableUpdater contract. -type IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct { - Event *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated // Event containing the contract specifics and raw log +// IOperatorTableUpdaterGeneratorUpdatedIterator is returned from FilterGeneratorUpdated and is used to iterate over the raw logs and unpacked data for GeneratorUpdated events raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGeneratorUpdatedIterator struct { + Event *IOperatorTableUpdaterGeneratorUpdated // 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 @@ -748,7 +748,7 @@ type IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct // 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 *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { +func (it *IOperatorTableUpdaterGeneratorUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -757,7 +757,7 @@ func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) N if it.done { select { case log := <-it.logs: - it.Event = new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + it.Event = new(IOperatorTableUpdaterGeneratorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -772,7 +772,7 @@ func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) N // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + it.Event = new(IOperatorTableUpdaterGeneratorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -788,41 +788,41 @@ func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) N } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Error() error { +func (it *IOperatorTableUpdaterGeneratorUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Close() error { +func (it *IOperatorTableUpdaterGeneratorUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the IOperatorTableUpdater contract. -type IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated struct { - Bps uint16 - Raw types.Log // Blockchain specific contextual infos +// IOperatorTableUpdaterGeneratorUpdated represents a GeneratorUpdated event raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGeneratorUpdated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// FilterGeneratorUpdated is a free log retrieval operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator, error) { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterGeneratorUpdated(opts *bind.FilterOpts) (*IOperatorTableUpdaterGeneratorUpdatedIterator, error) { - logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") + logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "GeneratorUpdated") if err != nil { return nil, err } - return &IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator{contract: _IOperatorTableUpdater.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil + return &IOperatorTableUpdaterGeneratorUpdatedIterator{contract: _IOperatorTableUpdater.contract, event: "GeneratorUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// WatchGeneratorUpdated is a free log subscription operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGeneratorUpdated(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterGeneratorUpdated) (event.Subscription, error) { - logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") + logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "GeneratorUpdated") if err != nil { return nil, err } @@ -832,8 +832,8 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConf select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) - if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + event := new(IOperatorTableUpdaterGeneratorUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { return err } event.Raw = log @@ -854,21 +854,21 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConf }), nil } -// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// ParseGeneratorUpdated is a log parse operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated, error) { - event := new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) - if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseGeneratorUpdated(log types.Log) (*IOperatorTableUpdaterGeneratorUpdated, error) { + event := new(IOperatorTableUpdaterGeneratorUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator is returned from FilterGlobalRootConfirmerSetUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmerSetUpdated events raised by the IOperatorTableUpdater contract. -type IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator struct { - Event *IOperatorTableUpdaterGlobalRootConfirmerSetUpdated // Event containing the contract specifics and raw log +// IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct { + Event *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated // 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 @@ -882,7 +882,7 @@ type IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator struct { // 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 *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() bool { +func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -891,7 +891,7 @@ func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() boo if it.done { select { case log := <-it.logs: - it.Event = new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) + it.Event = new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -906,7 +906,7 @@ func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() boo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) + it.Event = new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -922,41 +922,41 @@ func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() boo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Error() error { +func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Close() error { +func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IOperatorTableUpdaterGlobalRootConfirmerSetUpdated represents a GlobalRootConfirmerSetUpdated event raised by the IOperatorTableUpdater contract. -type IOperatorTableUpdaterGlobalRootConfirmerSetUpdated struct { - OperatorSet OperatorSet - Raw types.Log // Blockchain specific contextual infos +// IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated struct { + Bps uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalRootConfirmerSetUpdated is a free log retrieval operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterGlobalRootConfirmerSetUpdated(opts *bind.FilterOpts) (*IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator, error) { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator, error) { - logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmerSetUpdated") + logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") if err != nil { return nil, err } - return &IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator{contract: _IOperatorTableUpdater.contract, event: "GlobalRootConfirmerSetUpdated", logs: logs, sub: sub}, nil + return &IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator{contract: _IOperatorTableUpdater.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalRootConfirmerSetUpdated is a free log subscription operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConfirmerSetUpdated(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) (event.Subscription, error) { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { - logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmerSetUpdated") + logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") if err != nil { return nil, err } @@ -966,8 +966,8 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConf select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) - if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + event := new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { return err } event.Raw = log @@ -988,12 +988,12 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConf }), nil } -// ParseGlobalRootConfirmerSetUpdated is a log parse operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseGlobalRootConfirmerSetUpdated(log types.Log) (*IOperatorTableUpdaterGlobalRootConfirmerSetUpdated, error) { - event := new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) - if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated, error) { + event := new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { return nil, err } event.Raw = log diff --git a/pkg/bindings/OperatorTableUpdater/binding.go b/pkg/bindings/OperatorTableUpdater/binding.go index c7564947b4..d03ff44d65 100644 --- a/pkg/bindings/OperatorTableUpdater/binding.go +++ b/pkg/bindings/OperatorTableUpdater/binding.go @@ -85,8 +85,13 @@ type OperatorSet struct { // OperatorTableUpdaterMetaData contains all meta data concerning the OperatorTableUpdater contract. var OperatorTableUpdaterMetaData = &bind.MetaData{ +<<<<<<< HEAD ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bn254CertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"},{\"name\":\"_ecdsaCertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INITIAL_GLOBAL_TABLE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalConfirmerSetReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_globalRootConfirmerSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_globalRootConfirmationThreshold\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"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\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", Bin: "0x60e060405234801561000f575f5ffd5b5060405161240238038061240283398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120ee6103145f395f61082201525f818161045d015281816108a30152610ac101525f8181610484015281816107780152818161086301528181610a1c01528181610cf00152610fc401526120ee5ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c806354fd4d50116100fe578063b8c143061161009e578063c5916a391161006e578063c5916a39146104ed578063eaaed9d514610512578063f2fde38b14610525578063fd967f4714610538575f5ffd5b8063b8c143061461047f578063c252aa22146104a6578063c3621f0a146104c7578063c3be1e33146104da575f5ffd5b8063715018a6116100d9578063715018a61461042c5780638da5cb5b146104345780639ea9477814610445578063ad0f958214610458575f5ffd5b806354fd4d50146103b757806364e1df84146103cc5780636f728c5014610401575f5ffd5b806328522d79116101695780633ef6cd7a116101445780633ef6cd7a1461030d5780634624e6a31461033457806346282889146103485780634af81d7a14610390575f5ffd5b806328522d791461028a57806330ef41b4146102b657806331a599d2146102e8575f5ffd5b8063193b79f3116101a4578063193b79f3146102145780631ab78d901461023c5780632370356c1461024f57806323b7b5b214610262575f5ffd5b8063021ab442146101ca5780630371406e146101df5780630f3f8edd146101f2575b5f5ffd5b6101dd6101d8366004611350565b610541565b005b6101dd6101ed3660046113e0565b61074b565b6101fa61075f565b60405163ffffffff90911681526020015b60405180910390f35b6101fa610222366004611401565b63ffffffff9081165f908152606960205260409020541690565b6101dd61024a36600461141c565b6107f2565b6101dd61025d366004611478565b61080a565b6101fa610270366004611401565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b60405190815260200161020b565b6102d86102c4366004611491565b5f908152606a602052604090205460ff1690565b604051901515815260200161020b565b60655462010000900463ffffffff9081165f90815260686020526040902054166101fa565b6102a87f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff166101fa565b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff169082015260405161020b91906114c6565b6102a87f2eddfa6e51c2e0ba986436883fbc224e895ba21e8fc61421f6b10d11e25d008e81565b6103bf61081b565b60405161020b91906114d4565b6102d86103da366004611401565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b61041461040f366004611517565b610846565b6040516001600160a01b03909116815260200161020b565b6101dd6108e5565b6033546001600160a01b0316610414565b6101dd610453366004611574565b6108f8565b6104147f000000000000000000000000000000000000000000000000000000000000000081565b6104147f000000000000000000000000000000000000000000000000000000000000000081565b6065546104b49061ffff1681565b60405161ffff909116815260200161020b565b6101dd6104d5366004611491565b610b26565b6102a86104e836600461160f565b610b9b565b6102a86104fb366004611401565b63ffffffff165f9081526067602052604090205490565b6101dd61052036600461164e565b610c03565b6101dd6105333660046116ba565b610e35565b6104b461271081565b5f54610100900460ff161580801561055f57505f54600160ff909116105b806105785750303b15801561057857505f5460ff166001145b6105e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610601575f805461ff0019166101001790555b61060a87610ea7565b61061386610ef8565b61061c85610f42565b610627848484610fad565b63ffffffff8481165f8181526067602090815260408083207f2eddfa6e51c2e0ba986436883fbc224e895ba21e8fc61421f6b10d11e25d008e908190557f10b2e5f6b212b2c1d8f17fc240726b9af6c45b2a8fff776e3ef5e5aff1c35965805460ff191660011790556068835281842080544390971663ffffffff19978816811790915584526069909252808320805490951684179094556065805462010000850265ffffffff00001990911617905592517f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d3699190a38015610742575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610753611029565b61075c81610ef8565b50565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b906107ae906066906004016116d5565b602060405180830381865afa1580156107c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ed91906116fc565b905090565b6107fa611029565b610805838383610fad565b505050565b610812611029565b61075c81610f42565b60606107ed7f0000000000000000000000000000000000000000000000000000000000000000611083565b5f600282600281111561085b5761085b611717565b0361088757507f0000000000000000000000000000000000000000000000000000000000000000919050565b600182600281111561089b5761089b611717565b036108c757507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b6108ed611029565b6108f65f610ea7565b565b5f5f5f5f61090686866110c0565b5f8e8152606a60205260409020549397509195509350915060ff1661093e5760405163504570e360e01b815260040160405180910390fd5b61094783610846565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161097291906114c6565b602060405180830381865afa15801561098d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b191906116fc565b63ffffffff168b63ffffffff16116109dc5760405163207617df60e01b815260040160405180910390fd5b610a018b8b8b8b8b8b8b6040516109f492919061172b565b6040518091039020611107565b6002836002811115610a1557610a15611717565b03610aa6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610a54856111a8565b866040518563ffffffff1660e01b8152600401610a749493929190611774565b5f604051808303815f87803b158015610a8b575f5ffd5b505af1158015610a9d573d5f5f3e3d5ffd5b50505050610b19565b6001836002811115610aba57610aba611717565b036108c7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d610af9856111ca565b866040518563ffffffff1660e01b8152600401610a7494939291906117f0565b5050505050505050505050565b610b2e611029565b5f818152606a602052604090205460ff16610b5c5760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b428263ffffffff161115610c2a57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610c5c5760405163037fa86b60e31b815260040160405180910390fd5b610c67838383610b9b565b846020013514610c8a57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610cc557610cc56118a9565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610d2a906066908a9087906004016119db565b6020604051808303815f875af1158015610d46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190611b68565b905080610d8a57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610e3d611029565b6001600160a01b038116610ea25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61075c815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610f058282611b87565b9050507f20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b3781604051610f379190611c18565b60405180910390a150565b61271061ffff82161115610f69576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610f37565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b9061100090606690879087908790600401611c26565b5f604051808303815f87803b158015611017575f5ffd5b505af1158015610742573d5f5f3e3d5ffd5b6033546001600160a01b031633146108f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b60605f61108f836111e0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f808252602082018190529060606110f785870187611d79565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461113b5760405163639d09b560e11b815260040160405180910390fd5b61118383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff8816611207565b6111a05760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6111b06112b5565b818060200190518101906111c49190611eca565b92915050565b6060818060200190518101906111c49190611f79565b5f60ff8216601f8111156111c457604051632cd44ac360e21b815260040160405180910390fd5b5f8361121486858561121e565b1495945050505050565b5f6020845161122d919061207a565b1561124b576040516313717da960e21b815260040160405180910390fd5b8260205b855181116112ac5761126260028561207a565b5f0361128357815f528086015160205260405f20915060028404935061129a565b808601515f528160205260405f2091506002840493505b6112a5602082612099565b905061124f565b50949350505050565b60405180608001604052805f81526020015f81526020016112e760405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b038116811461075c575f5ffd5b5f60408284031215611318575f5ffd5b50919050565b803561ffff811681146108e0575f5ffd5b63ffffffff8116811461075c575f5ffd5b5f60a08284031215611318575f5ffd5b5f5f5f5f5f5f6101008789031215611366575f5ffd5b8635611371816112f4565b95506113808860208901611308565b945061138e6060880161131e565b9350608087013561139e8161132f565b925060a08701356001600160401b038111156113b8575f5ffd5b6113c489828a01611340565b9250506113d48860c08901611308565b90509295509295509295565b5f604082840312156113f0575f5ffd5b6113fa8383611308565b9392505050565b5f60208284031215611411575f5ffd5b81356113fa8161132f565b5f5f5f6080848603121561142e575f5ffd5b83356114398161132f565b925060208401356001600160401b03811115611453575f5ffd5b61145f86828701611340565b92505061146f8560408601611308565b90509250925092565b5f60208284031215611488575f5ffd5b6113fa8261131e565b5f602082840312156114a1575f5ffd5b5035919050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016111c482846114a8565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8035600381106108e0575f5ffd5b5f60208284031215611527575f5ffd5b6113fa82611509565b5f5f83601f840112611540575f5ffd5b5081356001600160401b03811115611556575f5ffd5b60208301915083602082850101111561156d575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561158a575f5ffd5b87356115958161132f565b96506020880135955060408801356115ac8161132f565b945060608801356001600160401b038111156115c6575f5ffd5b6115d28a828b01611530565b90955093505060808801356001600160401b038111156115f0575f5ffd5b6115fc8a828b01611530565b989b979a50959850939692959293505050565b5f5f5f60608486031215611621575f5ffd5b8335925060208401356116338161132f565b915060408401356116438161132f565b809150509250925092565b5f5f5f5f60808587031215611661575f5ffd5b84356001600160401b03811115611676575f5ffd5b85016101208188031215611688575f5ffd5b935060208501359250604085013561169f8161132f565b915060608501356116af8161132f565b939692955090935050565b5f602082840312156116ca575f5ffd5b81356113fa816112f4565b604081016111c48284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f6020828403121561170c575f5ffd5b81516113fa8161132f565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561176a57815186526020958601959091019060010161174c565b5093949350505050565b61177e81866114a8565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526117d761016084018261173a565b9150506117e760808301846114a8565b95945050505050565b5f60c082016117ff83886114a8565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156118805786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061186a9087018261173a565b955050602093840193919091019060010161182f565b50505050809150506117e760808301846114a8565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126118d2575f5ffd5b83016020810192503590506001600160401b038111156118f0575f5ffd5b8060051b360382131561156d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e1983360301811261193d575f5ffd5b90910192915050565b8183525f6001600160fb1b0383111561195d575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f61199260408301836118bd565b606060408601526117e7606086018284611946565b5f8151808452602084019350602083015f5b8281101561176a57815161ffff168652602095860195909101906001016119b9565b6119fe8185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a082018435611a168161132f565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c08601610140850137611a656101008601866118bd565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611b47578786036101bf19018352611aa48286611929565b8035611aaf8161132f565b63ffffffff168752602081013536829003601e19018112611ace575f5ffd5b81016020810190356001600160401b03811115611ae9575f5ffd5b803603821315611af7575f5ffd5b606060208a0152611b0c60608a018284611901565b915050611b1c6040830183611929565b91508781036040890152611b308183611976565b975050506020928301929190910190600101611a88565b50505050508281036060840152611b5e81856119a7565b9695505050505050565b5f60208284031215611b78575f5ffd5b815180151581146113fa575f5ffd5b8135611b92816112f4565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611bbe8161132f565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611bee816112f4565b6001600160a01b031682526020810135611c078161132f565b63ffffffff81166020840152505050565b604081016111c48284611be3565b611c498186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611c9760808501856118bd565b60a0610140850152611cae61016085018284611946565b925050506117e76080830184611be3565b604080519081016001600160401b0381118282101715611ce157611ce1611895565b60405290565b604051608081016001600160401b0381118282101715611ce157611ce1611895565b604051601f8201601f191681016001600160401b0381118282101715611d3157611d31611895565b604052919050565b5f60408284031215611d49575f5ffd5b611d51611cbf565b90508135611d5e816112f4565b81526020820135611d6e8161132f565b602082015292915050565b5f5f5f5f60c08587031215611d8c575f5ffd5b611d968686611d39565b9350611da460408601611509565b9250611db38660608701611d39565b915060a08501356001600160401b03811115611dcd575f5ffd5b8501601f81018713611ddd575f5ffd5b80356001600160401b03811115611df657611df6611895565b611e09601f8201601f1916602001611d09565b818152886020838501011115611e1d575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611e5657611e56611895565b5060051b60200190565b5f82601f830112611e6f575f5ffd5b8151611e82611e7d82611e3e565b611d09565b8082825260208201915060208360051b860101925085831115611ea3575f5ffd5b602085015b83811015611ec0578051835260209283019201611ea8565b5095945050505050565b5f60208284031215611eda575f5ffd5b81516001600160401b03811115611eef575f5ffd5b820180840360a0811215611f01575f5ffd5b611f09611ce7565b82518152602080840151908201526040603f1983011215611f28575f5ffd5b611f30611cbf565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611f5f575f5ffd5b611f6b86838501611e60565b606082015295945050505050565b5f60208284031215611f89575f5ffd5b81516001600160401b03811115611f9e575f5ffd5b8201601f81018413611fae575f5ffd5b8051611fbc611e7d82611e3e565b8082825260208201915060208360051b850101925086831115611fdd575f5ffd5b602084015b8381101561206f5780516001600160401b03811115611fff575f5ffd5b85016040818a03601f19011215612014575f5ffd5b61201c611cbf565b602082015161202a816112f4565b815260408201516001600160401b03811115612044575f5ffd5b6120538b602083860101611e60565b6020830152508085525050602083019250602081019050611fe2565b509695505050505050565b5f8261209457634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156111c457634e487b7160e01b5f52601160045260245ffdfea264697066735822122012eb492cbbec575de353e2536efc61488ab0d9e7cd4ad56b06e5d9334683404264736f6c634300081b0033", +======= + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bn254CertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"},{\"name\":\"_ecdsaCertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_globalRootConfirmationThreshold\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"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\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", + Bin: "0x60e060405234801561000f575f5ffd5b5060405161231638038061231683398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120026103145f395f61067a01525f81816104180152818161070001526109bd01525f818161043f015281816106c00152818161076e0152818161091801528181610c040152610ed801526120025ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c80637551ba34116100f3578063c3621f0a11610093578063e944e0a81161006e578063e944e0a8146104cd578063eaaed9d5146104e0578063f2fde38b146104f3578063fd967f4714610506575f5ffd5b8063c3621f0a14610482578063c3be1e3314610495578063c5916a39146104a8575f5ffd5b80639ea94778116100ce5780639ea9477814610400578063ad0f958214610413578063b8c143061461043a578063c252aa2214610461575f5ffd5b80637551ba34146103d457806377d90e94146103dc5780638da5cb5b146103ef575f5ffd5b806331a599d21161015e57806354fd4d501161013957806354fd4d501461035757806364e1df841461036c5780636f728c50146103a1578063715018a6146103cc575f5ffd5b806331a599d2146102f75780633ef6cd7a1461031c5780634624e6a314610343575f5ffd5b80632370356c116101995780632370356c1461025e57806323b7b5b21461027157806328522d791461029957806330ef41b4146102c5575f5ffd5b8063021ab442146101bf578063193b79f3146101d45780631e2ca26014610216575b5f5ffd5b6101d26101cd366004611264565b61050f565b005b6101fc6101e23660046112f4565b63ffffffff9081165f908152606960205260409020541690565b60405163ffffffff90911681526020015b60405180910390f35b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff169082015260405161020d9190611334565b6101d261026c366004611342565b61065f565b6101fc61027f3660046112f4565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b60405190815260200161020d565b6102e76102d336600461135b565b5f908152606a602052604090205460ff1690565b604051901515815260200161020d565b60655462010000900463ffffffff9081165f90815260686020526040902054166101fc565b6102b77f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff166101fc565b61035f610673565b60405161020d9190611372565b6102e761037a3660046112f4565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b6103b46103af3660046113b5565b6106a3565b6040516001600160a01b03909116815260200161020d565b6101d2610742565b6101fc610755565b6101d26103ea3660046113ce565b6107e3565b6033546001600160a01b03166103b4565b6101d261040e36600461142c565b6107f4565b6103b47f000000000000000000000000000000000000000000000000000000000000000081565b6103b47f000000000000000000000000000000000000000000000000000000000000000081565b60655461046f9061ffff1681565b60405161ffff909116815260200161020d565b6101d261049036600461135b565b610a22565b6102b76104a33660046114c7565b610a97565b6102b76104b63660046112f4565b63ffffffff165f9081526067602052604090205490565b6101d26104db366004611506565b610aff565b6101d26104ee366004611562565b610b17565b6101d26105013660046115ce565b610d49565b61046f61271081565b5f54610100900460ff161580801561052d57505f54600160ff909116105b806105465750303b15801561054657505f5460ff166001145b6105ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156105cf575f805461ff0019166101001790555b6105d887610dbb565b6105e186610e0c565b6105ea85610e56565b6105f5848484610ec1565b6065805465ffffffff000019166201000063ffffffff8716021790558015610656575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610667610f3d565b61067081610e56565b50565b606061069e7f0000000000000000000000000000000000000000000000000000000000000000610f97565b905090565b5f60028260028111156106b8576106b86115e9565b036106e457507f0000000000000000000000000000000000000000000000000000000000000000919050565b60018260028111156106f8576106f86115e9565b0361072457507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b61074a610f3d565b6107535f610dbb565b565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b906107a4906066906004016115fd565b602060405180830381865afa1580156107bf573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069e9190611624565b6107eb610f3d565b61067081610e0c565b5f5f5f5f6108028686610fd4565b5f8e8152606a60205260409020549397509195509350915060ff1661083a5760405163504570e360e01b815260040160405180910390fd5b610843836106a3565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161086e9190611334565b602060405180830381865afa158015610889573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ad9190611624565b63ffffffff168b63ffffffff16116108d85760405163207617df60e01b815260040160405180910390fd5b6108fd8b8b8b8b8b8b8b6040516108f092919061163f565b604051809103902061101b565b6002836002811115610911576109116115e9565b036109a2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610950856110bc565b866040518563ffffffff1660e01b81526004016109709493929190611688565b5f604051808303815f87803b158015610987575f5ffd5b505af1158015610999573d5f5f3e3d5ffd5b50505050610a15565b60018360028111156109b6576109b66115e9565b03610724577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d6109f5856110de565b866040518563ffffffff1660e01b81526004016109709493929190611704565b5050505050505050505050565b610a2a610f3d565b5f818152606a602052604090205460ff16610a585760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b610b07610f3d565b610b12838383610ec1565b505050565b428263ffffffff161115610b3e57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610b705760405163037fa86b60e31b815260040160405180910390fd5b610b7b838383610a97565b846020013514610b9e57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610bd957610bd96117bd565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610c3e906066908a9087906004016118ef565b6020604051808303815f875af1158015610c5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611a7c565b905080610c9e57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610d51610f3d565b6001600160a01b038116610db65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a5565b610670815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610e198282611a9b565b9050507f3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df1585681604051610e4b9190611b2c565b60405180910390a150565b61271061ffff82161115610e7d576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610e4b565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b90610f1490606690879087908790600401611b3a565b5f604051808303815f87803b158015610f2b575f5ffd5b505af1158015610656573d5f5f3e3d5ffd5b6033546001600160a01b031633146107535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a5565b60605f610fa3836110f4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f8082526020820181905290606061100b85870187611c8d565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461104f5760405163639d09b560e11b815260040160405180910390fd5b61109783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff881661111b565b6110b45760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6110c46111c9565b818060200190518101906110d89190611dde565b92915050565b6060818060200190518101906110d89190611e8d565b5f60ff8216601f8111156110d857604051632cd44ac360e21b815260040160405180910390fd5b5f83611128868585611132565b1495945050505050565b5f602084516111419190611f8e565b1561115f576040516313717da960e21b815260040160405180910390fd5b8260205b855181116111c057611176600285611f8e565b5f0361119757815f528086015160205260405f2091506002840493506111ae565b808601515f528160205260405f2091506002840493505b6111b9602082611fad565b9050611163565b50949350505050565b60405180608001604052805f81526020015f81526020016111fb60405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b0381168114610670575f5ffd5b5f6040828403121561122c575f5ffd5b50919050565b803561ffff8116811461073d575f5ffd5b63ffffffff81168114610670575f5ffd5b5f60a0828403121561122c575f5ffd5b5f5f5f5f5f5f610100878903121561127a575f5ffd5b863561128581611208565b9550611294886020890161121c565b94506112a260608801611232565b935060808701356112b281611243565b925060a08701356001600160401b038111156112cc575f5ffd5b6112d889828a01611254565b9250506112e88860c0890161121c565b90509295509295509295565b5f60208284031215611304575f5ffd5b813561130f81611243565b9392505050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016110d88284611316565b5f60208284031215611352575f5ffd5b61130f82611232565b5f6020828403121561136b575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356003811061073d575f5ffd5b5f602082840312156113c5575f5ffd5b61130f826113a7565b5f604082840312156113de575f5ffd5b61130f838361121c565b5f5f83601f8401126113f8575f5ffd5b5081356001600160401b0381111561140e575f5ffd5b602083019150836020828501011115611425575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215611442575f5ffd5b873561144d81611243565b965060208801359550604088013561146481611243565b945060608801356001600160401b0381111561147e575f5ffd5b61148a8a828b016113e8565b90955093505060808801356001600160401b038111156114a8575f5ffd5b6114b48a828b016113e8565b989b979a50959850939692959293505050565b5f5f5f606084860312156114d9575f5ffd5b8335925060208401356114eb81611243565b915060408401356114fb81611243565b809150509250925092565b5f5f5f60808486031215611518575f5ffd5b833561152381611243565b925060208401356001600160401b0381111561153d575f5ffd5b61154986828701611254565b925050611559856040860161121c565b90509250925092565b5f5f5f5f60808587031215611575575f5ffd5b84356001600160401b0381111561158a575f5ffd5b8501610120818803121561159c575f5ffd5b93506020850135925060408501356115b381611243565b915060608501356115c381611243565b939692955090935050565b5f602082840312156115de575f5ffd5b813561130f81611208565b634e487b7160e01b5f52602160045260245ffd5b604081016110d88284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f60208284031215611634575f5ffd5b815161130f81611243565b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561167e578151865260209586019590910190600101611660565b5093949350505050565b6116928186611316565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526116eb61016084018261164e565b9150506116fb6080830184611316565b95945050505050565b5f60c082016117138388611316565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156117945786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061177e9087018261164e565b9550506020938401939190910190600101611743565b50505050809150506116fb6080830184611316565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126117e6575f5ffd5b83016020810192503590506001600160401b03811115611804575f5ffd5b8060051b3603821315611425575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e19833603018112611851575f5ffd5b90910192915050565b8183525f6001600160fb1b03831115611871575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f6118a660408301836117d1565b606060408601526116fb60608601828461185a565b5f8151808452602084019350602083015f5b8281101561167e57815161ffff168652602095860195909101906001016118cd565b6119128185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a08201843561192a81611243565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c086016101408501376119796101008601866117d1565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611a5b578786036101bf190183526119b8828661183d565b80356119c381611243565b63ffffffff168752602081013536829003601e190181126119e2575f5ffd5b81016020810190356001600160401b038111156119fd575f5ffd5b803603821315611a0b575f5ffd5b606060208a0152611a2060608a018284611815565b915050611a30604083018361183d565b91508781036040890152611a44818361188a565b97505050602092830192919091019060010161199c565b50505050508281036060840152611a7281856118bb565b9695505050505050565b5f60208284031215611a8c575f5ffd5b8151801515811461130f575f5ffd5b8135611aa681611208565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611ad281611243565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611b0281611208565b6001600160a01b031682526020810135611b1b81611243565b63ffffffff81166020840152505050565b604081016110d88284611af7565b611b5d8186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611bab60808501856117d1565b60a0610140850152611bc26101608501828461185a565b925050506116fb6080830184611af7565b604080519081016001600160401b0381118282101715611bf557611bf56117a9565b60405290565b604051608081016001600160401b0381118282101715611bf557611bf56117a9565b604051601f8201601f191681016001600160401b0381118282101715611c4557611c456117a9565b604052919050565b5f60408284031215611c5d575f5ffd5b611c65611bd3565b90508135611c7281611208565b81526020820135611c8281611243565b602082015292915050565b5f5f5f5f60c08587031215611ca0575f5ffd5b611caa8686611c4d565b9350611cb8604086016113a7565b9250611cc78660608701611c4d565b915060a08501356001600160401b03811115611ce1575f5ffd5b8501601f81018713611cf1575f5ffd5b80356001600160401b03811115611d0a57611d0a6117a9565b611d1d601f8201601f1916602001611c1d565b818152886020838501011115611d31575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611d6a57611d6a6117a9565b5060051b60200190565b5f82601f830112611d83575f5ffd5b8151611d96611d9182611d52565b611c1d565b8082825260208201915060208360051b860101925085831115611db7575f5ffd5b602085015b83811015611dd4578051835260209283019201611dbc565b5095945050505050565b5f60208284031215611dee575f5ffd5b81516001600160401b03811115611e03575f5ffd5b820180840360a0811215611e15575f5ffd5b611e1d611bfb565b82518152602080840151908201526040603f1983011215611e3c575f5ffd5b611e44611bd3565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611e73575f5ffd5b611e7f86838501611d74565b606082015295945050505050565b5f60208284031215611e9d575f5ffd5b81516001600160401b03811115611eb2575f5ffd5b8201601f81018413611ec2575f5ffd5b8051611ed0611d9182611d52565b8082825260208201915060208360051b850101925086831115611ef1575f5ffd5b602084015b83811015611f835780516001600160401b03811115611f13575f5ffd5b85016040818a03601f19011215611f28575f5ffd5b611f30611bd3565b6020820151611f3e81611208565b815260408201516001600160401b03811115611f58575f5ffd5b611f678b602083860101611d74565b6020830152508085525050602083019250602081019050611ef6565b509695505050505050565b5f82611fa857634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156110d857634e487b7160e01b5f52601160045260245ffdfea26469706673582212204f4011b90b89629e25db22901479c3d9080c5ada1fe645845451fa74011b9a5b64736f6c634300081b0033", +>>>>>>> 0591237e (chore: naming) } // OperatorTableUpdaterABI is the input ABI used to generate the binding from. @@ -473,66 +478,66 @@ func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetCurrentGlobal return _OperatorTableUpdater.Contract.GetCurrentGlobalTableRoot(&_OperatorTableUpdater.CallOpts) } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetGlobalConfirmerSetReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { +// Solidity: function getGenerator() view returns((address,uint32)) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetGenerator(opts *bind.CallOpts) (OperatorSet, error) { var out []interface{} - err := _OperatorTableUpdater.contract.Call(opts, &out, "getGlobalConfirmerSetReferenceTimestamp") + err := _OperatorTableUpdater.contract.Call(opts, &out, "getGenerator") if err != nil { - return *new(uint32), err + return *new(OperatorSet), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) return out0, err } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetGlobalConfirmerSetReferenceTimestamp() (uint32, error) { - return _OperatorTableUpdater.Contract.GetGlobalConfirmerSetReferenceTimestamp(&_OperatorTableUpdater.CallOpts) +// Solidity: function getGenerator() view returns((address,uint32)) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetGenerator() (OperatorSet, error) { + return _OperatorTableUpdater.Contract.GetGenerator(&_OperatorTableUpdater.CallOpts) } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetGlobalConfirmerSetReferenceTimestamp() (uint32, error) { - return _OperatorTableUpdater.Contract.GetGlobalConfirmerSetReferenceTimestamp(&_OperatorTableUpdater.CallOpts) +// Solidity: function getGenerator() view returns((address,uint32)) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetGenerator() (OperatorSet, error) { + return _OperatorTableUpdater.Contract.GetGenerator(&_OperatorTableUpdater.CallOpts) } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetGlobalRootConfirmerSet(opts *bind.CallOpts) (OperatorSet, error) { +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetGeneratorReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _OperatorTableUpdater.contract.Call(opts, &out, "getGlobalRootConfirmerSet") + err := _OperatorTableUpdater.contract.Call(opts, &out, "getGeneratorReferenceTimestamp") if err != nil { - return *new(OperatorSet), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { - return _OperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdater.CallOpts) +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetGeneratorReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdater.Contract.GetGeneratorReferenceTimestamp(&_OperatorTableUpdater.CallOpts) } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { - return _OperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdater.CallOpts) +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetGeneratorReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdater.Contract.GetGeneratorReferenceTimestamp(&_OperatorTableUpdater.CallOpts) } // GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. @@ -920,23 +925,23 @@ func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) DisableRoot( // Initialize is a paid mutator transaction binding the contract method 0x021ab442. // -// Solidity: function initialize(address owner, (address,uint32) _globalRootConfirmerSet, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) Initialize(opts *bind.TransactOpts, owner common.Address, _globalRootConfirmerSet OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdater.contract.Transact(opts, "initialize", owner, _globalRootConfirmerSet, _globalRootConfirmationThreshold, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function initialize(address owner, (address,uint32) _generator, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) generatorInfo, (address,uint32) generatorConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) Initialize(opts *bind.TransactOpts, owner common.Address, _generator OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, generatorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, generatorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "initialize", owner, _generator, _globalRootConfirmationThreshold, referenceTimestamp, generatorInfo, generatorConfig) } // Initialize is a paid mutator transaction binding the contract method 0x021ab442. // -// Solidity: function initialize(address owner, (address,uint32) _globalRootConfirmerSet, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterSession) Initialize(owner common.Address, _globalRootConfirmerSet OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdater.Contract.Initialize(&_OperatorTableUpdater.TransactOpts, owner, _globalRootConfirmerSet, _globalRootConfirmationThreshold, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function initialize(address owner, (address,uint32) _generator, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) generatorInfo, (address,uint32) generatorConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) Initialize(owner common.Address, _generator OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, generatorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, generatorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.Initialize(&_OperatorTableUpdater.TransactOpts, owner, _generator, _globalRootConfirmationThreshold, referenceTimestamp, generatorInfo, generatorConfig) } // Initialize is a paid mutator transaction binding the contract method 0x021ab442. // -// Solidity: function initialize(address owner, (address,uint32) _globalRootConfirmerSet, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) Initialize(owner common.Address, _globalRootConfirmerSet OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdater.Contract.Initialize(&_OperatorTableUpdater.TransactOpts, owner, _globalRootConfirmerSet, _globalRootConfirmationThreshold, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function initialize(address owner, (address,uint32) _generator, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) generatorInfo, (address,uint32) generatorConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) Initialize(owner common.Address, _generator OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, generatorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, generatorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.Initialize(&_OperatorTableUpdater.TransactOpts, owner, _generator, _globalRootConfirmationThreshold, referenceTimestamp, generatorInfo, generatorConfig) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -960,6 +965,27 @@ func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) RenounceOwne return _OperatorTableUpdater.Contract.RenounceOwnership(&_OperatorTableUpdater.TransactOpts) } +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) SetGenerator(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "setGenerator", operatorSet) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) SetGenerator(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.SetGenerator(&_OperatorTableUpdater.TransactOpts, operatorSet) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) SetGenerator(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.SetGenerator(&_OperatorTableUpdater.TransactOpts, operatorSet) +} + // SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. // // Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() @@ -981,27 +1007,6 @@ func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) SetGlobalRoo return _OperatorTableUpdater.Contract.SetGlobalRootConfirmationThreshold(&_OperatorTableUpdater.TransactOpts, bps) } -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. -// -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) SetGlobalRootConfirmerSet(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { - return _OperatorTableUpdater.contract.Transact(opts, "setGlobalRootConfirmerSet", operatorSet) -} - -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. -// -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { - return _OperatorTableUpdater.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdater.TransactOpts, operatorSet) -} - -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. -// -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { - return _OperatorTableUpdater.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdater.TransactOpts, operatorSet) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -1023,25 +1028,25 @@ func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) TransferOwne return _OperatorTableUpdater.Contract.TransferOwnership(&_OperatorTableUpdater.TransactOpts, newOwner) } -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) UpdateGlobalRootConfirmerSet(opts *bind.TransactOpts, referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdater.contract.Transact(opts, "updateGlobalRootConfirmerSet", referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) generatorInfo, (address,uint32) generatorConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) UpdateGenerator(opts *bind.TransactOpts, referenceTimestamp uint32, generatorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, generatorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "updateGenerator", referenceTimestamp, generatorInfo, generatorConfig) } -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdater.Contract.UpdateGlobalRootConfirmerSet(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) generatorInfo, (address,uint32) generatorConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) UpdateGenerator(referenceTimestamp uint32, generatorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, generatorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.UpdateGenerator(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, generatorInfo, generatorConfig) } -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdater.Contract.UpdateGlobalRootConfirmerSet(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) generatorInfo, (address,uint32) generatorConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) UpdateGenerator(referenceTimestamp uint32, generatorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, generatorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.UpdateGenerator(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, generatorInfo, generatorConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. @@ -1065,9 +1070,9 @@ func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) UpdateOperat return _OperatorTableUpdater.Contract.UpdateOperatorTable(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) } -// OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the OperatorTableUpdater contract. -type OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct { - Event *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated // Event containing the contract specifics and raw log +// OperatorTableUpdaterGeneratorUpdatedIterator is returned from FilterGeneratorUpdated and is used to iterate over the raw logs and unpacked data for GeneratorUpdated events raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGeneratorUpdatedIterator struct { + Event *OperatorTableUpdaterGeneratorUpdated // 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 @@ -1081,7 +1086,7 @@ type OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct { // 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 *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { +func (it *OperatorTableUpdaterGeneratorUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1090,7 +1095,7 @@ func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Ne if it.done { select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + it.Event = new(OperatorTableUpdaterGeneratorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1105,7 +1110,7 @@ func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Ne // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + it.Event = new(OperatorTableUpdaterGeneratorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1121,41 +1126,41 @@ func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Ne } // Error returns any retrieval or parsing error occurred during filtering. -func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Error() error { +func (it *OperatorTableUpdaterGeneratorUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Close() error { +func (it *OperatorTableUpdaterGeneratorUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the OperatorTableUpdater contract. -type OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated struct { - Bps uint16 - Raw types.Log // Blockchain specific contextual infos +// OperatorTableUpdaterGeneratorUpdated represents a GeneratorUpdated event raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGeneratorUpdated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// FilterGeneratorUpdated is a free log retrieval operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator, error) { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterGeneratorUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterGeneratorUpdatedIterator, error) { - logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") + logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "GeneratorUpdated") if err != nil { return nil, err } - return &OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator{contract: _OperatorTableUpdater.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil + return &OperatorTableUpdaterGeneratorUpdatedIterator{contract: _OperatorTableUpdater.contract, event: "GeneratorUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// WatchGeneratorUpdated is a free log subscription operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGeneratorUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterGeneratorUpdated) (event.Subscription, error) { - logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") + logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "GeneratorUpdated") if err != nil { return nil, err } @@ -1165,8 +1170,8 @@ func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfir select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) - if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + event := new(OperatorTableUpdaterGeneratorUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { return err } event.Raw = log @@ -1187,21 +1192,21 @@ func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfir }), nil } -// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// ParseGeneratorUpdated is a log parse operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated, error) { - event := new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) - if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseGeneratorUpdated(log types.Log) (*OperatorTableUpdaterGeneratorUpdated, error) { + event := new(OperatorTableUpdaterGeneratorUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator is returned from FilterGlobalRootConfirmerSetUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmerSetUpdated events raised by the OperatorTableUpdater contract. -type OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator struct { - Event *OperatorTableUpdaterGlobalRootConfirmerSetUpdated // Event containing the contract specifics and raw log +// OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct { + Event *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated // 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 @@ -1215,7 +1220,7 @@ type OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator struct { // 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 *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() bool { +func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1224,7 +1229,7 @@ func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) + it.Event = new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1239,7 +1244,7 @@ func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) + it.Event = new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1255,41 +1260,41 @@ func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Error() error { +func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Close() error { +func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// OperatorTableUpdaterGlobalRootConfirmerSetUpdated represents a GlobalRootConfirmerSetUpdated event raised by the OperatorTableUpdater contract. -type OperatorTableUpdaterGlobalRootConfirmerSetUpdated struct { - OperatorSet OperatorSet - Raw types.Log // Blockchain specific contextual infos +// OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated struct { + Bps uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalRootConfirmerSetUpdated is a free log retrieval operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterGlobalRootConfirmerSetUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator, error) { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator, error) { - logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmerSetUpdated") + logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") if err != nil { return nil, err } - return &OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator{contract: _OperatorTableUpdater.contract, event: "GlobalRootConfirmerSetUpdated", logs: logs, sub: sub}, nil + return &OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator{contract: _OperatorTableUpdater.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalRootConfirmerSetUpdated is a free log subscription operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfirmerSetUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterGlobalRootConfirmerSetUpdated) (event.Subscription, error) { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { - logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmerSetUpdated") + logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") if err != nil { return nil, err } @@ -1299,8 +1304,8 @@ func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfir select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) - if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + event := new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { return err } event.Raw = log @@ -1321,12 +1326,12 @@ func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfir }), nil } -// ParseGlobalRootConfirmerSetUpdated is a log parse operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseGlobalRootConfirmerSetUpdated(log types.Log) (*OperatorTableUpdaterGlobalRootConfirmerSetUpdated, error) { - event := new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) - if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated, error) { + event := new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { return nil, err } event.Raw = log diff --git a/pkg/bindings/OperatorTableUpdaterStorage/binding.go b/pkg/bindings/OperatorTableUpdaterStorage/binding.go index 5b752248cd..3b619065d7 100644 --- a/pkg/bindings/OperatorTableUpdaterStorage/binding.go +++ b/pkg/bindings/OperatorTableUpdaterStorage/binding.go @@ -85,7 +85,11 @@ type OperatorSet struct { // OperatorTableUpdaterStorageMetaData contains all meta data concerning the OperatorTableUpdaterStorage contract. var OperatorTableUpdaterStorageMetaData = &bind.MetaData{ +<<<<<<< HEAD ABI: "[{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INITIAL_GLOBAL_TABLE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalConfirmerSetReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", +======= + ABI: "[{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"GeneratorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"GeneratorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", +>>>>>>> 0591237e (chore: naming) } // OperatorTableUpdaterStorageABI is the input ABI used to generate the binding from. @@ -451,66 +455,66 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) Ge return _OperatorTableUpdaterStorage.Contract.GetCurrentGlobalTableRoot(&_OperatorTableUpdaterStorage.CallOpts) } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetGlobalConfirmerSetReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { +// Solidity: function getGenerator() view returns((address,uint32)) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetGenerator(opts *bind.CallOpts) (OperatorSet, error) { var out []interface{} - err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getGlobalConfirmerSetReferenceTimestamp") + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getGenerator") if err != nil { - return *new(uint32), err + return *new(OperatorSet), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) return out0, err } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetGlobalConfirmerSetReferenceTimestamp() (uint32, error) { - return _OperatorTableUpdaterStorage.Contract.GetGlobalConfirmerSetReferenceTimestamp(&_OperatorTableUpdaterStorage.CallOpts) +// Solidity: function getGenerator() view returns((address,uint32)) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetGenerator() (OperatorSet, error) { + return _OperatorTableUpdaterStorage.Contract.GetGenerator(&_OperatorTableUpdaterStorage.CallOpts) } -// GetGlobalConfirmerSetReferenceTimestamp is a free data retrieval call binding the contract method 0x0f3f8edd. +// GetGenerator is a free data retrieval call binding the contract method 0x1e2ca260. // -// Solidity: function getGlobalConfirmerSetReferenceTimestamp() view returns(uint32) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetGlobalConfirmerSetReferenceTimestamp() (uint32, error) { - return _OperatorTableUpdaterStorage.Contract.GetGlobalConfirmerSetReferenceTimestamp(&_OperatorTableUpdaterStorage.CallOpts) +// Solidity: function getGenerator() view returns((address,uint32)) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetGenerator() (OperatorSet, error) { + return _OperatorTableUpdaterStorage.Contract.GetGenerator(&_OperatorTableUpdaterStorage.CallOpts) } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetGlobalRootConfirmerSet(opts *bind.CallOpts) (OperatorSet, error) { +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetGeneratorReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getGlobalRootConfirmerSet") + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getGeneratorReferenceTimestamp") if err != nil { - return *new(OperatorSet), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { - return _OperatorTableUpdaterStorage.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.CallOpts) +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetGeneratorReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdaterStorage.Contract.GetGeneratorReferenceTimestamp(&_OperatorTableUpdaterStorage.CallOpts) } -// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// GetGeneratorReferenceTimestamp is a free data retrieval call binding the contract method 0x7551ba34. // -// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { - return _OperatorTableUpdaterStorage.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.CallOpts) +// Solidity: function getGeneratorReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetGeneratorReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdaterStorage.Contract.GetGeneratorReferenceTimestamp(&_OperatorTableUpdaterStorage.CallOpts) } // GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. @@ -834,6 +838,27 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession return _OperatorTableUpdaterStorage.Contract.DisableRoot(&_OperatorTableUpdaterStorage.TransactOpts, globalTableRoot) } +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) SetGenerator(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.contract.Transact(opts, "setGenerator", operatorSet) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) SetGenerator(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.SetGenerator(&_OperatorTableUpdaterStorage.TransactOpts, operatorSet) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x77d90e94. +// +// Solidity: function setGenerator((address,uint32) operatorSet) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) SetGenerator(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.SetGenerator(&_OperatorTableUpdaterStorage.TransactOpts, operatorSet) +} + // SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. // // Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() @@ -855,46 +880,25 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession return _OperatorTableUpdaterStorage.Contract.SetGlobalRootConfirmationThreshold(&_OperatorTableUpdaterStorage.TransactOpts, bps) } -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) SetGlobalRootConfirmerSet(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { - return _OperatorTableUpdaterStorage.contract.Transact(opts, "setGlobalRootConfirmerSet", operatorSet) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) GeneratorInfo, (address,uint32) GeneratorConfig) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) UpdateGenerator(opts *bind.TransactOpts, referenceTimestamp uint32, GeneratorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, GeneratorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.contract.Transact(opts, "updateGenerator", referenceTimestamp, GeneratorInfo, GeneratorConfig) } -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { - return _OperatorTableUpdaterStorage.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.TransactOpts, operatorSet) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) GeneratorInfo, (address,uint32) GeneratorConfig) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) UpdateGenerator(referenceTimestamp uint32, GeneratorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, GeneratorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.UpdateGenerator(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, GeneratorInfo, GeneratorConfig) } -// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// UpdateGenerator is a paid mutator transaction binding the contract method 0xe944e0a8. // -// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { - return _OperatorTableUpdaterStorage.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.TransactOpts, operatorSet) -} - -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. -// -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) UpdateGlobalRootConfirmerSet(opts *bind.TransactOpts, referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdaterStorage.contract.Transact(opts, "updateGlobalRootConfirmerSet", referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) -} - -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. -// -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdaterStorage.Contract.UpdateGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) -} - -// UpdateGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x1ab78d90. -// -// Solidity: function updateGlobalRootConfirmerSet(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _OperatorTableUpdaterStorage.Contract.UpdateGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +// Solidity: function updateGenerator(uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) GeneratorInfo, (address,uint32) GeneratorConfig) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) UpdateGenerator(referenceTimestamp uint32, GeneratorInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, GeneratorConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.UpdateGenerator(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, GeneratorInfo, GeneratorConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. @@ -918,9 +922,9 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession return _OperatorTableUpdaterStorage.Contract.UpdateOperatorTable(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) } -// OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the OperatorTableUpdaterStorage contract. -type OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator struct { - Event *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated // Event containing the contract specifics and raw log +// OperatorTableUpdaterStorageGeneratorUpdatedIterator is returned from FilterGeneratorUpdated and is used to iterate over the raw logs and unpacked data for GeneratorUpdated events raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGeneratorUpdatedIterator struct { + Event *OperatorTableUpdaterStorageGeneratorUpdated // 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 @@ -934,7 +938,7 @@ type OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator s // 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 *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { +func (it *OperatorTableUpdaterStorageGeneratorUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -943,7 +947,7 @@ func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedItera if it.done { select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + it.Event = new(OperatorTableUpdaterStorageGeneratorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -958,7 +962,7 @@ func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedItera // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + it.Event = new(OperatorTableUpdaterStorageGeneratorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -974,41 +978,41 @@ func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedItera } // Error returns any retrieval or parsing error occurred during filtering. -func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Error() error { +func (it *OperatorTableUpdaterStorageGeneratorUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Close() error { +func (it *OperatorTableUpdaterStorageGeneratorUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the OperatorTableUpdaterStorage contract. -type OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated struct { - Bps uint16 - Raw types.Log // Blockchain specific contextual infos +// OperatorTableUpdaterStorageGeneratorUpdated represents a GeneratorUpdated event raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGeneratorUpdated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// FilterGeneratorUpdated is a free log retrieval operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator, error) { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) FilterGeneratorUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterStorageGeneratorUpdatedIterator, error) { - logs, sub, err := _OperatorTableUpdaterStorage.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") + logs, sub, err := _OperatorTableUpdaterStorage.contract.FilterLogs(opts, "GeneratorUpdated") if err != nil { return nil, err } - return &OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator{contract: _OperatorTableUpdaterStorage.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil + return &OperatorTableUpdaterStorageGeneratorUpdatedIterator{contract: _OperatorTableUpdaterStorage.contract, event: "GeneratorUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// WatchGeneratorUpdated is a free log subscription operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGeneratorUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterStorageGeneratorUpdated) (event.Subscription, error) { - logs, sub, err := _OperatorTableUpdaterStorage.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") + logs, sub, err := _OperatorTableUpdaterStorage.contract.WatchLogs(opts, "GeneratorUpdated") if err != nil { return nil, err } @@ -1018,8 +1022,8 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGl select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) - if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + event := new(OperatorTableUpdaterStorageGeneratorUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { return err } event.Raw = log @@ -1040,21 +1044,21 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGl }), nil } -// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// ParseGeneratorUpdated is a log parse operation binding the contract event 0x3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df15856. // -// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated, error) { - event := new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) - if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { +// Solidity: event GeneratorUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) ParseGeneratorUpdated(log types.Log) (*OperatorTableUpdaterStorageGeneratorUpdated, error) { + event := new(OperatorTableUpdaterStorageGeneratorUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator is returned from FilterGlobalRootConfirmerSetUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmerSetUpdated events raised by the OperatorTableUpdaterStorage contract. -type OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator struct { - Event *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated // Event containing the contract specifics and raw log +// OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator struct { + Event *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated // 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 @@ -1068,7 +1072,7 @@ type OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator struct { // 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 *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Next() bool { +func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1077,7 +1081,7 @@ func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Next if it.done { select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) + it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1092,7 +1096,7 @@ func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Next // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) + it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1108,41 +1112,41 @@ func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Next } // Error returns any retrieval or parsing error occurred during filtering. -func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Error() error { +func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Close() error { +func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated represents a GlobalRootConfirmerSetUpdated event raised by the OperatorTableUpdaterStorage contract. -type OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated struct { - OperatorSet OperatorSet - Raw types.Log // Blockchain specific contextual infos +// OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated struct { + Bps uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalRootConfirmerSetUpdated is a free log retrieval operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) FilterGlobalRootConfirmerSetUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator, error) { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator, error) { - logs, sub, err := _OperatorTableUpdaterStorage.contract.FilterLogs(opts, "GlobalRootConfirmerSetUpdated") + logs, sub, err := _OperatorTableUpdaterStorage.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") if err != nil { return nil, err } - return &OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator{contract: _OperatorTableUpdaterStorage.contract, event: "GlobalRootConfirmerSetUpdated", logs: logs, sub: sub}, nil + return &OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator{contract: _OperatorTableUpdaterStorage.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalRootConfirmerSetUpdated is a free log subscription operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGlobalRootConfirmerSetUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) (event.Subscription, error) { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { - logs, sub, err := _OperatorTableUpdaterStorage.contract.WatchLogs(opts, "GlobalRootConfirmerSetUpdated") + logs, sub, err := _OperatorTableUpdaterStorage.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") if err != nil { return nil, err } @@ -1152,8 +1156,8 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGl select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) - if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + event := new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { return err } event.Raw = log @@ -1174,12 +1178,12 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGl }), nil } -// ParseGlobalRootConfirmerSetUpdated is a log parse operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) -func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) ParseGlobalRootConfirmerSetUpdated(log types.Log) (*OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated, error) { - event := new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) - if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated, error) { + event := new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { return nil, err } event.Raw = log diff --git a/src/contracts/interfaces/IOperatorTableUpdater.sol b/src/contracts/interfaces/IOperatorTableUpdater.sol index fce548c82c..a067af020d 100644 --- a/src/contracts/interfaces/IOperatorTableUpdater.sol +++ b/src/contracts/interfaces/IOperatorTableUpdater.sol @@ -40,10 +40,10 @@ interface IOperatorTableUpdaterEvents { event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot); /** - * @notice Emitted when the global root confirmer set is updated + * @notice Emitted when the generator is updated * @param operatorSet The operatorSet which certifies against global roots */ - event GlobalRootConfirmerSetUpdated(OperatorSet operatorSet); + event GeneratorUpdated(OperatorSet operatorSet); /** * @notice Emitted when the global root confirmation threshold is updated @@ -72,7 +72,7 @@ interface IOperatorTableUpdater is * @param globalTableRoot merkle root of all operatorSet tables * @param referenceTimestamp timestamp of the root * @param referenceBlockNumber block number of the root - * @dev Any entity can submit with a valid certificate signed off by the `globalRootConfirmerSet` + * @dev Any entity can submit with a valid certificate signed off by the `Generator` * @dev The `msgHash` in the `globalOperatorTableRootCert` is the hash of the `globalOperatorTableRoot` */ function confirmGlobalTableRoot( @@ -88,7 +88,7 @@ interface IOperatorTableUpdater is * @dev The `operatorSet` is used to verify the certificate of the global table root * @dev Only callable by the owner of the contract */ - function setGlobalRootConfirmerSet( + function setGenerator( OperatorSet calldata operatorSet ) external; @@ -101,18 +101,18 @@ interface IOperatorTableUpdater is ) external; /** - * @notice Updates the operator table for the global root confirmer set + * @notice Updates the operator table for the generator * @param referenceTimestamp The reference timestamp of the operator table update - * @param globalRootConfirmerSetInfo The operatorSetInfo for the global root confirmer set - * @param globalRootConfirmerSetConfig The operatorSetConfig for the global root confirmer set + * @param GeneratorInfo The operatorSetInfo for the generator + * @param GeneratorConfig The operatorSetConfig for the generator * @dev We have a separate function for updating this operatorSet since it's not transported and updated * in the same way as the other operatorSets * @dev Only callable by the owner of the contract */ - function updateGlobalRootConfirmerSet( + function updateGenerator( uint32 referenceTimestamp, - BN254OperatorSetInfo calldata globalRootConfirmerSetInfo, - OperatorSetConfig calldata globalRootConfirmerSetConfig + BN254OperatorSetInfo calldata GeneratorInfo, + OperatorSetConfig calldata GeneratorConfig ) external; /** @@ -160,7 +160,7 @@ interface IOperatorTableUpdater is * @notice Get the operatorSet which certifies against global roots * @return The operatorSet which certifies against global roots */ - function getGlobalRootConfirmerSet() external view returns (OperatorSet memory); + function getGenerator() external view returns (OperatorSet memory); /** * @notice Get the certificate verifier for a given key type @@ -215,11 +215,11 @@ interface IOperatorTableUpdater is ) external view returns (bytes32); /** - * @notice Get the reference timestamp of the global confirmer set - * @return The reference timestamp of the global confirmer set - * @dev In V1, we only update the table of the global root confirmer set on initial deployment, and never update it again. + * @notice Get the reference timestamp of the generator + * @return The reference timestamp of the generator + * @dev In V1, we only update the table of the generator on initial deployment, and never update it again. */ - function getGlobalConfirmerSetReferenceTimestamp() external view returns (uint32); + function getGeneratorReferenceTimestamp() external view returns (uint32); /** * @notice Get the validity status of a global table root diff --git a/src/contracts/multichain/OperatorTableUpdater.sol b/src/contracts/multichain/OperatorTableUpdater.sol index 07a6c3dea8..9eac6b314a 100644 --- a/src/contracts/multichain/OperatorTableUpdater.sol +++ b/src/contracts/multichain/OperatorTableUpdater.sol @@ -25,26 +25,26 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl /** * @notice Initializes the OperatorTableUpdater * @param owner The owner of the OperatorTableUpdater - * @param _globalRootConfirmerSet The operatorSet which certifies against global roots + * @param _generator The operatorSet which certifies against global roots * @param _globalRootConfirmationThreshold The threshold, in bps, for a global root to be signed off on and updated * @param referenceTimestamp The reference timestamp for the global root confirmer set - * @param globalRootConfirmerSetInfo The operatorSetInfo for the global root confirmer set - * @param globalRootConfirmerSetConfig The operatorSetConfig for the global root confirmer set + * @param generatorInfo The operatorSetInfo for the global root confirmer set + * @param generatorConfig The operatorSetConfig for the global root confirmer set * @dev We also update the operator table for the global root confirmer set, to begin signing off on global roots * @dev Uses INITIAL_GLOBAL_TABLE_ROOT constant to break circular dependency for certificate verification */ function initialize( address owner, - OperatorSet calldata _globalRootConfirmerSet, + OperatorSet calldata _generator, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, - BN254OperatorSetInfo calldata globalRootConfirmerSetInfo, - OperatorSetConfig calldata globalRootConfirmerSetConfig + BN254OperatorSetInfo calldata generatorInfo, + OperatorSetConfig calldata generatorConfig ) external initializer { _transferOwnership(owner); - _setGlobalRootConfirmerSet(_globalRootConfirmerSet); + _setGenerator(_generator); _setGlobalRootConfirmationThreshold(_globalRootConfirmationThreshold); - _updateGlobalRootConfirmerSet(referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig); + _updateGenerator(referenceTimestamp, generatorInfo, generatorConfig); /// @dev The first global table root is the `INITIAL_GLOBAL_TABLE_ROOT` /// @dev This is used to enable the first call to `confirmGlobalTableRoot` to pass since it expects @@ -87,7 +87,7 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl uint16[] memory stakeProportionThresholds = new uint16[](1); stakeProportionThresholds[0] = globalRootConfirmationThreshold; bool isValid = bn254CertificateVerifier.verifyCertificateProportion( - _globalRootConfirmerSet, globalTableRootCert, stakeProportionThresholds + _generator, globalTableRootCert, stakeProportionThresholds ); require(isValid, CertificateInvalid()); @@ -157,10 +157,10 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl */ /// @inheritdoc IOperatorTableUpdater - function setGlobalRootConfirmerSet( + function setGenerator( OperatorSet calldata operatorSet ) external onlyOwner { - _setGlobalRootConfirmerSet(operatorSet); + _setGenerator(operatorSet); } /// @inheritdoc IOperatorTableUpdater @@ -182,12 +182,12 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl } /// @inheritdoc IOperatorTableUpdater - function updateGlobalRootConfirmerSet( + function updateGenerator( uint32 referenceTimestamp, - BN254OperatorSetInfo calldata globalRootConfirmerSetInfo, - OperatorSetConfig calldata globalRootConfirmerSetConfig + BN254OperatorSetInfo calldata generatorInfo, + OperatorSetConfig calldata generatorConfig ) external onlyOwner { - _updateGlobalRootConfirmerSet(referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig); + _updateGenerator(referenceTimestamp, generatorInfo, generatorConfig); } /** @@ -209,8 +209,8 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl } /// @inheritdoc IOperatorTableUpdater - function getGlobalRootConfirmerSet() external view returns (OperatorSet memory) { - return _globalRootConfirmerSet; + function getGenerator() external view returns (OperatorSet memory) { + return _generator; } /// @inheritdoc IOperatorTableUpdater @@ -262,9 +262,9 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl } /// @inheritdoc IOperatorTableUpdater - function getGlobalConfirmerSetReferenceTimestamp() external view returns (uint32) { + function getGeneratorReferenceTimestamp() external view returns (uint32) { return IBaseCertificateVerifier(address(bn254CertificateVerifier)).latestReferenceTimestamp( - _globalRootConfirmerSet + _generator ); } @@ -323,11 +323,11 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl * @notice Sets the global root confirmer set * @param operatorSet The operatorSet which certifies against global roots */ - function _setGlobalRootConfirmerSet( + function _setGenerator( OperatorSet calldata operatorSet ) internal { - _globalRootConfirmerSet = operatorSet; - emit GlobalRootConfirmerSetUpdated(operatorSet); + _generator = operatorSet; + emit GeneratorUpdated(operatorSet); } /** @@ -345,16 +345,16 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl /** * @notice Updates the operator table for the global root confirmer set * @param referenceTimestamp The reference timestamp of the operator table update - * @param globalRootConfirmerSetInfo The operatorSetInfo for the global root confirmer set - * @param globalRootConfirmerSetConfig The operatorSetConfig for the global root confirmer set + * @param generatorInfo The operatorSetInfo for the global root confirmer set + * @param generatorConfig The operatorSetConfig for the global root confirmer set */ - function _updateGlobalRootConfirmerSet( + function _updateGenerator( uint32 referenceTimestamp, - BN254OperatorSetInfo calldata globalRootConfirmerSetInfo, - OperatorSetConfig calldata globalRootConfirmerSetConfig + BN254OperatorSetInfo calldata generatorInfo, + OperatorSetConfig calldata generatorConfig ) internal { bn254CertificateVerifier.updateOperatorTable( - _globalRootConfirmerSet, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig + _generator, referenceTimestamp, generatorInfo, generatorConfig ); } diff --git a/src/contracts/multichain/OperatorTableUpdaterStorage.sol b/src/contracts/multichain/OperatorTableUpdaterStorage.sol index c51bc71c85..d2468aa63c 100644 --- a/src/contracts/multichain/OperatorTableUpdaterStorage.sol +++ b/src/contracts/multichain/OperatorTableUpdaterStorage.sol @@ -34,7 +34,7 @@ abstract contract OperatorTableUpdaterStorage is IOperatorTableUpdater { uint32 internal _latestReferenceTimestamp; /// @notice The operatorSet which certifies against global roots - OperatorSet internal _globalRootConfirmerSet; + OperatorSet internal _generator; /// @notice The global table roots by timestamp mapping(uint32 timestamp => bytes32 globalTableRoot) internal _globalTableRoots; diff --git a/src/test/tree/OperatorTableUpdaterUnit.tree b/src/test/tree/OperatorTableUpdaterUnit.tree index 918b388463..a36bbe1e80 100644 --- a/src/test/tree/OperatorTableUpdaterUnit.tree +++ b/src/test/tree/OperatorTableUpdaterUnit.tree @@ -4,7 +4,7 @@ │ ├── given that the contract is already initialized │ │ └── it should revert │ └── given that the contract is not initialized - │ └── it should set the owner, global root confirmer set, threshold, and update operator table & emit events + │ └── it should set the owner, generator, threshold, and update operator table & emit events ├── when confirmGlobalTableRoot is called │ ├── given that the reference timestamp is in the future │ │ └── it should revert with GlobalTableRootInFuture @@ -31,11 +31,11 @@ │ │ └── it should call bn254CertificateVerifier.updateOperatorTable with decoded info │ └── given that the curve type is ECDSA │ └── it should call ecdsaCertificateVerifier.updateOperatorTable with decoded info - ├── when setGlobalRootConfirmerSet is called + ├── when setGenerator is called │ ├── given that the caller is not the owner │ │ └── it should revert │ └── given that the caller is the owner - │ └── it should update the global root confirmer set & emit GlobalRootConfirmerSetUpdated event + │ └── it should update the generator & emit GeneratorUpdated event ├── when setGlobalRootConfirmationThreshold is called │ ├── given that the caller is not the owner │ │ └── it should revert @@ -50,11 +50,11 @@ │ │ └── it should revert with InvalidRoot │ └── given that the caller is the owner and root is valid │ └── it should disable the root & emit GlobalRootDisabled event - ├── when updateGlobalRootConfirmerSet is called + ├── when updateGenerator is called │ ├── given that the caller is not the owner │ │ └── it should revert │ └── given that the caller is the owner - │ └── it should update the global root confirmer set table + │ └── it should update the generator table ├── when isRootValid(bytes32) is called │ └── it should return the validity status of the given global table root ├── when isRootValidByTimestamp(uint32) is called @@ -63,8 +63,8 @@ │ └── it should return the global table root for the given timestamp ├── when getCurrentGlobalTableRoot is called │ └── it should return the global table root for the latest reference timestamp - ├── when getGlobalRootConfirmerSet is called - │ └── it should return the current global root confirmer set + ├── when getGenerator is called + │ └── it should return the current generator ├── when getCertificateVerifier is called │ ├── given that the curve type is BN254 │ │ └── it should return the bn254CertificateVerifier address @@ -82,5 +82,5 @@ │ └── it should return the reference timestamp for the given block number ├── when getGlobalTableUpdateMessageHash is called │ └── it should return the keccak256 hash of encoded typehash, root, timestamp, and block number - └── when getGlobalConfirmerSetReferenceTimestamp is called - └── it should return the latest reference timestamp for the global root confirmer set \ No newline at end of file + └── when getGeneratorReferenceTimestamp is called + └── it should return the latest reference timestamp for the generator \ No newline at end of file diff --git a/src/test/unit/OperatorTableUpdaterUnit.t.sol b/src/test/unit/OperatorTableUpdaterUnit.t.sol index 7a7e8fd124..d893111fab 100644 --- a/src/test/unit/OperatorTableUpdaterUnit.t.sol +++ b/src/test/unit/OperatorTableUpdaterUnit.t.sol @@ -23,8 +23,8 @@ contract OperatorTableUpdaterUnitTests is /// @notice The default operatorSet OperatorSet defaultOperatorSet = OperatorSet({avs: address(this), id: 0}); - /// @notice The global confirmer operatorSet params - OperatorSet globalRootConfirmerSet = OperatorSet({avs: address(0xDEADBEEF), id: 0}); + /// @notice The generator operatorSet params + OperatorSet generator = OperatorSet({avs: address(0xDEADBEEF), id: 0}); uint16 internal constant GLOBAL_ROOT_CONFIRMATION_THRESHOLD = 10_000; // 100% signoff threshold function setUp() public virtual override { @@ -55,11 +55,11 @@ contract OperatorTableUpdaterUnitTests is abi.encodeWithSelector( OperatorTableUpdater.initialize.selector, address(this), // owner - globalRootConfirmerSet, // globalRootConfirmerSet + generator, // generator GLOBAL_ROOT_CONFIRMATION_THRESHOLD, // globalRootConfirmationThreshold block.timestamp - 1, // referenceTimestamp - initialOperatorSetInfo, // globalRootConfirmerSetInfo - initialOperatorSetConfig // globalRootConfirmerSetConfig + initialOperatorSetInfo, // generatorInfo + initialOperatorSetConfig // generatorConfig ) ); } @@ -176,11 +176,11 @@ contract OperatorTableUpdaterUnitTests is contract OperatorTableUpdaterUnitTests_initialize is OperatorTableUpdaterUnitTests { function test_initialize_success() public view { - OperatorSet memory confirmerSet = operatorTableUpdater.getGlobalRootConfirmerSet(); + OperatorSet memory confirmerSet = operatorTableUpdater.getGenerator(); assertEq(confirmerSet.avs, address(0xDEADBEEF)); assertEq(confirmerSet.id, 0); assertEq(operatorTableUpdater.getLatestReferenceTimestamp(), uint32(block.timestamp - 1)); - assertEq(operatorTableUpdater.getGlobalConfirmerSetReferenceTimestamp(), uint32(block.timestamp - 1)); + assertEq(operatorTableUpdater.getGeneratorReferenceTimestamp(), uint32(block.timestamp - 1)); assertTrue(operatorTableUpdater.isRootValidByTimestamp(uint32(block.timestamp - 1))); assertTrue(operatorTableUpdater.isRootValid(operatorTableUpdater.getCurrentGlobalTableRoot())); @@ -194,7 +194,7 @@ contract OperatorTableUpdaterUnitTests_initialize is OperatorTableUpdaterUnitTes cheats.expectRevert("Initializable: contract is already initialized"); operatorTableUpdater.initialize( address(this), - globalRootConfirmerSet, + generator, GLOBAL_ROOT_CONFIRMATION_THRESHOLD, uint32(block.timestamp - 1), initialOperatorSetInfo, @@ -567,14 +567,14 @@ contract OperatorTableUpdaterUnitTests_getters is OperatorTableUpdaterUnitTests assertEq(operatorTableUpdater.getReferenceTimestampByBlockNumber(referenceBlockNumber), referenceTimestamp); } - function test_getGlobalRootConfirmerSet() public view { - OperatorSet memory confirmerSet = operatorTableUpdater.getGlobalRootConfirmerSet(); - assertEq(confirmerSet.avs, globalRootConfirmerSet.avs); - assertEq(confirmerSet.id, globalRootConfirmerSet.id); + function test_getGenerator() public view { + OperatorSet memory confirmerSet = operatorTableUpdater.getGenerator(); + assertEq(confirmerSet.avs, generator.avs); + assertEq(confirmerSet.id, generator.id); } - function test_getGlobalConfirmerSetReferenceTimestamp() public view { - uint32 timestamp = operatorTableUpdater.getGlobalConfirmerSetReferenceTimestamp(); + function test_getGeneratorReferenceTimestamp() public view { + uint32 timestamp = operatorTableUpdater.getGeneratorReferenceTimestamp(); assertEq(timestamp, uint32(block.timestamp - 1)); } @@ -599,7 +599,7 @@ contract OperatorTableUpdaterUnitTests_getters is OperatorTableUpdaterUnitTests } } -contract OperatorTableUpdaterUnitTests_setGlobalRootConfirmerSet is OperatorTableUpdaterUnitTests { +contract OperatorTableUpdaterUnitTests_setGenerator is OperatorTableUpdaterUnitTests { function testFuzz_revert_onlyOwner(Randomness r) public rand(r) { address invalidCaller = r.Address(); cheats.assume(invalidCaller != address(this)); @@ -608,22 +608,22 @@ contract OperatorTableUpdaterUnitTests_setGlobalRootConfirmerSet is OperatorTabl // Should revert when called by non-owner cheats.prank(invalidCaller); cheats.expectRevert("Ownable: caller is not the owner"); - operatorTableUpdater.setGlobalRootConfirmerSet(newSet); + operatorTableUpdater.setGenerator(newSet); } function testFuzz_correctness(Randomness r) public rand(r) { // Generate random operator set OperatorSet memory newOperatorSet = OperatorSet({avs: r.Address(), id: r.Uint32()}); - // Set the confirmer set + // Set the generator cheats.expectEmit(true, true, true, true); - emit GlobalRootConfirmerSetUpdated(newOperatorSet); - operatorTableUpdater.setGlobalRootConfirmerSet(newOperatorSet); + emit GeneratorUpdated(newOperatorSet); + operatorTableUpdater.setGenerator(newOperatorSet); // Verify the storage was updated - OperatorSet memory updatedConfirmerSet = operatorTableUpdater.getGlobalRootConfirmerSet(); - assertEq(updatedConfirmerSet.avs, newOperatorSet.avs); - assertEq(updatedConfirmerSet.id, newOperatorSet.id); + OperatorSet memory updatedGenerator = operatorTableUpdater.getGenerator(); + assertEq(updatedGenerator.avs, newOperatorSet.avs); + assertEq(updatedGenerator.id, newOperatorSet.id); } } @@ -702,7 +702,7 @@ contract OperatorTableUpdaterUnitTests_disableRoot is OperatorTableUpdaterUnitTe } } -contract OperatorTableUpdaterUnitTests_updateGlobalRootConfirmerSet is OperatorTableUpdaterUnitTests { +contract OperatorTableUpdaterUnitTests_updateGenerator is OperatorTableUpdaterUnitTests { function testFuzz_revert_onlyOwner(Randomness r) public rand(r) { address invalidCaller = r.Address(); cheats.assume(invalidCaller != address(this)); @@ -712,7 +712,7 @@ contract OperatorTableUpdaterUnitTests_updateGlobalRootConfirmerSet is OperatorT // Should revert when called by non-owner cheats.prank(invalidCaller); cheats.expectRevert("Ownable: caller is not the owner"); - operatorTableUpdater.updateGlobalRootConfirmerSet(uint32(block.timestamp), operatorSetInfo, operatorSetConfig); + operatorTableUpdater.updateGenerator(uint32(block.timestamp), operatorSetInfo, operatorSetConfig); } function testFuzz_correctness(Randomness r) public rand(r) { @@ -721,23 +721,23 @@ contract OperatorTableUpdaterUnitTests_updateGlobalRootConfirmerSet is OperatorT OperatorSetConfig memory operatorSetConfig = _generateRandomOperatorSetConfig(r); uint32 referenceTimestamp = r.Uint32(uint32(block.timestamp), type(uint32).max); - // Update the global root confirmer set + // Update the generator cheats.expectCall( address(bn254CertificateVerifierMock), abi.encodeWithSelector( IBN254CertificateVerifier.updateOperatorTable.selector, - globalRootConfirmerSet, + generator, referenceTimestamp, operatorSetInfo, operatorSetConfig ) ); - operatorTableUpdater.updateGlobalRootConfirmerSet(referenceTimestamp, operatorSetInfo, operatorSetConfig); + operatorTableUpdater.updateGenerator(referenceTimestamp, operatorSetInfo, operatorSetConfig); - // Check that the globalRootConfirmerSet is updated - OperatorSet memory updatedGlobalRootConfirmerSet = operatorTableUpdater.getGlobalRootConfirmerSet(); - assertEq(updatedGlobalRootConfirmerSet.avs, globalRootConfirmerSet.avs); - assertEq(updatedGlobalRootConfirmerSet.id, globalRootConfirmerSet.id); + // Check that the generator is updated + OperatorSet memory updatedGenerator = operatorTableUpdater.getGenerator(); + assertEq(updatedGenerator.avs, generator.avs); + assertEq(updatedGenerator.id, generator.id); } } @@ -794,11 +794,11 @@ contract OperatorTableUpdaterUnitTests_IntegrationScenarios is OperatorTableUpda // Step 2: Disable the old root operatorTableUpdater.disableRoot(oldGlobalTableRoot); - // Step 3: Set a new global root confirmer set - OperatorSet memory newGlobalRootConfirmerSet = OperatorSet({avs: address(0xBEEF), id: 1}); - operatorTableUpdater.setGlobalRootConfirmerSet(newGlobalRootConfirmerSet); + // Step 3: Set a new generator + OperatorSet memory newGenerator = OperatorSet({avs: address(0xBEEF), id: 1}); + operatorTableUpdater.setGenerator(newGenerator); - // Step 4: Update the global root confirmer set operator table + // Step 4: Update the generator operator table BN254OperatorSetInfo memory newOperatorSetInfo = BN254OperatorSetInfo({ operatorInfoTreeRoot: bytes32(uint(2)), numOperators: 2, @@ -808,12 +808,12 @@ contract OperatorTableUpdaterUnitTests_IntegrationScenarios is OperatorTableUpda newOperatorSetInfo.totalWeights[0] = 100 ether; OperatorSetConfig memory newOperatorSetConfig = OperatorSetConfig({owner: address(0xBEEF), maxStalenessPeriod: 20_000}); - // Set the confirmer set reference timestamp in the mock - bn254CertificateVerifierMock.setLatestReferenceTimestamp(newGlobalRootConfirmerSet, uint32(block.timestamp)); + // Set the generator reference timestamp in the mock + bn254CertificateVerifierMock.setLatestReferenceTimestamp(newGenerator, uint32(block.timestamp)); - operatorTableUpdater.updateGlobalRootConfirmerSet(uint32(block.timestamp), newOperatorSetInfo, newOperatorSetConfig); + operatorTableUpdater.updateGenerator(uint32(block.timestamp), newOperatorSetInfo, newOperatorSetConfig); - // Step 5: Confirm a new global table root with the new confirmer set + // Step 5: Confirm a new global table root with the new generator bytes32 newGlobalTableRoot = bytes32(uint(2)); uint32 newReferenceTimestamp = uint32(block.timestamp + 1); uint32 newReferenceBlockNumber = uint32(block.number + 1); @@ -822,12 +822,12 @@ contract OperatorTableUpdaterUnitTests_IntegrationScenarios is OperatorTableUpda newCertificate.messageHash = operatorTableUpdater.getGlobalTableUpdateMessageHash(newGlobalTableRoot, newReferenceTimestamp, newReferenceBlockNumber); - // Set the certificate as valid for the new confirmer set + // Set the certificate as valid for the new generator _setIsValidCertificate(newCertificate, true); cheats.warp(newReferenceTimestamp); - // This should succeed with the new confirmer set + // This should succeed with the new generator cheats.expectEmit(true, true, true, true); emit NewGlobalTableRoot(newReferenceTimestamp, newGlobalTableRoot); operatorTableUpdater.confirmGlobalTableRoot(newCertificate, newGlobalTableRoot, newReferenceTimestamp, newReferenceBlockNumber); @@ -836,10 +836,10 @@ contract OperatorTableUpdaterUnitTests_IntegrationScenarios is OperatorTableUpda assertEq(operatorTableUpdater.getCurrentGlobalTableRoot(), newGlobalTableRoot); } - function test_setNewConfirmerSet_withoutUpdatingTable_confirmGlobalTableRoot_fails() public { - // Step 1: Set a new global root confirmer set without updating its operator table - OperatorSet memory newGlobalRootConfirmerSet = OperatorSet({avs: address(0xDEAD), id: 2}); - operatorTableUpdater.setGlobalRootConfirmerSet(newGlobalRootConfirmerSet); + function test_setNewGenerator_withoutUpdatingTable_confirmGlobalTableRoot_fails() public { + // Step 1: Set a new generator without updating its operator table + OperatorSet memory newGenerator = OperatorSet({avs: address(0xDEAD), id: 2}); + operatorTableUpdater.setGenerator(newGenerator); // Step 2: Try to confirm a new global table root bytes32 newGlobalTableRoot = bytes32(uint(3)); @@ -850,12 +850,12 @@ contract OperatorTableUpdaterUnitTests_IntegrationScenarios is OperatorTableUpda newCertificate.messageHash = operatorTableUpdater.getGlobalTableUpdateMessageHash(newGlobalTableRoot, newReferenceTimestamp, newReferenceBlockNumber); - // Simulate that the certificate verification should fail because we have a new confirmer set + // Simulate that the certificate verification should fail because we have a new generator _setIsValidCertificate(newCertificate, false); cheats.warp(newReferenceTimestamp); - // This should fail because the operator table for the new confirmer set was not updated + // This should fail because the operator table for the new generator was not updated cheats.expectRevert(CertificateInvalid.selector); operatorTableUpdater.confirmGlobalTableRoot(newCertificate, newGlobalTableRoot, newReferenceTimestamp, newReferenceBlockNumber); } From 337ac23c1ced94daa33d89b2e559d46f0da698a2 Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Mon, 30 Jun 2025 14:26:59 -0400 Subject: [PATCH 2/6] chore: format --- src/contracts/multichain/OperatorTableUpdater.sol | 8 ++------ src/test/unit/OperatorTableUpdaterUnit.t.sol | 6 +----- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/contracts/multichain/OperatorTableUpdater.sol b/src/contracts/multichain/OperatorTableUpdater.sol index 9eac6b314a..7228054039 100644 --- a/src/contracts/multichain/OperatorTableUpdater.sol +++ b/src/contracts/multichain/OperatorTableUpdater.sol @@ -263,9 +263,7 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl /// @inheritdoc IOperatorTableUpdater function getGeneratorReferenceTimestamp() external view returns (uint32) { - return IBaseCertificateVerifier(address(bn254CertificateVerifier)).latestReferenceTimestamp( - _generator - ); + return IBaseCertificateVerifier(address(bn254CertificateVerifier)).latestReferenceTimestamp(_generator); } /// @inheritdoc IOperatorTableUpdater @@ -353,9 +351,7 @@ contract OperatorTableUpdater is Initializable, OwnableUpgradeable, OperatorTabl BN254OperatorSetInfo calldata generatorInfo, OperatorSetConfig calldata generatorConfig ) internal { - bn254CertificateVerifier.updateOperatorTable( - _generator, referenceTimestamp, generatorInfo, generatorConfig - ); + bn254CertificateVerifier.updateOperatorTable(_generator, referenceTimestamp, generatorInfo, generatorConfig); } /** diff --git a/src/test/unit/OperatorTableUpdaterUnit.t.sol b/src/test/unit/OperatorTableUpdaterUnit.t.sol index d893111fab..23feab99bd 100644 --- a/src/test/unit/OperatorTableUpdaterUnit.t.sol +++ b/src/test/unit/OperatorTableUpdaterUnit.t.sol @@ -725,11 +725,7 @@ contract OperatorTableUpdaterUnitTests_updateGenerator is OperatorTableUpdaterUn cheats.expectCall( address(bn254CertificateVerifierMock), abi.encodeWithSelector( - IBN254CertificateVerifier.updateOperatorTable.selector, - generator, - referenceTimestamp, - operatorSetInfo, - operatorSetConfig + IBN254CertificateVerifier.updateOperatorTable.selector, generator, referenceTimestamp, operatorSetInfo, operatorSetConfig ) ); operatorTableUpdater.updateGenerator(referenceTimestamp, operatorSetInfo, operatorSetConfig); From a713403b64a4da16a384536bd36cfb695a0ae270 Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Mon, 30 Jun 2025 15:13:54 -0400 Subject: [PATCH 3/6] chore: binding --- pkg/bindings/OperatorTableUpdater/binding.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pkg/bindings/OperatorTableUpdater/binding.go b/pkg/bindings/OperatorTableUpdater/binding.go index d03ff44d65..10a7030353 100644 --- a/pkg/bindings/OperatorTableUpdater/binding.go +++ b/pkg/bindings/OperatorTableUpdater/binding.go @@ -85,13 +85,8 @@ type OperatorSet struct { // OperatorTableUpdaterMetaData contains all meta data concerning the OperatorTableUpdater contract. var OperatorTableUpdaterMetaData = &bind.MetaData{ -<<<<<<< HEAD - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bn254CertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"},{\"name\":\"_ecdsaCertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INITIAL_GLOBAL_TABLE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalConfirmerSetReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_globalRootConfirmerSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_globalRootConfirmationThreshold\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"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\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b5060405161240238038061240283398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120ee6103145f395f61082201525f818161045d015281816108a30152610ac101525f8181610484015281816107780152818161086301528181610a1c01528181610cf00152610fc401526120ee5ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c806354fd4d50116100fe578063b8c143061161009e578063c5916a391161006e578063c5916a39146104ed578063eaaed9d514610512578063f2fde38b14610525578063fd967f4714610538575f5ffd5b8063b8c143061461047f578063c252aa22146104a6578063c3621f0a146104c7578063c3be1e33146104da575f5ffd5b8063715018a6116100d9578063715018a61461042c5780638da5cb5b146104345780639ea9477814610445578063ad0f958214610458575f5ffd5b806354fd4d50146103b757806364e1df84146103cc5780636f728c5014610401575f5ffd5b806328522d79116101695780633ef6cd7a116101445780633ef6cd7a1461030d5780634624e6a31461033457806346282889146103485780634af81d7a14610390575f5ffd5b806328522d791461028a57806330ef41b4146102b657806331a599d2146102e8575f5ffd5b8063193b79f3116101a4578063193b79f3146102145780631ab78d901461023c5780632370356c1461024f57806323b7b5b214610262575f5ffd5b8063021ab442146101ca5780630371406e146101df5780630f3f8edd146101f2575b5f5ffd5b6101dd6101d8366004611350565b610541565b005b6101dd6101ed3660046113e0565b61074b565b6101fa61075f565b60405163ffffffff90911681526020015b60405180910390f35b6101fa610222366004611401565b63ffffffff9081165f908152606960205260409020541690565b6101dd61024a36600461141c565b6107f2565b6101dd61025d366004611478565b61080a565b6101fa610270366004611401565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b60405190815260200161020b565b6102d86102c4366004611491565b5f908152606a602052604090205460ff1690565b604051901515815260200161020b565b60655462010000900463ffffffff9081165f90815260686020526040902054166101fa565b6102a87f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff166101fa565b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff169082015260405161020b91906114c6565b6102a87f2eddfa6e51c2e0ba986436883fbc224e895ba21e8fc61421f6b10d11e25d008e81565b6103bf61081b565b60405161020b91906114d4565b6102d86103da366004611401565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b61041461040f366004611517565b610846565b6040516001600160a01b03909116815260200161020b565b6101dd6108e5565b6033546001600160a01b0316610414565b6101dd610453366004611574565b6108f8565b6104147f000000000000000000000000000000000000000000000000000000000000000081565b6104147f000000000000000000000000000000000000000000000000000000000000000081565b6065546104b49061ffff1681565b60405161ffff909116815260200161020b565b6101dd6104d5366004611491565b610b26565b6102a86104e836600461160f565b610b9b565b6102a86104fb366004611401565b63ffffffff165f9081526067602052604090205490565b6101dd61052036600461164e565b610c03565b6101dd6105333660046116ba565b610e35565b6104b461271081565b5f54610100900460ff161580801561055f57505f54600160ff909116105b806105785750303b15801561057857505f5460ff166001145b6105e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610601575f805461ff0019166101001790555b61060a87610ea7565b61061386610ef8565b61061c85610f42565b610627848484610fad565b63ffffffff8481165f8181526067602090815260408083207f2eddfa6e51c2e0ba986436883fbc224e895ba21e8fc61421f6b10d11e25d008e908190557f10b2e5f6b212b2c1d8f17fc240726b9af6c45b2a8fff776e3ef5e5aff1c35965805460ff191660011790556068835281842080544390971663ffffffff19978816811790915584526069909252808320805490951684179094556065805462010000850265ffffffff00001990911617905592517f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d3699190a38015610742575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610753611029565b61075c81610ef8565b50565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b906107ae906066906004016116d5565b602060405180830381865afa1580156107c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ed91906116fc565b905090565b6107fa611029565b610805838383610fad565b505050565b610812611029565b61075c81610f42565b60606107ed7f0000000000000000000000000000000000000000000000000000000000000000611083565b5f600282600281111561085b5761085b611717565b0361088757507f0000000000000000000000000000000000000000000000000000000000000000919050565b600182600281111561089b5761089b611717565b036108c757507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b6108ed611029565b6108f65f610ea7565b565b5f5f5f5f61090686866110c0565b5f8e8152606a60205260409020549397509195509350915060ff1661093e5760405163504570e360e01b815260040160405180910390fd5b61094783610846565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161097291906114c6565b602060405180830381865afa15801561098d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b191906116fc565b63ffffffff168b63ffffffff16116109dc5760405163207617df60e01b815260040160405180910390fd5b610a018b8b8b8b8b8b8b6040516109f492919061172b565b6040518091039020611107565b6002836002811115610a1557610a15611717565b03610aa6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610a54856111a8565b866040518563ffffffff1660e01b8152600401610a749493929190611774565b5f604051808303815f87803b158015610a8b575f5ffd5b505af1158015610a9d573d5f5f3e3d5ffd5b50505050610b19565b6001836002811115610aba57610aba611717565b036108c7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d610af9856111ca565b866040518563ffffffff1660e01b8152600401610a7494939291906117f0565b5050505050505050505050565b610b2e611029565b5f818152606a602052604090205460ff16610b5c5760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b428263ffffffff161115610c2a57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610c5c5760405163037fa86b60e31b815260040160405180910390fd5b610c67838383610b9b565b846020013514610c8a57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610cc557610cc56118a9565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610d2a906066908a9087906004016119db565b6020604051808303815f875af1158015610d46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190611b68565b905080610d8a57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610e3d611029565b6001600160a01b038116610ea25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61075c815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610f058282611b87565b9050507f20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b3781604051610f379190611c18565b60405180910390a150565b61271061ffff82161115610f69576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610f37565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b9061100090606690879087908790600401611c26565b5f604051808303815f87803b158015611017575f5ffd5b505af1158015610742573d5f5f3e3d5ffd5b6033546001600160a01b031633146108f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b60605f61108f836111e0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f808252602082018190529060606110f785870187611d79565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461113b5760405163639d09b560e11b815260040160405180910390fd5b61118383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff8816611207565b6111a05760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6111b06112b5565b818060200190518101906111c49190611eca565b92915050565b6060818060200190518101906111c49190611f79565b5f60ff8216601f8111156111c457604051632cd44ac360e21b815260040160405180910390fd5b5f8361121486858561121e565b1495945050505050565b5f6020845161122d919061207a565b1561124b576040516313717da960e21b815260040160405180910390fd5b8260205b855181116112ac5761126260028561207a565b5f0361128357815f528086015160205260405f20915060028404935061129a565b808601515f528160205260405f2091506002840493505b6112a5602082612099565b905061124f565b50949350505050565b60405180608001604052805f81526020015f81526020016112e760405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b038116811461075c575f5ffd5b5f60408284031215611318575f5ffd5b50919050565b803561ffff811681146108e0575f5ffd5b63ffffffff8116811461075c575f5ffd5b5f60a08284031215611318575f5ffd5b5f5f5f5f5f5f6101008789031215611366575f5ffd5b8635611371816112f4565b95506113808860208901611308565b945061138e6060880161131e565b9350608087013561139e8161132f565b925060a08701356001600160401b038111156113b8575f5ffd5b6113c489828a01611340565b9250506113d48860c08901611308565b90509295509295509295565b5f604082840312156113f0575f5ffd5b6113fa8383611308565b9392505050565b5f60208284031215611411575f5ffd5b81356113fa8161132f565b5f5f5f6080848603121561142e575f5ffd5b83356114398161132f565b925060208401356001600160401b03811115611453575f5ffd5b61145f86828701611340565b92505061146f8560408601611308565b90509250925092565b5f60208284031215611488575f5ffd5b6113fa8261131e565b5f602082840312156114a1575f5ffd5b5035919050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016111c482846114a8565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8035600381106108e0575f5ffd5b5f60208284031215611527575f5ffd5b6113fa82611509565b5f5f83601f840112611540575f5ffd5b5081356001600160401b03811115611556575f5ffd5b60208301915083602082850101111561156d575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561158a575f5ffd5b87356115958161132f565b96506020880135955060408801356115ac8161132f565b945060608801356001600160401b038111156115c6575f5ffd5b6115d28a828b01611530565b90955093505060808801356001600160401b038111156115f0575f5ffd5b6115fc8a828b01611530565b989b979a50959850939692959293505050565b5f5f5f60608486031215611621575f5ffd5b8335925060208401356116338161132f565b915060408401356116438161132f565b809150509250925092565b5f5f5f5f60808587031215611661575f5ffd5b84356001600160401b03811115611676575f5ffd5b85016101208188031215611688575f5ffd5b935060208501359250604085013561169f8161132f565b915060608501356116af8161132f565b939692955090935050565b5f602082840312156116ca575f5ffd5b81356113fa816112f4565b604081016111c48284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f6020828403121561170c575f5ffd5b81516113fa8161132f565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561176a57815186526020958601959091019060010161174c565b5093949350505050565b61177e81866114a8565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526117d761016084018261173a565b9150506117e760808301846114a8565b95945050505050565b5f60c082016117ff83886114a8565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156118805786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061186a9087018261173a565b955050602093840193919091019060010161182f565b50505050809150506117e760808301846114a8565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126118d2575f5ffd5b83016020810192503590506001600160401b038111156118f0575f5ffd5b8060051b360382131561156d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e1983360301811261193d575f5ffd5b90910192915050565b8183525f6001600160fb1b0383111561195d575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f61199260408301836118bd565b606060408601526117e7606086018284611946565b5f8151808452602084019350602083015f5b8281101561176a57815161ffff168652602095860195909101906001016119b9565b6119fe8185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a082018435611a168161132f565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c08601610140850137611a656101008601866118bd565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611b47578786036101bf19018352611aa48286611929565b8035611aaf8161132f565b63ffffffff168752602081013536829003601e19018112611ace575f5ffd5b81016020810190356001600160401b03811115611ae9575f5ffd5b803603821315611af7575f5ffd5b606060208a0152611b0c60608a018284611901565b915050611b1c6040830183611929565b91508781036040890152611b308183611976565b975050506020928301929190910190600101611a88565b50505050508281036060840152611b5e81856119a7565b9695505050505050565b5f60208284031215611b78575f5ffd5b815180151581146113fa575f5ffd5b8135611b92816112f4565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611bbe8161132f565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611bee816112f4565b6001600160a01b031682526020810135611c078161132f565b63ffffffff81166020840152505050565b604081016111c48284611be3565b611c498186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611c9760808501856118bd565b60a0610140850152611cae61016085018284611946565b925050506117e76080830184611be3565b604080519081016001600160401b0381118282101715611ce157611ce1611895565b60405290565b604051608081016001600160401b0381118282101715611ce157611ce1611895565b604051601f8201601f191681016001600160401b0381118282101715611d3157611d31611895565b604052919050565b5f60408284031215611d49575f5ffd5b611d51611cbf565b90508135611d5e816112f4565b81526020820135611d6e8161132f565b602082015292915050565b5f5f5f5f60c08587031215611d8c575f5ffd5b611d968686611d39565b9350611da460408601611509565b9250611db38660608701611d39565b915060a08501356001600160401b03811115611dcd575f5ffd5b8501601f81018713611ddd575f5ffd5b80356001600160401b03811115611df657611df6611895565b611e09601f8201601f1916602001611d09565b818152886020838501011115611e1d575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611e5657611e56611895565b5060051b60200190565b5f82601f830112611e6f575f5ffd5b8151611e82611e7d82611e3e565b611d09565b8082825260208201915060208360051b860101925085831115611ea3575f5ffd5b602085015b83811015611ec0578051835260209283019201611ea8565b5095945050505050565b5f60208284031215611eda575f5ffd5b81516001600160401b03811115611eef575f5ffd5b820180840360a0811215611f01575f5ffd5b611f09611ce7565b82518152602080840151908201526040603f1983011215611f28575f5ffd5b611f30611cbf565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611f5f575f5ffd5b611f6b86838501611e60565b606082015295945050505050565b5f60208284031215611f89575f5ffd5b81516001600160401b03811115611f9e575f5ffd5b8201601f81018413611fae575f5ffd5b8051611fbc611e7d82611e3e565b8082825260208201915060208360051b850101925086831115611fdd575f5ffd5b602084015b8381101561206f5780516001600160401b03811115611fff575f5ffd5b85016040818a03601f19011215612014575f5ffd5b61201c611cbf565b602082015161202a816112f4565b815260408201516001600160401b03811115612044575f5ffd5b6120538b602083860101611e60565b6020830152508085525050602083019250602081019050611fe2565b509695505050505050565b5f8261209457634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156111c457634e487b7160e01b5f52601160045260245ffdfea264697066735822122012eb492cbbec575de353e2536efc61488ab0d9e7cd4ad56b06e5d9334683404264736f6c634300081b0033", -======= ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bn254CertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"},{\"name\":\"_ecdsaCertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_globalRootConfirmationThreshold\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"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\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", Bin: "0x60e060405234801561000f575f5ffd5b5060405161231638038061231683398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120026103145f395f61067a01525f81816104180152818161070001526109bd01525f818161043f015281816106c00152818161076e0152818161091801528181610c040152610ed801526120025ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c80637551ba34116100f3578063c3621f0a11610093578063e944e0a81161006e578063e944e0a8146104cd578063eaaed9d5146104e0578063f2fde38b146104f3578063fd967f4714610506575f5ffd5b8063c3621f0a14610482578063c3be1e3314610495578063c5916a39146104a8575f5ffd5b80639ea94778116100ce5780639ea9477814610400578063ad0f958214610413578063b8c143061461043a578063c252aa2214610461575f5ffd5b80637551ba34146103d457806377d90e94146103dc5780638da5cb5b146103ef575f5ffd5b806331a599d21161015e57806354fd4d501161013957806354fd4d501461035757806364e1df841461036c5780636f728c50146103a1578063715018a6146103cc575f5ffd5b806331a599d2146102f75780633ef6cd7a1461031c5780634624e6a314610343575f5ffd5b80632370356c116101995780632370356c1461025e57806323b7b5b21461027157806328522d791461029957806330ef41b4146102c5575f5ffd5b8063021ab442146101bf578063193b79f3146101d45780631e2ca26014610216575b5f5ffd5b6101d26101cd366004611264565b61050f565b005b6101fc6101e23660046112f4565b63ffffffff9081165f908152606960205260409020541690565b60405163ffffffff90911681526020015b60405180910390f35b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff169082015260405161020d9190611334565b6101d261026c366004611342565b61065f565b6101fc61027f3660046112f4565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b60405190815260200161020d565b6102e76102d336600461135b565b5f908152606a602052604090205460ff1690565b604051901515815260200161020d565b60655462010000900463ffffffff9081165f90815260686020526040902054166101fc565b6102b77f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff166101fc565b61035f610673565b60405161020d9190611372565b6102e761037a3660046112f4565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b6103b46103af3660046113b5565b6106a3565b6040516001600160a01b03909116815260200161020d565b6101d2610742565b6101fc610755565b6101d26103ea3660046113ce565b6107e3565b6033546001600160a01b03166103b4565b6101d261040e36600461142c565b6107f4565b6103b47f000000000000000000000000000000000000000000000000000000000000000081565b6103b47f000000000000000000000000000000000000000000000000000000000000000081565b60655461046f9061ffff1681565b60405161ffff909116815260200161020d565b6101d261049036600461135b565b610a22565b6102b76104a33660046114c7565b610a97565b6102b76104b63660046112f4565b63ffffffff165f9081526067602052604090205490565b6101d26104db366004611506565b610aff565b6101d26104ee366004611562565b610b17565b6101d26105013660046115ce565b610d49565b61046f61271081565b5f54610100900460ff161580801561052d57505f54600160ff909116105b806105465750303b15801561054657505f5460ff166001145b6105ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156105cf575f805461ff0019166101001790555b6105d887610dbb565b6105e186610e0c565b6105ea85610e56565b6105f5848484610ec1565b6065805465ffffffff000019166201000063ffffffff8716021790558015610656575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610667610f3d565b61067081610e56565b50565b606061069e7f0000000000000000000000000000000000000000000000000000000000000000610f97565b905090565b5f60028260028111156106b8576106b86115e9565b036106e457507f0000000000000000000000000000000000000000000000000000000000000000919050565b60018260028111156106f8576106f86115e9565b0361072457507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b61074a610f3d565b6107535f610dbb565b565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b906107a4906066906004016115fd565b602060405180830381865afa1580156107bf573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069e9190611624565b6107eb610f3d565b61067081610e0c565b5f5f5f5f6108028686610fd4565b5f8e8152606a60205260409020549397509195509350915060ff1661083a5760405163504570e360e01b815260040160405180910390fd5b610843836106a3565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161086e9190611334565b602060405180830381865afa158015610889573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ad9190611624565b63ffffffff168b63ffffffff16116108d85760405163207617df60e01b815260040160405180910390fd5b6108fd8b8b8b8b8b8b8b6040516108f092919061163f565b604051809103902061101b565b6002836002811115610911576109116115e9565b036109a2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610950856110bc565b866040518563ffffffff1660e01b81526004016109709493929190611688565b5f604051808303815f87803b158015610987575f5ffd5b505af1158015610999573d5f5f3e3d5ffd5b50505050610a15565b60018360028111156109b6576109b66115e9565b03610724577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d6109f5856110de565b866040518563ffffffff1660e01b81526004016109709493929190611704565b5050505050505050505050565b610a2a610f3d565b5f818152606a602052604090205460ff16610a585760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b610b07610f3d565b610b12838383610ec1565b505050565b428263ffffffff161115610b3e57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610b705760405163037fa86b60e31b815260040160405180910390fd5b610b7b838383610a97565b846020013514610b9e57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610bd957610bd96117bd565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610c3e906066908a9087906004016118ef565b6020604051808303815f875af1158015610c5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611a7c565b905080610c9e57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610d51610f3d565b6001600160a01b038116610db65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a5565b610670815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610e198282611a9b565b9050507f3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df1585681604051610e4b9190611b2c565b60405180910390a150565b61271061ffff82161115610e7d576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610e4b565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b90610f1490606690879087908790600401611b3a565b5f604051808303815f87803b158015610f2b575f5ffd5b505af1158015610656573d5f5f3e3d5ffd5b6033546001600160a01b031633146107535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a5565b60605f610fa3836110f4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f8082526020820181905290606061100b85870187611c8d565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461104f5760405163639d09b560e11b815260040160405180910390fd5b61109783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff881661111b565b6110b45760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6110c46111c9565b818060200190518101906110d89190611dde565b92915050565b6060818060200190518101906110d89190611e8d565b5f60ff8216601f8111156110d857604051632cd44ac360e21b815260040160405180910390fd5b5f83611128868585611132565b1495945050505050565b5f602084516111419190611f8e565b1561115f576040516313717da960e21b815260040160405180910390fd5b8260205b855181116111c057611176600285611f8e565b5f0361119757815f528086015160205260405f2091506002840493506111ae565b808601515f528160205260405f2091506002840493505b6111b9602082611fad565b9050611163565b50949350505050565b60405180608001604052805f81526020015f81526020016111fb60405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b0381168114610670575f5ffd5b5f6040828403121561122c575f5ffd5b50919050565b803561ffff8116811461073d575f5ffd5b63ffffffff81168114610670575f5ffd5b5f60a0828403121561122c575f5ffd5b5f5f5f5f5f5f610100878903121561127a575f5ffd5b863561128581611208565b9550611294886020890161121c565b94506112a260608801611232565b935060808701356112b281611243565b925060a08701356001600160401b038111156112cc575f5ffd5b6112d889828a01611254565b9250506112e88860c0890161121c565b90509295509295509295565b5f60208284031215611304575f5ffd5b813561130f81611243565b9392505050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016110d88284611316565b5f60208284031215611352575f5ffd5b61130f82611232565b5f6020828403121561136b575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356003811061073d575f5ffd5b5f602082840312156113c5575f5ffd5b61130f826113a7565b5f604082840312156113de575f5ffd5b61130f838361121c565b5f5f83601f8401126113f8575f5ffd5b5081356001600160401b0381111561140e575f5ffd5b602083019150836020828501011115611425575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215611442575f5ffd5b873561144d81611243565b965060208801359550604088013561146481611243565b945060608801356001600160401b0381111561147e575f5ffd5b61148a8a828b016113e8565b90955093505060808801356001600160401b038111156114a8575f5ffd5b6114b48a828b016113e8565b989b979a50959850939692959293505050565b5f5f5f606084860312156114d9575f5ffd5b8335925060208401356114eb81611243565b915060408401356114fb81611243565b809150509250925092565b5f5f5f60808486031215611518575f5ffd5b833561152381611243565b925060208401356001600160401b0381111561153d575f5ffd5b61154986828701611254565b925050611559856040860161121c565b90509250925092565b5f5f5f5f60808587031215611575575f5ffd5b84356001600160401b0381111561158a575f5ffd5b8501610120818803121561159c575f5ffd5b93506020850135925060408501356115b381611243565b915060608501356115c381611243565b939692955090935050565b5f602082840312156115de575f5ffd5b813561130f81611208565b634e487b7160e01b5f52602160045260245ffd5b604081016110d88284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f60208284031215611634575f5ffd5b815161130f81611243565b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561167e578151865260209586019590910190600101611660565b5093949350505050565b6116928186611316565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526116eb61016084018261164e565b9150506116fb6080830184611316565b95945050505050565b5f60c082016117138388611316565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156117945786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061177e9087018261164e565b9550506020938401939190910190600101611743565b50505050809150506116fb6080830184611316565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126117e6575f5ffd5b83016020810192503590506001600160401b03811115611804575f5ffd5b8060051b3603821315611425575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e19833603018112611851575f5ffd5b90910192915050565b8183525f6001600160fb1b03831115611871575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f6118a660408301836117d1565b606060408601526116fb60608601828461185a565b5f8151808452602084019350602083015f5b8281101561167e57815161ffff168652602095860195909101906001016118cd565b6119128185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a08201843561192a81611243565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c086016101408501376119796101008601866117d1565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611a5b578786036101bf190183526119b8828661183d565b80356119c381611243565b63ffffffff168752602081013536829003601e190181126119e2575f5ffd5b81016020810190356001600160401b038111156119fd575f5ffd5b803603821315611a0b575f5ffd5b606060208a0152611a2060608a018284611815565b915050611a30604083018361183d565b91508781036040890152611a44818361188a565b97505050602092830192919091019060010161199c565b50505050508281036060840152611a7281856118bb565b9695505050505050565b5f60208284031215611a8c575f5ffd5b8151801515811461130f575f5ffd5b8135611aa681611208565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611ad281611243565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611b0281611208565b6001600160a01b031682526020810135611b1b81611243565b63ffffffff81166020840152505050565b604081016110d88284611af7565b611b5d8186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611bab60808501856117d1565b60a0610140850152611bc26101608501828461185a565b925050506116fb6080830184611af7565b604080519081016001600160401b0381118282101715611bf557611bf56117a9565b60405290565b604051608081016001600160401b0381118282101715611bf557611bf56117a9565b604051601f8201601f191681016001600160401b0381118282101715611c4557611c456117a9565b604052919050565b5f60408284031215611c5d575f5ffd5b611c65611bd3565b90508135611c7281611208565b81526020820135611c8281611243565b602082015292915050565b5f5f5f5f60c08587031215611ca0575f5ffd5b611caa8686611c4d565b9350611cb8604086016113a7565b9250611cc78660608701611c4d565b915060a08501356001600160401b03811115611ce1575f5ffd5b8501601f81018713611cf1575f5ffd5b80356001600160401b03811115611d0a57611d0a6117a9565b611d1d601f8201601f1916602001611c1d565b818152886020838501011115611d31575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611d6a57611d6a6117a9565b5060051b60200190565b5f82601f830112611d83575f5ffd5b8151611d96611d9182611d52565b611c1d565b8082825260208201915060208360051b860101925085831115611db7575f5ffd5b602085015b83811015611dd4578051835260209283019201611dbc565b5095945050505050565b5f60208284031215611dee575f5ffd5b81516001600160401b03811115611e03575f5ffd5b820180840360a0811215611e15575f5ffd5b611e1d611bfb565b82518152602080840151908201526040603f1983011215611e3c575f5ffd5b611e44611bd3565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611e73575f5ffd5b611e7f86838501611d74565b606082015295945050505050565b5f60208284031215611e9d575f5ffd5b81516001600160401b03811115611eb2575f5ffd5b8201601f81018413611ec2575f5ffd5b8051611ed0611d9182611d52565b8082825260208201915060208360051b850101925086831115611ef1575f5ffd5b602084015b83811015611f835780516001600160401b03811115611f13575f5ffd5b85016040818a03601f19011215611f28575f5ffd5b611f30611bd3565b6020820151611f3e81611208565b815260408201516001600160401b03811115611f58575f5ffd5b611f678b602083860101611d74565b6020830152508085525050602083019250602081019050611ef6565b509695505050505050565b5f82611fa857634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156110d857634e487b7160e01b5f52601160045260245ffdfea26469706673582212204f4011b90b89629e25db22901479c3d9080c5ada1fe645845451fa74011b9a5b64736f6c634300081b0033", ->>>>>>> 0591237e (chore: naming) } // OperatorTableUpdaterABI is the input ABI used to generate the binding from. From a61b9173120ea1a3d57f46a5cfe4c488558f41a9 Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Mon, 30 Jun 2025 15:39:04 -0400 Subject: [PATCH 4/6] chore: update docs --- .../destination/OperatorTableUpdater.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/multichain/destination/OperatorTableUpdater.md b/docs/multichain/destination/OperatorTableUpdater.md index 4b32611bfd..67fe315a6c 100644 --- a/docs/multichain/destination/OperatorTableUpdater.md +++ b/docs/multichain/destination/OperatorTableUpdater.md @@ -19,12 +19,17 @@ The `OperatorTableUpdater` is responsible for updating the `GlobalTableRoot` and The contract supports both BN254 and ECDSA operator tables and routes updates to the appropriate certificate verifier based on the curve type. ## Parameterization -Upon initialization, the `generator` is updated. This operatorSet is a *"shadow-operatorSet"*. It does not exist in the core protocol, does not have stake backing it, and is not transported to other chains via the multichain protocol. It can only be updated upon initialization or by a [privileged role](#updategenerator). This entity is the same across all destination chains. +Upon initialization, the `generator` is updated. The `generator` is represented in storage as an operatorSet. The `generator` should be considered a ghost-operatorSet` since it does not exist in the core protocol, does not have stake backing it, and is not transported to other chains via the multichain protocol. It can only be updated upon initialization or by a [privileged role](#updategenerator). This entity is the same across all destination chains. -* `Generator` is an EigenLabs-run entity that signs off on `GlobalTableRoots`. The operatorSet is of size 1. -* `maxStalenessPeriod`: 0. Set to zero to confirm roots without updating the `generator`. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics -* `globalRootConfirmationThreshold`: 10000. The threshold in basis points required for global root confirmation. Since the operatorSet is of size 1 a single signature is needed -* `referenceTimestamp`: A past timestamp at which the `generator` is generated. This value is set to the initial `latestReferenceTimestamp` in the `OperatorTableUpdater. It is the same across all destination chains, even for destination chains that are supported after the initial deployment +The following values are set upon initialization: + +* `generator` is an EigenLabs-run entity that signs off on `globalTableRoots`. The operatorSet is of size 1. +* `globalRootConfirmationThreshold`: 10000. The threshold in basis points required for global root confirmation. Since the operatorSet is of size 1 a single signature is needed. +* `referenceTimestamp`: A past timestamp at which the `generator` is set. We hardcode this value to 1 upon initialization. This value is also the `latestReferenceTimestamp`. Once roots are updated, then this value will become a more recent timestamp. +* `generatorInfo`: The key material needed to verify certificates of the `generator` +* `operatorSetConfig`: A configuration for the `generator` + * `maxStalenessPeriod`: 0. Set to zero to confirm `globalTableRoots` without updating the `generator` operatorSet. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics`OperatorTableUpdater`. It is the same across all destination chains, even for destination chains that are supported after the initial deployment. + * `owner`: Unused parameter for `Generator` --- From 1cd63ff5d34a9520d1e4ea4da8ed6d44ccc9eaa6 Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Mon, 30 Jun 2025 15:43:58 -0400 Subject: [PATCH 5/6] chore: update --- docs/multichain/destination/OperatorTableUpdater.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/multichain/destination/OperatorTableUpdater.md b/docs/multichain/destination/OperatorTableUpdater.md index 67fe315a6c..511777f660 100644 --- a/docs/multichain/destination/OperatorTableUpdater.md +++ b/docs/multichain/destination/OperatorTableUpdater.md @@ -25,7 +25,7 @@ The following values are set upon initialization: * `generator` is an EigenLabs-run entity that signs off on `globalTableRoots`. The operatorSet is of size 1. * `globalRootConfirmationThreshold`: 10000. The threshold in basis points required for global root confirmation. Since the operatorSet is of size 1 a single signature is needed. -* `referenceTimestamp`: A past timestamp at which the `generator` is set. We hardcode this value to 1 upon initialization. This value is also the `latestReferenceTimestamp`. Once roots are updated, then this value will become a more recent timestamp. +* `referenceTimestamp`: A past timestamp at which the `generator` is set. We hardcode this value to 1 upon initialization. This value is also the `latestReferenceTimestamp`. Once roots are updated, the `latestReferenceTimestamp` will increase. *Note: the reference timestamp for the `generator` operatorSet in the [`BN254CertificateVerifier`](./CertificateVerifier.md) will remain 1 unless [`updateGenerator`](#updategenerator) is called*. * `generatorInfo`: The key material needed to verify certificates of the `generator` * `operatorSetConfig`: A configuration for the `generator` * `maxStalenessPeriod`: 0. Set to zero to confirm `globalTableRoots` without updating the `generator` operatorSet. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics`OperatorTableUpdater`. It is the same across all destination chains, even for destination chains that are supported after the initial deployment. From 9f6fa063a3078847e0c7383ef4549e235626bafd Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Mon, 30 Jun 2025 15:50:53 -0400 Subject: [PATCH 6/6] chore: bindings --- docs/multichain/destination/OperatorTableUpdater.md | 2 +- pkg/bindings/OperatorTableUpdater/binding.go | 4 ++-- pkg/bindings/OperatorTableUpdaterStorage/binding.go | 6 +----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/multichain/destination/OperatorTableUpdater.md b/docs/multichain/destination/OperatorTableUpdater.md index 511777f660..a2a7ba44f5 100644 --- a/docs/multichain/destination/OperatorTableUpdater.md +++ b/docs/multichain/destination/OperatorTableUpdater.md @@ -25,7 +25,7 @@ The following values are set upon initialization: * `generator` is an EigenLabs-run entity that signs off on `globalTableRoots`. The operatorSet is of size 1. * `globalRootConfirmationThreshold`: 10000. The threshold in basis points required for global root confirmation. Since the operatorSet is of size 1 a single signature is needed. -* `referenceTimestamp`: A past timestamp at which the `generator` is set. We hardcode this value to 1 upon initialization. This value is also the `latestReferenceTimestamp`. Once roots are updated, the `latestReferenceTimestamp` will increase. *Note: the reference timestamp for the `generator` operatorSet in the [`BN254CertificateVerifier`](./CertificateVerifier.md) will remain 1 unless [`updateGenerator`](#updategenerator) is called*. +* `referenceTimestamp`: A past timestamp at which the `generator` is set. We hardcode this value to 1 upon initialization. This value is also the `latestReferenceTimestamp`. Once roots are updated, the `latestReferenceTimestamp` will increase. *Note: the reference timestamp for the `generator`, given by `operatorTableUpdater.getGeneratorReferenceTimestamp` will remain 1 unless [`updateGenerator`](#updategenerator) is called*. * `generatorInfo`: The key material needed to verify certificates of the `generator` * `operatorSetConfig`: A configuration for the `generator` * `maxStalenessPeriod`: 0. Set to zero to confirm `globalTableRoots` without updating the `generator` operatorSet. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics`OperatorTableUpdater`. It is the same across all destination chains, even for destination chains that are supported after the initial deployment. diff --git a/pkg/bindings/OperatorTableUpdater/binding.go b/pkg/bindings/OperatorTableUpdater/binding.go index 10a7030353..f9bf13c598 100644 --- a/pkg/bindings/OperatorTableUpdater/binding.go +++ b/pkg/bindings/OperatorTableUpdater/binding.go @@ -85,8 +85,8 @@ type OperatorSet struct { // OperatorTableUpdaterMetaData contains all meta data concerning the OperatorTableUpdater contract. var OperatorTableUpdaterMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bn254CertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"},{\"name\":\"_ecdsaCertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_globalRootConfirmationThreshold\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"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\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b5060405161231638038061231683398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120026103145f395f61067a01525f81816104180152818161070001526109bd01525f818161043f015281816106c00152818161076e0152818161091801528181610c040152610ed801526120025ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c80637551ba34116100f3578063c3621f0a11610093578063e944e0a81161006e578063e944e0a8146104cd578063eaaed9d5146104e0578063f2fde38b146104f3578063fd967f4714610506575f5ffd5b8063c3621f0a14610482578063c3be1e3314610495578063c5916a39146104a8575f5ffd5b80639ea94778116100ce5780639ea9477814610400578063ad0f958214610413578063b8c143061461043a578063c252aa2214610461575f5ffd5b80637551ba34146103d457806377d90e94146103dc5780638da5cb5b146103ef575f5ffd5b806331a599d21161015e57806354fd4d501161013957806354fd4d501461035757806364e1df841461036c5780636f728c50146103a1578063715018a6146103cc575f5ffd5b806331a599d2146102f75780633ef6cd7a1461031c5780634624e6a314610343575f5ffd5b80632370356c116101995780632370356c1461025e57806323b7b5b21461027157806328522d791461029957806330ef41b4146102c5575f5ffd5b8063021ab442146101bf578063193b79f3146101d45780631e2ca26014610216575b5f5ffd5b6101d26101cd366004611264565b61050f565b005b6101fc6101e23660046112f4565b63ffffffff9081165f908152606960205260409020541690565b60405163ffffffff90911681526020015b60405180910390f35b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff169082015260405161020d9190611334565b6101d261026c366004611342565b61065f565b6101fc61027f3660046112f4565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b60405190815260200161020d565b6102e76102d336600461135b565b5f908152606a602052604090205460ff1690565b604051901515815260200161020d565b60655462010000900463ffffffff9081165f90815260686020526040902054166101fc565b6102b77f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff166101fc565b61035f610673565b60405161020d9190611372565b6102e761037a3660046112f4565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b6103b46103af3660046113b5565b6106a3565b6040516001600160a01b03909116815260200161020d565b6101d2610742565b6101fc610755565b6101d26103ea3660046113ce565b6107e3565b6033546001600160a01b03166103b4565b6101d261040e36600461142c565b6107f4565b6103b47f000000000000000000000000000000000000000000000000000000000000000081565b6103b47f000000000000000000000000000000000000000000000000000000000000000081565b60655461046f9061ffff1681565b60405161ffff909116815260200161020d565b6101d261049036600461135b565b610a22565b6102b76104a33660046114c7565b610a97565b6102b76104b63660046112f4565b63ffffffff165f9081526067602052604090205490565b6101d26104db366004611506565b610aff565b6101d26104ee366004611562565b610b17565b6101d26105013660046115ce565b610d49565b61046f61271081565b5f54610100900460ff161580801561052d57505f54600160ff909116105b806105465750303b15801561054657505f5460ff166001145b6105ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156105cf575f805461ff0019166101001790555b6105d887610dbb565b6105e186610e0c565b6105ea85610e56565b6105f5848484610ec1565b6065805465ffffffff000019166201000063ffffffff8716021790558015610656575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610667610f3d565b61067081610e56565b50565b606061069e7f0000000000000000000000000000000000000000000000000000000000000000610f97565b905090565b5f60028260028111156106b8576106b86115e9565b036106e457507f0000000000000000000000000000000000000000000000000000000000000000919050565b60018260028111156106f8576106f86115e9565b0361072457507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b61074a610f3d565b6107535f610dbb565b565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b906107a4906066906004016115fd565b602060405180830381865afa1580156107bf573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069e9190611624565b6107eb610f3d565b61067081610e0c565b5f5f5f5f6108028686610fd4565b5f8e8152606a60205260409020549397509195509350915060ff1661083a5760405163504570e360e01b815260040160405180910390fd5b610843836106a3565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161086e9190611334565b602060405180830381865afa158015610889573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ad9190611624565b63ffffffff168b63ffffffff16116108d85760405163207617df60e01b815260040160405180910390fd5b6108fd8b8b8b8b8b8b8b6040516108f092919061163f565b604051809103902061101b565b6002836002811115610911576109116115e9565b036109a2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610950856110bc565b866040518563ffffffff1660e01b81526004016109709493929190611688565b5f604051808303815f87803b158015610987575f5ffd5b505af1158015610999573d5f5f3e3d5ffd5b50505050610a15565b60018360028111156109b6576109b66115e9565b03610724577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d6109f5856110de565b866040518563ffffffff1660e01b81526004016109709493929190611704565b5050505050505050505050565b610a2a610f3d565b5f818152606a602052604090205460ff16610a585760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b610b07610f3d565b610b12838383610ec1565b505050565b428263ffffffff161115610b3e57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610b705760405163037fa86b60e31b815260040160405180910390fd5b610b7b838383610a97565b846020013514610b9e57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610bd957610bd96117bd565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610c3e906066908a9087906004016118ef565b6020604051808303815f875af1158015610c5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611a7c565b905080610c9e57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610d51610f3d565b6001600160a01b038116610db65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a5565b610670815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610e198282611a9b565b9050507f3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df1585681604051610e4b9190611b2c565b60405180910390a150565b61271061ffff82161115610e7d576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610e4b565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b90610f1490606690879087908790600401611b3a565b5f604051808303815f87803b158015610f2b575f5ffd5b505af1158015610656573d5f5f3e3d5ffd5b6033546001600160a01b031633146107535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a5565b60605f610fa3836110f4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f8082526020820181905290606061100b85870187611c8d565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461104f5760405163639d09b560e11b815260040160405180910390fd5b61109783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff881661111b565b6110b45760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6110c46111c9565b818060200190518101906110d89190611dde565b92915050565b6060818060200190518101906110d89190611e8d565b5f60ff8216601f8111156110d857604051632cd44ac360e21b815260040160405180910390fd5b5f83611128868585611132565b1495945050505050565b5f602084516111419190611f8e565b1561115f576040516313717da960e21b815260040160405180910390fd5b8260205b855181116111c057611176600285611f8e565b5f0361119757815f528086015160205260405f2091506002840493506111ae565b808601515f528160205260405f2091506002840493505b6111b9602082611fad565b9050611163565b50949350505050565b60405180608001604052805f81526020015f81526020016111fb60405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b0381168114610670575f5ffd5b5f6040828403121561122c575f5ffd5b50919050565b803561ffff8116811461073d575f5ffd5b63ffffffff81168114610670575f5ffd5b5f60a0828403121561122c575f5ffd5b5f5f5f5f5f5f610100878903121561127a575f5ffd5b863561128581611208565b9550611294886020890161121c565b94506112a260608801611232565b935060808701356112b281611243565b925060a08701356001600160401b038111156112cc575f5ffd5b6112d889828a01611254565b9250506112e88860c0890161121c565b90509295509295509295565b5f60208284031215611304575f5ffd5b813561130f81611243565b9392505050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016110d88284611316565b5f60208284031215611352575f5ffd5b61130f82611232565b5f6020828403121561136b575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356003811061073d575f5ffd5b5f602082840312156113c5575f5ffd5b61130f826113a7565b5f604082840312156113de575f5ffd5b61130f838361121c565b5f5f83601f8401126113f8575f5ffd5b5081356001600160401b0381111561140e575f5ffd5b602083019150836020828501011115611425575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215611442575f5ffd5b873561144d81611243565b965060208801359550604088013561146481611243565b945060608801356001600160401b0381111561147e575f5ffd5b61148a8a828b016113e8565b90955093505060808801356001600160401b038111156114a8575f5ffd5b6114b48a828b016113e8565b989b979a50959850939692959293505050565b5f5f5f606084860312156114d9575f5ffd5b8335925060208401356114eb81611243565b915060408401356114fb81611243565b809150509250925092565b5f5f5f60808486031215611518575f5ffd5b833561152381611243565b925060208401356001600160401b0381111561153d575f5ffd5b61154986828701611254565b925050611559856040860161121c565b90509250925092565b5f5f5f5f60808587031215611575575f5ffd5b84356001600160401b0381111561158a575f5ffd5b8501610120818803121561159c575f5ffd5b93506020850135925060408501356115b381611243565b915060608501356115c381611243565b939692955090935050565b5f602082840312156115de575f5ffd5b813561130f81611208565b634e487b7160e01b5f52602160045260245ffd5b604081016110d88284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f60208284031215611634575f5ffd5b815161130f81611243565b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561167e578151865260209586019590910190600101611660565b5093949350505050565b6116928186611316565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526116eb61016084018261164e565b9150506116fb6080830184611316565b95945050505050565b5f60c082016117138388611316565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156117945786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061177e9087018261164e565b9550506020938401939190910190600101611743565b50505050809150506116fb6080830184611316565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126117e6575f5ffd5b83016020810192503590506001600160401b03811115611804575f5ffd5b8060051b3603821315611425575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e19833603018112611851575f5ffd5b90910192915050565b8183525f6001600160fb1b03831115611871575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f6118a660408301836117d1565b606060408601526116fb60608601828461185a565b5f8151808452602084019350602083015f5b8281101561167e57815161ffff168652602095860195909101906001016118cd565b6119128185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a08201843561192a81611243565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c086016101408501376119796101008601866117d1565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611a5b578786036101bf190183526119b8828661183d565b80356119c381611243565b63ffffffff168752602081013536829003601e190181126119e2575f5ffd5b81016020810190356001600160401b038111156119fd575f5ffd5b803603821315611a0b575f5ffd5b606060208a0152611a2060608a018284611815565b915050611a30604083018361183d565b91508781036040890152611a44818361188a565b97505050602092830192919091019060010161199c565b50505050508281036060840152611a7281856118bb565b9695505050505050565b5f60208284031215611a8c575f5ffd5b8151801515811461130f575f5ffd5b8135611aa681611208565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611ad281611243565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611b0281611208565b6001600160a01b031682526020810135611b1b81611243565b63ffffffff81166020840152505050565b604081016110d88284611af7565b611b5d8186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611bab60808501856117d1565b60a0610140850152611bc26101608501828461185a565b925050506116fb6080830184611af7565b604080519081016001600160401b0381118282101715611bf557611bf56117a9565b60405290565b604051608081016001600160401b0381118282101715611bf557611bf56117a9565b604051601f8201601f191681016001600160401b0381118282101715611c4557611c456117a9565b604052919050565b5f60408284031215611c5d575f5ffd5b611c65611bd3565b90508135611c7281611208565b81526020820135611c8281611243565b602082015292915050565b5f5f5f5f60c08587031215611ca0575f5ffd5b611caa8686611c4d565b9350611cb8604086016113a7565b9250611cc78660608701611c4d565b915060a08501356001600160401b03811115611ce1575f5ffd5b8501601f81018713611cf1575f5ffd5b80356001600160401b03811115611d0a57611d0a6117a9565b611d1d601f8201601f1916602001611c1d565b818152886020838501011115611d31575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611d6a57611d6a6117a9565b5060051b60200190565b5f82601f830112611d83575f5ffd5b8151611d96611d9182611d52565b611c1d565b8082825260208201915060208360051b860101925085831115611db7575f5ffd5b602085015b83811015611dd4578051835260209283019201611dbc565b5095945050505050565b5f60208284031215611dee575f5ffd5b81516001600160401b03811115611e03575f5ffd5b820180840360a0811215611e15575f5ffd5b611e1d611bfb565b82518152602080840151908201526040603f1983011215611e3c575f5ffd5b611e44611bd3565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611e73575f5ffd5b611e7f86838501611d74565b606082015295945050505050565b5f60208284031215611e9d575f5ffd5b81516001600160401b03811115611eb2575f5ffd5b8201601f81018413611ec2575f5ffd5b8051611ed0611d9182611d52565b8082825260208201915060208360051b850101925086831115611ef1575f5ffd5b602084015b83811015611f835780516001600160401b03811115611f13575f5ffd5b85016040818a03601f19011215611f28575f5ffd5b611f30611bd3565b6020820151611f3e81611208565b815260408201516001600160401b03811115611f58575f5ffd5b611f678b602083860101611d74565b6020830152508085525050602083019250602081019050611ef6565b509695505050505050565b5f82611fa857634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156110d857634e487b7160e01b5f52601160045260245ffdfea26469706673582212204f4011b90b89629e25db22901479c3d9080c5ada1fe645845451fa74011b9a5b64736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bn254CertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"},{\"name\":\"_ecdsaCertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INITIAL_GLOBAL_TABLE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_globalRootConfirmationThreshold\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"generatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"generatorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"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\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", + Bin: "0x60e060405234801561000f575f5ffd5b5060405161240238038061240283398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120ee6103145f395f61076601525f818161044a015281816107ec0152610aa901525f8181610471015281816107ac0152818161085a01528181610a0401528181610cf00152610fc401526120ee5ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c8063715018a6116100fe578063c252aa221161009e578063e944e0a81161006e578063e944e0a8146104ff578063eaaed9d514610512578063f2fde38b14610525578063fd967f4714610538575f5ffd5b8063c252aa2214610493578063c3621f0a146104b4578063c3be1e33146104c7578063c5916a39146104da575f5ffd5b80638da5cb5b116100d95780638da5cb5b146104215780639ea9477814610432578063ad0f958214610445578063b8c143061461046c575f5ffd5b8063715018a6146103fe5780637551ba341461040657806377d90e941461040e575f5ffd5b806331a599d2116101695780634af81d7a116101445780634af81d7a1461036257806354fd4d501461038957806364e1df841461039e5780636f728c50146103d3575f5ffd5b806331a599d2146103025780633ef6cd7a146103275780634624e6a31461034e575f5ffd5b80632370356c116101a45780632370356c1461026957806323b7b5b21461027c57806328522d79146102a457806330ef41b4146102d0575f5ffd5b8063021ab442146101ca578063193b79f3146101df5780631e2ca26014610221575b5f5ffd5b6101dd6101d8366004611350565b610541565b005b6102076101ed3660046113e0565b63ffffffff9081165f908152606960205260409020541690565b60405163ffffffff90911681526020015b60405180910390f35b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff16908201526040516102189190611420565b6101dd61027736600461142e565b61074b565b61020761028a3660046113e0565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b604051908152602001610218565b6102f26102de366004611447565b5f908152606a602052604090205460ff1690565b6040519015158152602001610218565b60655462010000900463ffffffff9081165f9081526068602052604090205416610207565b6102c27f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff16610207565b6102c27f2eddfa6e51c2e0ba986436883fbc224e895ba21e8fc61421f6b10d11e25d008e81565b61039161075f565b604051610218919061145e565b6102f26103ac3660046113e0565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b6103e66103e13660046114a1565b61078f565b6040516001600160a01b039091168152602001610218565b6101dd61082e565b610207610841565b6101dd61041c3660046114ba565b6108cf565b6033546001600160a01b03166103e6565b6101dd610440366004611518565b6108e0565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6065546104a19061ffff1681565b60405161ffff9091168152602001610218565b6101dd6104c2366004611447565b610b0e565b6102c26104d53660046115b3565b610b83565b6102c26104e83660046113e0565b63ffffffff165f9081526067602052604090205490565b6101dd61050d3660046115f2565b610beb565b6101dd61052036600461164e565b610c03565b6101dd6105333660046116ba565b610e35565b6104a161271081565b5f54610100900460ff161580801561055f57505f54600160ff909116105b806105785750303b15801561057857505f5460ff166001145b6105e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610601575f805461ff0019166101001790555b61060a87610ea7565b61061386610ef8565b61061c85610f42565b610627848484610fad565b63ffffffff8481165f8181526067602090815260408083207f2eddfa6e51c2e0ba986436883fbc224e895ba21e8fc61421f6b10d11e25d008e908190557f10b2e5f6b212b2c1d8f17fc240726b9af6c45b2a8fff776e3ef5e5aff1c35965805460ff191660011790556068835281842080544390971663ffffffff19978816811790915584526069909252808320805490951684179094556065805462010000850265ffffffff00001990911617905592517f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d3699190a38015610742575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610753611029565b61075c81610f42565b50565b606061078a7f0000000000000000000000000000000000000000000000000000000000000000611083565b905090565b5f60028260028111156107a4576107a46116d5565b036107d057507f0000000000000000000000000000000000000000000000000000000000000000919050565b60018260028111156107e4576107e46116d5565b0361081057507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b610836611029565b61083f5f610ea7565b565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b90610890906066906004016116e9565b602060405180830381865afa1580156108ab573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078a9190611710565b6108d7611029565b61075c81610ef8565b5f5f5f5f6108ee86866110c0565b5f8e8152606a60205260409020549397509195509350915060ff166109265760405163504570e360e01b815260040160405180910390fd5b61092f8361078f565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161095a9190611420565b602060405180830381865afa158015610975573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109999190611710565b63ffffffff168b63ffffffff16116109c45760405163207617df60e01b815260040160405180910390fd5b6109e98b8b8b8b8b8b8b6040516109dc92919061172b565b6040518091039020611107565b60028360028111156109fd576109fd6116d5565b03610a8e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610a3c856111a8565b866040518563ffffffff1660e01b8152600401610a5c9493929190611774565b5f604051808303815f87803b158015610a73575f5ffd5b505af1158015610a85573d5f5f3e3d5ffd5b50505050610b01565b6001836002811115610aa257610aa26116d5565b03610810577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d610ae1856111ca565b866040518563ffffffff1660e01b8152600401610a5c94939291906117f0565b5050505050505050505050565b610b16611029565b5f818152606a602052604090205460ff16610b445760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b610bf3611029565b610bfe838383610fad565b505050565b428263ffffffff161115610c2a57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610c5c5760405163037fa86b60e31b815260040160405180910390fd5b610c67838383610b83565b846020013514610c8a57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610cc557610cc56118a9565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610d2a906066908a9087906004016119db565b6020604051808303815f875af1158015610d46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190611b68565b905080610d8a57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610e3d611029565b6001600160a01b038116610ea25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d7565b61075c815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610f058282611b87565b9050507f3463431b09dfd43dec7349f8f24acfa753fe4cf40a26235402d213373df1585681604051610f379190611c18565b60405180910390a150565b61271061ffff82161115610f69576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610f37565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b9061100090606690879087908790600401611c26565b5f604051808303815f87803b158015611017575f5ffd5b505af1158015610742573d5f5f3e3d5ffd5b6033546001600160a01b0316331461083f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d7565b60605f61108f836111e0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f808252602082018190529060606110f785870187611d79565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461113b5760405163639d09b560e11b815260040160405180910390fd5b61118383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff8816611207565b6111a05760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6111b06112b5565b818060200190518101906111c49190611eca565b92915050565b6060818060200190518101906111c49190611f79565b5f60ff8216601f8111156111c457604051632cd44ac360e21b815260040160405180910390fd5b5f8361121486858561121e565b1495945050505050565b5f6020845161122d919061207a565b1561124b576040516313717da960e21b815260040160405180910390fd5b8260205b855181116112ac5761126260028561207a565b5f0361128357815f528086015160205260405f20915060028404935061129a565b808601515f528160205260405f2091506002840493505b6112a5602082612099565b905061124f565b50949350505050565b60405180608001604052805f81526020015f81526020016112e760405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b038116811461075c575f5ffd5b5f60408284031215611318575f5ffd5b50919050565b803561ffff81168114610829575f5ffd5b63ffffffff8116811461075c575f5ffd5b5f60a08284031215611318575f5ffd5b5f5f5f5f5f5f6101008789031215611366575f5ffd5b8635611371816112f4565b95506113808860208901611308565b945061138e6060880161131e565b9350608087013561139e8161132f565b925060a08701356001600160401b038111156113b8575f5ffd5b6113c489828a01611340565b9250506113d48860c08901611308565b90509295509295509295565b5f602082840312156113f0575f5ffd5b81356113fb8161132f565b9392505050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016111c48284611402565b5f6020828403121561143e575f5ffd5b6113fb8261131e565b5f60208284031215611457575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b803560038110610829575f5ffd5b5f602082840312156114b1575f5ffd5b6113fb82611493565b5f604082840312156114ca575f5ffd5b6113fb8383611308565b5f5f83601f8401126114e4575f5ffd5b5081356001600160401b038111156114fa575f5ffd5b602083019150836020828501011115611511575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561152e575f5ffd5b87356115398161132f565b96506020880135955060408801356115508161132f565b945060608801356001600160401b0381111561156a575f5ffd5b6115768a828b016114d4565b90955093505060808801356001600160401b03811115611594575f5ffd5b6115a08a828b016114d4565b989b979a50959850939692959293505050565b5f5f5f606084860312156115c5575f5ffd5b8335925060208401356115d78161132f565b915060408401356115e78161132f565b809150509250925092565b5f5f5f60808486031215611604575f5ffd5b833561160f8161132f565b925060208401356001600160401b03811115611629575f5ffd5b61163586828701611340565b9250506116458560408601611308565b90509250925092565b5f5f5f5f60808587031215611661575f5ffd5b84356001600160401b03811115611676575f5ffd5b85016101208188031215611688575f5ffd5b935060208501359250604085013561169f8161132f565b915060608501356116af8161132f565b939692955090935050565b5f602082840312156116ca575f5ffd5b81356113fb816112f4565b634e487b7160e01b5f52602160045260245ffd5b604081016111c48284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f60208284031215611720575f5ffd5b81516113fb8161132f565b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561176a57815186526020958601959091019060010161174c565b5093949350505050565b61177e8186611402565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526117d761016084018261173a565b9150506117e76080830184611402565b95945050505050565b5f60c082016117ff8388611402565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156118805786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061186a9087018261173a565b955050602093840193919091019060010161182f565b50505050809150506117e76080830184611402565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126118d2575f5ffd5b83016020810192503590506001600160401b038111156118f0575f5ffd5b8060051b3603821315611511575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e1983360301811261193d575f5ffd5b90910192915050565b8183525f6001600160fb1b0383111561195d575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f61199260408301836118bd565b606060408601526117e7606086018284611946565b5f8151808452602084019350602083015f5b8281101561176a57815161ffff168652602095860195909101906001016119b9565b6119fe8185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a082018435611a168161132f565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c08601610140850137611a656101008601866118bd565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611b47578786036101bf19018352611aa48286611929565b8035611aaf8161132f565b63ffffffff168752602081013536829003601e19018112611ace575f5ffd5b81016020810190356001600160401b03811115611ae9575f5ffd5b803603821315611af7575f5ffd5b606060208a0152611b0c60608a018284611901565b915050611b1c6040830183611929565b91508781036040890152611b308183611976565b975050506020928301929190910190600101611a88565b50505050508281036060840152611b5e81856119a7565b9695505050505050565b5f60208284031215611b78575f5ffd5b815180151581146113fb575f5ffd5b8135611b92816112f4565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611bbe8161132f565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611bee816112f4565b6001600160a01b031682526020810135611c078161132f565b63ffffffff81166020840152505050565b604081016111c48284611be3565b611c498186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611c9760808501856118bd565b60a0610140850152611cae61016085018284611946565b925050506117e76080830184611be3565b604080519081016001600160401b0381118282101715611ce157611ce1611895565b60405290565b604051608081016001600160401b0381118282101715611ce157611ce1611895565b604051601f8201601f191681016001600160401b0381118282101715611d3157611d31611895565b604052919050565b5f60408284031215611d49575f5ffd5b611d51611cbf565b90508135611d5e816112f4565b81526020820135611d6e8161132f565b602082015292915050565b5f5f5f5f60c08587031215611d8c575f5ffd5b611d968686611d39565b9350611da460408601611493565b9250611db38660608701611d39565b915060a08501356001600160401b03811115611dcd575f5ffd5b8501601f81018713611ddd575f5ffd5b80356001600160401b03811115611df657611df6611895565b611e09601f8201601f1916602001611d09565b818152886020838501011115611e1d575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611e5657611e56611895565b5060051b60200190565b5f82601f830112611e6f575f5ffd5b8151611e82611e7d82611e3e565b611d09565b8082825260208201915060208360051b860101925085831115611ea3575f5ffd5b602085015b83811015611ec0578051835260209283019201611ea8565b5095945050505050565b5f60208284031215611eda575f5ffd5b81516001600160401b03811115611eef575f5ffd5b820180840360a0811215611f01575f5ffd5b611f09611ce7565b82518152602080840151908201526040603f1983011215611f28575f5ffd5b611f30611cbf565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611f5f575f5ffd5b611f6b86838501611e60565b606082015295945050505050565b5f60208284031215611f89575f5ffd5b81516001600160401b03811115611f9e575f5ffd5b8201601f81018413611fae575f5ffd5b8051611fbc611e7d82611e3e565b8082825260208201915060208360051b850101925086831115611fdd575f5ffd5b602084015b8381101561206f5780516001600160401b03811115611fff575f5ffd5b85016040818a03601f19011215612014575f5ffd5b61201c611cbf565b602082015161202a816112f4565b815260408201516001600160401b03811115612044575f5ffd5b6120538b602083860101611e60565b6020830152508085525050602083019250602081019050611fe2565b509695505050505050565b5f8261209457634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156111c457634e487b7160e01b5f52601160045260245ffdfea2646970667358221220ea2c67407757dee4681cee5e8e6770618e0b9b7b41b36edddd03d470cabbb9e664736f6c634300081b0033", } // OperatorTableUpdaterABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/OperatorTableUpdaterStorage/binding.go b/pkg/bindings/OperatorTableUpdaterStorage/binding.go index 3b619065d7..c15dd1ec4c 100644 --- a/pkg/bindings/OperatorTableUpdaterStorage/binding.go +++ b/pkg/bindings/OperatorTableUpdaterStorage/binding.go @@ -85,11 +85,7 @@ type OperatorSet struct { // OperatorTableUpdaterStorageMetaData contains all meta data concerning the OperatorTableUpdaterStorage contract. var OperatorTableUpdaterStorageMetaData = &bind.MetaData{ -<<<<<<< HEAD - ABI: "[{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INITIAL_GLOBAL_TABLE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalConfirmerSetReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", -======= - ABI: "[{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"GeneratorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"GeneratorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", ->>>>>>> 0591237e (chore: naming) + ABI: "[{\"type\":\"function\",\"name\":\"GLOBAL_TABLE_ROOT_CERT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INITIAL_GLOBAL_TABLE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGenerator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGeneratorReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableUpdateMessageHash\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceBlockNumberByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReferenceTimestampByBlockNumber\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValid\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRootValidByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGenerator\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"GeneratorInfo\",\"type\":\"tuple\",\"internalType\":\"structIOperatorTableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"GeneratorConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootDisabled\",\"inputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMessageHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", } // OperatorTableUpdaterStorageABI is the input ABI used to generate the binding from.