diff --git a/pkg/bindings/BN254CertificateVerifier/binding.go b/pkg/bindings/BN254CertificateVerifier/binding.go index 2783744b22..b703a58110 100644 --- a/pkg/bindings/BN254CertificateVerifier/binding.go +++ b/pkg/bindings/BN254CertificateVerifier/binding.go @@ -54,29 +54,29 @@ type IBN254CertificateVerifierTypesBN254Certificate struct { type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { OperatorIndex uint32 OperatorInfoProof []byte - OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo + OperatorInfo IOperatorTableCalculatorTypesBN254OperatorInfo } -// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorInfo struct { +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// IOperatorTableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorInfo struct { Pubkey BN254G1Point Weights []*big.Int } -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { +// IOperatorTableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorSetInfo struct { OperatorInfoTreeRoot [32]byte NumOperators *big.Int AggregatePubkey BN254G1Point TotalWeights []*big.Int } -// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. -type ICrossChainRegistryTypesOperatorSetConfig struct { - Owner common.Address - MaxStalenessPeriod uint32 -} - // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -85,8 +85,8 @@ 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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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: "0x60c060405234801561000f575f5ffd5b50604051612a06380380612a0683398101604081905261002e9161016a565b6001600160a01b0382166080528061004581610058565b60a0525061005161009e565b5050610294565b5f5f829050601f8151111561008b578260405163305a27a960e01b81526004016100829190610239565b60405180910390fd5b80516100968261026e565b179392505050565b5f54610100900460ff16156101055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610082565b5f5460ff90811614610154575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017b575f5ffd5b82516001600160a01b0381168114610191575f5ffd5b60208401519092506001600160401b038111156101ac575f5ffd5b8301601f810185136101bc575f5ffd5b80516001600160401b038111156101d5576101d5610156565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020357610203610156565b60405281815282820160200187101561021a575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561028e575f198160200360031b1b821691505b50919050565b60805160a0516127436102c35f395f6104e401525f81816101de0152818161062f0152610d0201526127435ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635ddb9b5b1161008857806368d6e0811161006357806368d6e081146101d95780638481892014610218578063dd2ae1b91461022b578063eb39e68f1461023e575f5ffd5b80635ddb9b5b146101895780636141879e146101b15780636738c40b146101c4575f5ffd5b8063017d7974146100cf578063080b7150146100f75780631a18746c1461011757806326af6a3c1461014157806354fd4d50146101615780635be8727414610176575b5f5ffd5b6100e26100dd366004612103565b61025e565b60405190151581526020015b60405180910390f35b61010a6101053660046121de565b6103ef565b6040516100ee9190612229565b61012a610125366004612260565b610404565b6040805192151583529015156020830152016100ee565b61015461014f3660046122ae565b610425565b6040516100ee9190612323565b6101696104dd565b6040516100ee9190612358565b6100e26101843660046122ae565b61050d565b61019c61019736600461238d565b6105d8565b60405163ffffffff90911681526020016100ee565b61019c6101bf36600461238d565b6105fe565b6101d76101d23660046123bd565b610624565b005b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ee565b61020061022636600461238d565b6107f1565b6100e2610239366004612476565b61081a565b61025161024c3660046124e9565b6108ad565b6040516100ee9190612560565b5f5f61026a8585610972565b90505f61027686610b32565b5f8181526004602081815260408084208a5163ffffffff16855282528084208151608081018352815481526001820154818501528251808401845260028301548152600383015481860152818401529381018054835181860281018601909452808452969750949593949093606086019383018282801561031457602002820191905f5260205f20905b815481526020019060010190808311610300575b50505050508152505090505f8160600151905085518451146103495760405163512509d360e11b815260040160405180910390fd5b5f5b84518110156103de575f61271088838151811061036a5761036a612572565b602002602001015161ffff1684848151811061038857610388612572565b602002602001015161039a919061259a565b6103a491906125c5565b9050808683815181106103b9576103b9612572565b602002602001015110156103d5575f96505050505050506103e8565b5060010161034b565b5060019450505050505b9392505050565b60606103fb8383610972565b90505b92915050565b5f5f61041886848787600162061a80610b95565b9150915094509492505050565b61042d611a9c565b5f61043785610b32565b5f81815260056020908152604080832063ffffffff8916845282528083208784528252918290208251608081018452815481850190815260018301546060830152815260028201805485518186028101860190965280865295965090949193858401939092908301828280156104ca57602002820191905f5260205f20905b8154815260200190600101908083116104b6575b5050505050815250509150509392505050565b60606105087f0000000000000000000000000000000000000000000000000000000000000000610c5d565b905090565b5f5f61051885610b32565b5f81815260056020908152604080832063ffffffff891684528252808320878452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552969750949590949193858101939291908301828280156105ac57602002820191905f5260205f20905b815481526020019060010190808311610598575b50505091909252505081515191925050158015906105ce575080516020015115155b9695505050505050565b5f5f6105e383610b32565b5f9081526003602052604090205463ffffffff169392505050565b5f5f61060983610b32565b5f9081526002602052604090205463ffffffff169392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461066d5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106856106803687900387018761238d565b610b32565b5f8181526003602052604090205490915063ffffffff908116908516116106bf57604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020818152604080842063ffffffff8916855282529283902086518155818701516001820155928601518051600285015581015160038401556060860151805187949361071793908501920190611ac6565b5050505f818152600360209081526040909120805463ffffffff191663ffffffff8716179055610749908301836125d8565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b039490941693909317909255610788919084019084016125f1565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e906107e29087908790879061260a565b60405180910390a15050505050565b5f5f6107fc83610b32565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f6108268585610972565b9050825181511461084a5760405163512509d360e11b815260040160405180910390fd5b5f5b81518110156108a15783818151811061086757610867612572565b602002602001015182828151811061088157610881612572565b60200260200101511015610899575f925050506103e8565b60010161084c565b50600195945050505050565b6108b5611b0f565b5f6108bf84610b32565b5f81815260046020818152604080842063ffffffff891685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652959650929490936060860193909290919083018282801561096057602002820191905f5260205f20905b81548152602001906001019080831161094c575b50505050508152505091505092915050565b606061097c611b41565b61098584610b32565b80825283516109949190610c9a565b80515f908152600460208181526040808420875163ffffffff1685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652939491936060860193830182828015610a3057602002820191905f5260205f20905b815481526020019060010190808311610a1c575b505050919092525050506020820181905251610a5f57604051630cad17b760e31b815260040160405180910390fd5b806020015160600151516001600160401b03811115610a8057610a80611c6f565b604051908082528060200260200182016040528015610aa9578160200160208202803683370190505b5060408201525f5b81602001516060015151811015610b0d578160200151606001518181518110610adc57610adc612572565b602002602001015182604001518281518110610afa57610afa612572565b6020908102919091010152600101610ab1565b50610b188184610d95565b6060820152610b278184610ebf565b604001519392505050565b5f815f0151826020015163ffffffff16604051602001610b7d92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526103fe90612656565b5f5f5f610ba189610f2d565b90505f610bb08a89898c610fb7565b90505f610bc7610bc08a8461106b565b8b906110db565b90505f610c09610c0284610bfc6040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061106b565b85906110db565b90508715610c2e57610c2582610c1d61114f565b838c8b61120f565b96509450610c4e565b610c4182610c3a61114f565b838c611423565b95508515610c4e57600194505b50505050965096945050505050565b60605f610c698361165a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8281526002602052604090205463ffffffff16801580610cca5750610cc08183612679565b63ffffffff164211155b610ce75760405163640fcd6b60e11b815260040160405180910390fd5b60405163193877e160e21b815263ffffffff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906364e1df8490602401602060405180830381865afa158015610d4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d739190612695565b610d9057604051631b14174b60e01b815260040160405180910390fd5b505050565b6040805180820182525f808252602091820181905282518084019093528083529082018190525b826080015151811015610eb8575f83608001518281518110610de057610de0612572565b60200260200101519050846020015160200151815f015163ffffffff1610610e1b576040516301fa53c760e11b815260040160405180910390fd5b845184515f91610e2b9184611681565b8051909150610e3b9085906110db565b93505f5b816020015151811015610ead57866040015151811015610ea55781602001518181518110610e6f57610e6f612572565b602002602001015187604001518281518110610e8d57610e8d612572565b60200260200101818151610ea191906126b4565b9052505b600101610e3f565b505050600101610dbc565b5092915050565b5f610edf610ed084606001516117f8565b602085015160400151906110db565b90505f5f610efb84602001518486606001518760400151610404565b91509150818015610f095750805b610f265760405163439cc0cd60e01b815260040160405180910390fd5b5050505050565b604080518082019091525f80825260208201525f8080610f5a5f5160206126ee5f395f51905f52866126c7565b90505b610f668161188e565b90935091505f5160206126ee5f395f51905f528283098303610f9e576040805180820190915290815260208101919091529392505050565b5f5160206126ee5f395f51905f52600182089050610f5d565b8251602080850151845180519083015186840151805190850151875188870151604080519889018e90528801989098526060870195909552608086019390935260a085019190915260c084015260e08301526101008201526101208101919091525f907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019061014001604051602081830303815290604052805190602001205f1c61106291906126c7565b95945050505050565b604080518082019091525f8082526020820152611086611b86565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806110b457fe5b50806110d357604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526110f6611ba4565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061113057fe5b50806110d35760405163d4b68fd760e01b815260040160405180910390fd5b611157611bc2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190611240611be2565b5f5b60028110156113f7575f61125782600661259a565b905084826002811061126b5761126b612572565b6020020151518361127c835f6126da565b600c811061128c5761128c612572565b60200201528482600281106112a3576112a3612572565b602002015160200151838260016112ba91906126da565b600c81106112ca576112ca612572565b60200201528382600281106112e1576112e1612572565b60200201515151836112f48360026126da565b600c811061130457611304612572565b602002015283826002811061131b5761131b612572565b60200201515160016020020151836113348360036126da565b600c811061134457611344612572565b602002015283826002811061135b5761135b612572565b6020020151602001515f6002811061137557611375612572565b6020020151836113868360046126da565b600c811061139657611396612572565b60200201528382600281106113ad576113ad612572565b6020020151602001516001600281106113c8576113c8612572565b6020020151836113d98360056126da565b600c81106113e9576113e9612572565b602002015250600101611242565b50611400611c01565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6040805180820182528581526020808201859052825180840190935285835282018390525f91611451611be2565b5f5b6002811015611608575f61146882600661259a565b905084826002811061147c5761147c612572565b6020020151518361148d835f6126da565b600c811061149d5761149d612572565b60200201528482600281106114b4576114b4612572565b602002015160200151838260016114cb91906126da565b600c81106114db576114db612572565b60200201528382600281106114f2576114f2612572565b60200201515151836115058360026126da565b600c811061151557611515612572565b602002015283826002811061152c5761152c612572565b60200201515160016020020151836115458360036126da565b600c811061155557611555612572565b602002015283826002811061156c5761156c612572565b6020020151602001515f6002811061158657611586612572565b6020020151836115978360046126da565b600c81106115a7576115a7612572565b60200201528382600281106115be576115be612572565b6020020151602001516001600281106115d9576115d9612572565b6020020151836115ea8360056126da565b600c81106115fa576115fa612572565b602002015250600101611453565b50611611611c01565b5f6020826101808560086107d05a03fa9050808061162b57fe5b508061164a576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b5f60ff8216601f8111156103fe57604051632cd44ac360e21b815260040160405180910390fd5b611689611a9c565b5f84815260056020908152604080832063ffffffff808816855290835281842086519091168452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552919492938584019390929083018282801561171e57602002820191905f5260205f20905b81548152602001906001019080831161170a575b5050509190925250508151519192505f911515905080611742575081516020015115155b9050806117eb575f6117628787875f01518860400151896020015161190a565b9050806117825760405163439cc0cd60e01b815260040160405180910390fd5b6040808601515f8981526005602090815283822063ffffffff808c1684529082528483208a51909116835281529290208151805182558301516001820155828201518051929391926117da9260028501920190611ac6565b5090505084604001519350506117ef565b8192505b50509392505050565b604080518082019091525f8082526020820152815115801561181c57506020820151155b15611839575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206126ee5f395f51905f52846020015161186a91906126c7565b611881905f5160206126ee5f395f51905f526126b4565b905292915050565b919050565b5f80805f5160206126ee5f395f51905f5260035f5160206126ee5f395f51905f52865f5160206126ee5f395f51905f52888909090890505f6118fe827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206126ee5f395f51905f52611975565b91959194509092505050565b5f5f8360405160200161191d9190612323565b60408051601f1981840301815291815281516020928301205f8a81526004845282812063ffffffff808c1683529452919091205490925090611969908590839085908a8116906119ee16565b98975050505050505050565b5f5f61197f611c01565b611987611c1f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806119c457fe5b50826119e35760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b5f836119fb868585611a05565b1495945050505050565b5f60208451611a1491906126c7565b15611a32576040516313717da960e21b815260040160405180910390fd5b8260205b85518111611a9357611a496002856126c7565b5f03611a6a57815f528086015160205260405f209150600284049350611a81565b808601515f528160205260405f2091506002840493505b611a8c6020826126da565b9050611a36565b50949350505050565b604080516080810182525f91810182815260608201929092529081905b8152602001606081525090565b828054828255905f5260205f20908101928215611aff579160200282015b82811115611aff578251825591602001919060010190611ae4565b50611b0b929150611c3d565b5090565b60405180608001604052805f81526020015f8152602001611ab960405180604001604052805f81526020015f81525090565b60405180608001604052805f8152602001611b5a611b0f565b815260200160608152602001611b8160405180604001604052805f81526020015f81525090565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611bd5611c51565b8152602001611b81611c51565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b80821115611b0b575f8155600101611c3e565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715611ca557611ca5611c6f565b60405290565b60405160a081016001600160401b0381118282101715611ca557611ca5611c6f565b604051606081016001600160401b0381118282101715611ca557611ca5611c6f565b604051608081016001600160401b0381118282101715611ca557611ca5611c6f565b604051601f8201601f191681016001600160401b0381118282101715611d3957611d39611c6f565b604052919050565b80356001600160a01b0381168114611889575f5ffd5b803563ffffffff81168114611889575f5ffd5b5f60408284031215611d7a575f5ffd5b611d82611c83565b9050611d8d82611d41565b8152611d9b60208301611d57565b602082015292915050565b5f60408284031215611db6575f5ffd5b611dbe611c83565b823581526020928301359281019290925250919050565b5f82601f830112611de4575f5ffd5b611dec611c83565b806040840185811115611dfd575f5ffd5b845b81811015611e17578035845260209384019301611dff565b509095945050505050565b5f60808284031215611e32575f5ffd5b611e3a611c83565b9050611e468383611dd5565b8152611d9b8360408401611dd5565b5f6001600160401b03821115611e6d57611e6d611c6f565b5060051b60200190565b5f82601f830112611e86575f5ffd5b8135611e99611e9482611e55565b611d11565b8082825260208201915060208360051b860101925085831115611eba575f5ffd5b602085015b83811015611ed7578035835260209283019201611ebf565b5095945050505050565b5f60608284031215611ef1575f5ffd5b611ef9611c83565b9050611f058383611da6565b815260408201356001600160401b03811115611f1f575f5ffd5b611f2b84828501611e77565b60208301525092915050565b5f6101208284031215611f48575f5ffd5b611f50611cab565b9050611f5b82611d57565b815260208281013590820152611f748360408401611da6565b6040820152611f868360808401611e22565b60608201526101008201356001600160401b03811115611fa4575f5ffd5b8201601f81018413611fb4575f5ffd5b8035611fc2611e9482611e55565b8082825260208201915060208360051b850101925086831115611fe3575f5ffd5b602084015b838110156120f35780356001600160401b03811115612005575f5ffd5b85016060818a03601f1901121561201a575f5ffd5b612022611ccd565b61202e60208301611d57565b815260408201356001600160401b03811115612048575f5ffd5b82016020810190603f018b1361205c575f5ffd5b80356001600160401b0381111561207557612075611c6f565b612088601f8201601f1916602001611d11565b8181528c602083850101111561209c575f5ffd5b816020840160208301375f6020838301015280602085015250505060608201356001600160401b038111156120cf575f5ffd5b6120de8b602083860101611ee1565b60408301525084525060209283019201611fe8565b5060808501525091949350505050565b5f5f5f60808486031215612115575f5ffd5b61211f8585611d6a565b925060408401356001600160401b03811115612139575f5ffd5b61214586828701611f37565b92505060608401356001600160401b03811115612160575f5ffd5b8401601f81018613612170575f5ffd5b803561217e611e9482611e55565b8082825260208201915060208360051b85010192508883111561219f575f5ffd5b6020840193505b828410156121d057833561ffff811681146121bf575f5ffd5b8252602093840193909101906121a6565b809450505050509250925092565b5f5f606083850312156121ef575f5ffd5b6121f98484611d6a565b915060408301356001600160401b03811115612213575f5ffd5b61221f85828601611f37565b9150509250929050565b602080825282518282018190525f918401906040840190835b81811015611e17578351835260209384019390920191600101612242565b5f5f5f5f6101208587031215612274575f5ffd5b843593506122858660208701611da6565b92506122948660608701611e22565b91506122a38660e08701611da6565b905092959194509250565b5f5f5f608084860312156122c0575f5ffd5b6122ca8585611d6a565b92506122d860408501611d57565b929592945050506060919091013590565b5f8151808452602084019350602083015f5b828110156123195781518652602095860195909101906001016122fb565b5093949350505050565b60208082528251805183830152015160408201525f602083015160608084015261235060808401826122e9565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6040828403121561239d575f5ffd5b6103fb8383611d6a565b5f604082840312156123b7575f5ffd5b50919050565b5f5f5f5f60c085870312156123d0575f5ffd5b6123da86866123a7565b93506123e860408601611d57565b925060608501356001600160401b03811115612402575f5ffd5b850160a08188031215612413575f5ffd5b61241b611cef565b81358152602080830135908201526124368860408401611da6565b604082015260808201356001600160401b03811115612453575f5ffd5b61245f89828501611e77565b60608301525092506122a3905086608087016123a7565b5f5f5f60808486031215612488575f5ffd5b6124928585611d6a565b925060408401356001600160401b038111156124ac575f5ffd5b6124b886828701611f37565b92505060608401356001600160401b038111156124d3575f5ffd5b6124df86828701611e77565b9150509250925092565b5f5f606083850312156124fa575f5ffd5b6125048484611d6a565b915061251260408401611d57565b90509250929050565b80518252602081015160208301525f6040820151612546604085018280518252602090810151910152565b50606082015160a0608085015261235060a08501826122e9565b602081525f6103fb602083018461251b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103fe576103fe612586565b634e487b7160e01b5f52601260045260245ffd5b5f826125d3576125d36125b1565b500490565b5f602082840312156125e8575f5ffd5b6103fb82611d41565b5f60208284031215612601575f5ffd5b6103fb82611d57565b6001600160a01b0361261b85611d41565b16815263ffffffff61262f60208601611d57565b16602082015263ffffffff83166040820152608060608201525f611062608083018461251b565b805160208083015191908110156123b7575f1960209190910360031b1b16919050565b63ffffffff81811683821601908111156103fe576103fe612586565b5f602082840312156126a5575f5ffd5b815180151581146103e8575f5ffd5b818103818111156103fe576103fe612586565b5f826126d5576126d56125b1565b500690565b808201808211156103fe576103fe61258656fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220aa54c3db3f2e7b75597ed6cecc914ca50302d4326ebc45d8a960449087a1d56b64736f6c634300081b0033", + 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: "0x60c060405234801561000f575f5ffd5b50604051612a06380380612a0683398101604081905261002e9161016a565b6001600160a01b0382166080528061004581610058565b60a0525061005161009e565b5050610294565b5f5f829050601f8151111561008b578260405163305a27a960e01b81526004016100829190610239565b60405180910390fd5b80516100968261026e565b179392505050565b5f54610100900460ff16156101055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610082565b5f5460ff90811614610154575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017b575f5ffd5b82516001600160a01b0381168114610191575f5ffd5b60208401519092506001600160401b038111156101ac575f5ffd5b8301601f810185136101bc575f5ffd5b80516001600160401b038111156101d5576101d5610156565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020357610203610156565b60405281815282820160200187101561021a575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561028e575f198160200360031b1b821691505b50919050565b60805160a0516127436102c35f395f6104e401525f81816101de0152818161062f0152610d0201526127435ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635ddb9b5b1161008857806368d6e0811161006357806368d6e081146101d95780638481892014610218578063dd2ae1b91461022b578063eb39e68f1461023e575f5ffd5b80635ddb9b5b146101895780636141879e146101b15780636738c40b146101c4575f5ffd5b8063017d7974146100cf578063080b7150146100f75780631a18746c1461011757806326af6a3c1461014157806354fd4d50146101615780635be8727414610176575b5f5ffd5b6100e26100dd366004612103565b61025e565b60405190151581526020015b60405180910390f35b61010a6101053660046121de565b6103ef565b6040516100ee9190612229565b61012a610125366004612260565b610404565b6040805192151583529015156020830152016100ee565b61015461014f3660046122ae565b610425565b6040516100ee9190612323565b6101696104dd565b6040516100ee9190612358565b6100e26101843660046122ae565b61050d565b61019c61019736600461238d565b6105d8565b60405163ffffffff90911681526020016100ee565b61019c6101bf36600461238d565b6105fe565b6101d76101d23660046123bd565b610624565b005b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ee565b61020061022636600461238d565b6107f1565b6100e2610239366004612476565b61081a565b61025161024c3660046124e9565b6108ad565b6040516100ee9190612560565b5f5f61026a8585610972565b90505f61027686610b32565b5f8181526004602081815260408084208a5163ffffffff16855282528084208151608081018352815481526001820154818501528251808401845260028301548152600383015481860152818401529381018054835181860281018601909452808452969750949593949093606086019383018282801561031457602002820191905f5260205f20905b815481526020019060010190808311610300575b50505050508152505090505f8160600151905085518451146103495760405163512509d360e11b815260040160405180910390fd5b5f5b84518110156103de575f61271088838151811061036a5761036a612572565b602002602001015161ffff1684848151811061038857610388612572565b602002602001015161039a919061259a565b6103a491906125c5565b9050808683815181106103b9576103b9612572565b602002602001015110156103d5575f96505050505050506103e8565b5060010161034b565b5060019450505050505b9392505050565b60606103fb8383610972565b90505b92915050565b5f5f61041886848787600162061a80610b95565b9150915094509492505050565b61042d611a9c565b5f61043785610b32565b5f81815260056020908152604080832063ffffffff8916845282528083208784528252918290208251608081018452815481850190815260018301546060830152815260028201805485518186028101860190965280865295965090949193858401939092908301828280156104ca57602002820191905f5260205f20905b8154815260200190600101908083116104b6575b5050505050815250509150509392505050565b60606105087f0000000000000000000000000000000000000000000000000000000000000000610c5d565b905090565b5f5f61051885610b32565b5f81815260056020908152604080832063ffffffff891684528252808320878452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552969750949590949193858101939291908301828280156105ac57602002820191905f5260205f20905b815481526020019060010190808311610598575b50505091909252505081515191925050158015906105ce575080516020015115155b9695505050505050565b5f5f6105e383610b32565b5f9081526003602052604090205463ffffffff169392505050565b5f5f61060983610b32565b5f9081526002602052604090205463ffffffff169392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461066d5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106856106803687900387018761238d565b610b32565b5f8181526003602052604090205490915063ffffffff908116908516116106bf57604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020818152604080842063ffffffff8916855282529283902086518155818701516001820155928601518051600285015581015160038401556060860151805187949361071793908501920190611ac6565b5050505f818152600360209081526040909120805463ffffffff191663ffffffff8716179055610749908301836125d8565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b039490941693909317909255610788919084019084016125f1565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e906107e29087908790879061260a565b60405180910390a15050505050565b5f5f6107fc83610b32565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f6108268585610972565b9050825181511461084a5760405163512509d360e11b815260040160405180910390fd5b5f5b81518110156108a15783818151811061086757610867612572565b602002602001015182828151811061088157610881612572565b60200260200101511015610899575f925050506103e8565b60010161084c565b50600195945050505050565b6108b5611b0f565b5f6108bf84610b32565b5f81815260046020818152604080842063ffffffff891685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652959650929490936060860193909290919083018282801561096057602002820191905f5260205f20905b81548152602001906001019080831161094c575b50505050508152505091505092915050565b606061097c611b41565b61098584610b32565b80825283516109949190610c9a565b80515f908152600460208181526040808420875163ffffffff1685528252928390208351608081018552815481526001820154818401528451808601865260028301548152600383015481850152818601529281018054855181850281018501909652808652939491936060860193830182828015610a3057602002820191905f5260205f20905b815481526020019060010190808311610a1c575b505050919092525050506020820181905251610a5f57604051630cad17b760e31b815260040160405180910390fd5b806020015160600151516001600160401b03811115610a8057610a80611c6f565b604051908082528060200260200182016040528015610aa9578160200160208202803683370190505b5060408201525f5b81602001516060015151811015610b0d578160200151606001518181518110610adc57610adc612572565b602002602001015182604001518281518110610afa57610afa612572565b6020908102919091010152600101610ab1565b50610b188184610d95565b6060820152610b278184610ebf565b604001519392505050565b5f815f0151826020015163ffffffff16604051602001610b7d92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526103fe90612656565b5f5f5f610ba189610f2d565b90505f610bb08a89898c610fb7565b90505f610bc7610bc08a8461106b565b8b906110db565b90505f610c09610c0284610bfc6040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061106b565b85906110db565b90508715610c2e57610c2582610c1d61114f565b838c8b61120f565b96509450610c4e565b610c4182610c3a61114f565b838c611423565b95508515610c4e57600194505b50505050965096945050505050565b60605f610c698361165a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8281526002602052604090205463ffffffff16801580610cca5750610cc08183612679565b63ffffffff164211155b610ce75760405163640fcd6b60e11b815260040160405180910390fd5b60405163193877e160e21b815263ffffffff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906364e1df8490602401602060405180830381865afa158015610d4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d739190612695565b610d9057604051631b14174b60e01b815260040160405180910390fd5b505050565b6040805180820182525f808252602091820181905282518084019093528083529082018190525b826080015151811015610eb8575f83608001518281518110610de057610de0612572565b60200260200101519050846020015160200151815f015163ffffffff1610610e1b576040516301fa53c760e11b815260040160405180910390fd5b845184515f91610e2b9184611681565b8051909150610e3b9085906110db565b93505f5b816020015151811015610ead57866040015151811015610ea55781602001518181518110610e6f57610e6f612572565b602002602001015187604001518281518110610e8d57610e8d612572565b60200260200101818151610ea191906126b4565b9052505b600101610e3f565b505050600101610dbc565b5092915050565b5f610edf610ed084606001516117f8565b602085015160400151906110db565b90505f5f610efb84602001518486606001518760400151610404565b91509150818015610f095750805b610f265760405163439cc0cd60e01b815260040160405180910390fd5b5050505050565b604080518082019091525f80825260208201525f8080610f5a5f5160206126ee5f395f51905f52866126c7565b90505b610f668161188e565b90935091505f5160206126ee5f395f51905f528283098303610f9e576040805180820190915290815260208101919091529392505050565b5f5160206126ee5f395f51905f52600182089050610f5d565b8251602080850151845180519083015186840151805190850151875188870151604080519889018e90528801989098526060870195909552608086019390935260a085019190915260c084015260e08301526101008201526101208101919091525f907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019061014001604051602081830303815290604052805190602001205f1c61106291906126c7565b95945050505050565b604080518082019091525f8082526020820152611086611b86565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806110b457fe5b50806110d357604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526110f6611ba4565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061113057fe5b50806110d35760405163d4b68fd760e01b815260040160405180910390fd5b611157611bc2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190611240611be2565b5f5b60028110156113f7575f61125782600661259a565b905084826002811061126b5761126b612572565b6020020151518361127c835f6126da565b600c811061128c5761128c612572565b60200201528482600281106112a3576112a3612572565b602002015160200151838260016112ba91906126da565b600c81106112ca576112ca612572565b60200201528382600281106112e1576112e1612572565b60200201515151836112f48360026126da565b600c811061130457611304612572565b602002015283826002811061131b5761131b612572565b60200201515160016020020151836113348360036126da565b600c811061134457611344612572565b602002015283826002811061135b5761135b612572565b6020020151602001515f6002811061137557611375612572565b6020020151836113868360046126da565b600c811061139657611396612572565b60200201528382600281106113ad576113ad612572565b6020020151602001516001600281106113c8576113c8612572565b6020020151836113d98360056126da565b600c81106113e9576113e9612572565b602002015250600101611242565b50611400611c01565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6040805180820182528581526020808201859052825180840190935285835282018390525f91611451611be2565b5f5b6002811015611608575f61146882600661259a565b905084826002811061147c5761147c612572565b6020020151518361148d835f6126da565b600c811061149d5761149d612572565b60200201528482600281106114b4576114b4612572565b602002015160200151838260016114cb91906126da565b600c81106114db576114db612572565b60200201528382600281106114f2576114f2612572565b60200201515151836115058360026126da565b600c811061151557611515612572565b602002015283826002811061152c5761152c612572565b60200201515160016020020151836115458360036126da565b600c811061155557611555612572565b602002015283826002811061156c5761156c612572565b6020020151602001515f6002811061158657611586612572565b6020020151836115978360046126da565b600c81106115a7576115a7612572565b60200201528382600281106115be576115be612572565b6020020151602001516001600281106115d9576115d9612572565b6020020151836115ea8360056126da565b600c81106115fa576115fa612572565b602002015250600101611453565b50611611611c01565b5f6020826101808560086107d05a03fa9050808061162b57fe5b508061164a576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b5f60ff8216601f8111156103fe57604051632cd44ac360e21b815260040160405180910390fd5b611689611a9c565b5f84815260056020908152604080832063ffffffff808816855290835281842086519091168452825280832081516080810183528154818401908152600183015460608301528152600282018054845181870281018701909552808552919492938584019390929083018282801561171e57602002820191905f5260205f20905b81548152602001906001019080831161170a575b5050509190925250508151519192505f911515905080611742575081516020015115155b9050806117eb575f6117628787875f01518860400151896020015161190a565b9050806117825760405163439cc0cd60e01b815260040160405180910390fd5b6040808601515f8981526005602090815283822063ffffffff808c1684529082528483208a51909116835281529290208151805182558301516001820155828201518051929391926117da9260028501920190611ac6565b5090505084604001519350506117ef565b8192505b50509392505050565b604080518082019091525f8082526020820152815115801561181c57506020820151155b15611839575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206126ee5f395f51905f52846020015161186a91906126c7565b611881905f5160206126ee5f395f51905f526126b4565b905292915050565b919050565b5f80805f5160206126ee5f395f51905f5260035f5160206126ee5f395f51905f52865f5160206126ee5f395f51905f52888909090890505f6118fe827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206126ee5f395f51905f52611975565b91959194509092505050565b5f5f8360405160200161191d9190612323565b60408051601f1981840301815291815281516020928301205f8a81526004845282812063ffffffff808c1683529452919091205490925090611969908590839085908a8116906119ee16565b98975050505050505050565b5f5f61197f611c01565b611987611c1f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806119c457fe5b50826119e35760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b5f836119fb868585611a05565b1495945050505050565b5f60208451611a1491906126c7565b15611a32576040516313717da960e21b815260040160405180910390fd5b8260205b85518111611a9357611a496002856126c7565b5f03611a6a57815f528086015160205260405f209150600284049350611a81565b808601515f528160205260405f2091506002840493505b611a8c6020826126da565b9050611a36565b50949350505050565b604080516080810182525f91810182815260608201929092529081905b8152602001606081525090565b828054828255905f5260205f20908101928215611aff579160200282015b82811115611aff578251825591602001919060010190611ae4565b50611b0b929150611c3d565b5090565b60405180608001604052805f81526020015f8152602001611ab960405180604001604052805f81526020015f81525090565b60405180608001604052805f8152602001611b5a611b0f565b815260200160608152602001611b8160405180604001604052805f81526020015f81525090565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611bd5611c51565b8152602001611b81611c51565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b80821115611b0b575f8155600101611c3e565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715611ca557611ca5611c6f565b60405290565b60405160a081016001600160401b0381118282101715611ca557611ca5611c6f565b604051606081016001600160401b0381118282101715611ca557611ca5611c6f565b604051608081016001600160401b0381118282101715611ca557611ca5611c6f565b604051601f8201601f191681016001600160401b0381118282101715611d3957611d39611c6f565b604052919050565b80356001600160a01b0381168114611889575f5ffd5b803563ffffffff81168114611889575f5ffd5b5f60408284031215611d7a575f5ffd5b611d82611c83565b9050611d8d82611d41565b8152611d9b60208301611d57565b602082015292915050565b5f60408284031215611db6575f5ffd5b611dbe611c83565b823581526020928301359281019290925250919050565b5f82601f830112611de4575f5ffd5b611dec611c83565b806040840185811115611dfd575f5ffd5b845b81811015611e17578035845260209384019301611dff565b509095945050505050565b5f60808284031215611e32575f5ffd5b611e3a611c83565b9050611e468383611dd5565b8152611d9b8360408401611dd5565b5f6001600160401b03821115611e6d57611e6d611c6f565b5060051b60200190565b5f82601f830112611e86575f5ffd5b8135611e99611e9482611e55565b611d11565b8082825260208201915060208360051b860101925085831115611eba575f5ffd5b602085015b83811015611ed7578035835260209283019201611ebf565b5095945050505050565b5f60608284031215611ef1575f5ffd5b611ef9611c83565b9050611f058383611da6565b815260408201356001600160401b03811115611f1f575f5ffd5b611f2b84828501611e77565b60208301525092915050565b5f6101208284031215611f48575f5ffd5b611f50611cab565b9050611f5b82611d57565b815260208281013590820152611f748360408401611da6565b6040820152611f868360808401611e22565b60608201526101008201356001600160401b03811115611fa4575f5ffd5b8201601f81018413611fb4575f5ffd5b8035611fc2611e9482611e55565b8082825260208201915060208360051b850101925086831115611fe3575f5ffd5b602084015b838110156120f35780356001600160401b03811115612005575f5ffd5b85016060818a03601f1901121561201a575f5ffd5b612022611ccd565b61202e60208301611d57565b815260408201356001600160401b03811115612048575f5ffd5b82016020810190603f018b1361205c575f5ffd5b80356001600160401b0381111561207557612075611c6f565b612088601f8201601f1916602001611d11565b8181528c602083850101111561209c575f5ffd5b816020840160208301375f6020838301015280602085015250505060608201356001600160401b038111156120cf575f5ffd5b6120de8b602083860101611ee1565b60408301525084525060209283019201611fe8565b5060808501525091949350505050565b5f5f5f60808486031215612115575f5ffd5b61211f8585611d6a565b925060408401356001600160401b03811115612139575f5ffd5b61214586828701611f37565b92505060608401356001600160401b03811115612160575f5ffd5b8401601f81018613612170575f5ffd5b803561217e611e9482611e55565b8082825260208201915060208360051b85010192508883111561219f575f5ffd5b6020840193505b828410156121d057833561ffff811681146121bf575f5ffd5b8252602093840193909101906121a6565b809450505050509250925092565b5f5f606083850312156121ef575f5ffd5b6121f98484611d6a565b915060408301356001600160401b03811115612213575f5ffd5b61221f85828601611f37565b9150509250929050565b602080825282518282018190525f918401906040840190835b81811015611e17578351835260209384019390920191600101612242565b5f5f5f5f6101208587031215612274575f5ffd5b843593506122858660208701611da6565b92506122948660608701611e22565b91506122a38660e08701611da6565b905092959194509250565b5f5f5f608084860312156122c0575f5ffd5b6122ca8585611d6a565b92506122d860408501611d57565b929592945050506060919091013590565b5f8151808452602084019350602083015f5b828110156123195781518652602095860195909101906001016122fb565b5093949350505050565b60208082528251805183830152015160408201525f602083015160608084015261235060808401826122e9565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6040828403121561239d575f5ffd5b6103fb8383611d6a565b5f604082840312156123b7575f5ffd5b50919050565b5f5f5f5f60c085870312156123d0575f5ffd5b6123da86866123a7565b93506123e860408601611d57565b925060608501356001600160401b03811115612402575f5ffd5b850160a08188031215612413575f5ffd5b61241b611cef565b81358152602080830135908201526124368860408401611da6565b604082015260808201356001600160401b03811115612453575f5ffd5b61245f89828501611e77565b60608301525092506122a3905086608087016123a7565b5f5f5f60808486031215612488575f5ffd5b6124928585611d6a565b925060408401356001600160401b038111156124ac575f5ffd5b6124b886828701611f37565b92505060608401356001600160401b038111156124d3575f5ffd5b6124df86828701611e77565b9150509250925092565b5f5f606083850312156124fa575f5ffd5b6125048484611d6a565b915061251260408401611d57565b90509250929050565b80518252602081015160208301525f6040820151612546604085018280518252602090810151910152565b50606082015160a0608085015261235060a08501826122e9565b602081525f6103fb602083018461251b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103fe576103fe612586565b634e487b7160e01b5f52601260045260245ffd5b5f826125d3576125d36125b1565b500490565b5f602082840312156125e8575f5ffd5b6103fb82611d41565b5f60208284031215612601575f5ffd5b6103fb82611d57565b6001600160a01b0361261b85611d41565b16815263ffffffff61262f60208601611d57565b16602082015263ffffffff83166040820152608060608201525f611062608083018461251b565b805160208083015191908110156123b7575f1960209190910360031b1b16919050565b63ffffffff81811683821601908111156103fe576103fe612586565b5f602082840312156126a5575f5ffd5b815180151581146103e8575f5ffd5b818103818111156103fe576103fe612586565b5f826126d5576126d56125b1565b500690565b808201808211156103fe576103fe61258656fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212209023b3da16d558489f1909eb4e2eac1ae1c7b6e1992d0fb52f5e3bde23fd629d64736f6c634300081b0033", } // BN254CertificateVerifierABI is the input ABI used to generate the binding from. @@ -259,15 +259,15 @@ func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorRaw) Transact // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetNonsignerOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetNonsignerOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { var out []interface{} err := _BN254CertificateVerifier.contract.Call(opts, &out, "getNonsignerOperatorInfo", operatorSet, referenceTimestamp, operatorIndex) if err != nil { - return *new(IBN254TableCalculatorTypesBN254OperatorInfo), err + return *new(IOperatorTableCalculatorTypesBN254OperatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorInfo)).(*IBN254TableCalculatorTypesBN254OperatorInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesBN254OperatorInfo)).(*IOperatorTableCalculatorTypesBN254OperatorInfo) return out0, err @@ -276,29 +276,29 @@ func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetNonsignerOpe // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_BN254CertificateVerifier *BN254CertificateVerifierSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { return _BN254CertificateVerifier.Contract.GetNonsignerOperatorInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { return _BN254CertificateVerifier.Contract.GetNonsignerOperatorInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetOperatorSetInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetOperatorSetInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { var out []interface{} err := _BN254CertificateVerifier.contract.Call(opts, &out, "getOperatorSetInfo", operatorSet, referenceTimestamp) if err != nil { - return *new(IBN254TableCalculatorTypesBN254OperatorSetInfo), err + return *new(IOperatorTableCalculatorTypesBN254OperatorSetInfo), err } - out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorSetInfo)).(*IBN254TableCalculatorTypesBN254OperatorSetInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesBN254OperatorSetInfo)).(*IOperatorTableCalculatorTypesBN254OperatorSetInfo) return out0, err @@ -307,14 +307,14 @@ func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetOperatorSetI // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_BN254CertificateVerifier *BN254CertificateVerifierSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { return _BN254CertificateVerifier.Contract.GetOperatorSetInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { return _BN254CertificateVerifier.Contract.GetOperatorSetInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } @@ -552,21 +552,21 @@ func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) Version( // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_BN254CertificateVerifier *BN254CertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _BN254CertificateVerifier.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_BN254CertificateVerifier *BN254CertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _BN254CertificateVerifier.Contract.UpdateOperatorTable(&_BN254CertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _BN254CertificateVerifier.Contract.UpdateOperatorTable(&_BN254CertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } @@ -1108,7 +1108,7 @@ func (it *BN254CertificateVerifierTableUpdatedIterator) Close() error { type BN254CertificateVerifierTableUpdated struct { OperatorSet OperatorSet ReferenceTimestamp uint32 - OperatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo + OperatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo Raw types.Log // Blockchain specific contextual infos } diff --git a/pkg/bindings/BN254CertificateVerifierStorage/binding.go b/pkg/bindings/BN254CertificateVerifierStorage/binding.go index 2903a49cfb..cd4ad79936 100644 --- a/pkg/bindings/BN254CertificateVerifierStorage/binding.go +++ b/pkg/bindings/BN254CertificateVerifierStorage/binding.go @@ -54,29 +54,29 @@ type IBN254CertificateVerifierTypesBN254Certificate struct { type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { OperatorIndex uint32 OperatorInfoProof []byte - OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo + OperatorInfo IOperatorTableCalculatorTypesBN254OperatorInfo } -// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorInfo struct { +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// IOperatorTableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorInfo struct { Pubkey BN254G1Point Weights []*big.Int } -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { +// IOperatorTableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorSetInfo struct { OperatorInfoTreeRoot [32]byte NumOperators *big.Int AggregatePubkey BN254G1Point TotalWeights []*big.Int } -// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. -type ICrossChainRegistryTypesOperatorSetConfig struct { - Owner common.Address - MaxStalenessPeriod uint32 -} - // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -85,7 +85,7 @@ type OperatorSet struct { // BN254CertificateVerifierStorageMetaData contains all meta data concerning the BN254CertificateVerifierStorage contract. var BN254CertificateVerifierStorageMetaData = &bind.MetaData{ - ABI: "[{\"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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"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\":\"structIBN254TableCalculatorTypes.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\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", + ABI: "[{\"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\":\"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\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", } // BN254CertificateVerifierStorageABI is the input ABI used to generate the binding from. @@ -237,15 +237,15 @@ func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransacto // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCaller) GetNonsignerOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCaller) GetNonsignerOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { var out []interface{} err := _BN254CertificateVerifierStorage.contract.Call(opts, &out, "getNonsignerOperatorInfo", operatorSet, referenceTimestamp, operatorIndex) if err != nil { - return *new(IBN254TableCalculatorTypesBN254OperatorInfo), err + return *new(IOperatorTableCalculatorTypesBN254OperatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorInfo)).(*IBN254TableCalculatorTypesBN254OperatorInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesBN254OperatorInfo)).(*IOperatorTableCalculatorTypesBN254OperatorInfo) return out0, err @@ -254,29 +254,29 @@ func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCaller) G // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { return _BN254CertificateVerifierStorage.Contract.GetNonsignerOperatorInfo(&_BN254CertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCallerSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCallerSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { return _BN254CertificateVerifierStorage.Contract.GetNonsignerOperatorInfo(&_BN254CertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCaller) GetOperatorSetInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCaller) GetOperatorSetInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { var out []interface{} err := _BN254CertificateVerifierStorage.contract.Call(opts, &out, "getOperatorSetInfo", operatorSet, referenceTimestamp) if err != nil { - return *new(IBN254TableCalculatorTypesBN254OperatorSetInfo), err + return *new(IOperatorTableCalculatorTypesBN254OperatorSetInfo), err } - out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorSetInfo)).(*IBN254TableCalculatorTypesBN254OperatorSetInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesBN254OperatorSetInfo)).(*IOperatorTableCalculatorTypesBN254OperatorSetInfo) return out0, err @@ -285,14 +285,14 @@ func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCaller) G // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { return _BN254CertificateVerifierStorage.Contract.GetOperatorSetInfo(&_BN254CertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp) } // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCallerSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCallerSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { return _BN254CertificateVerifierStorage.Contract.GetOperatorSetInfo(&_BN254CertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp) } @@ -499,21 +499,21 @@ func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCallerSes // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _BN254CertificateVerifierStorage.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _BN254CertificateVerifierStorage.Contract.UpdateOperatorTable(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _BN254CertificateVerifierStorage.Contract.UpdateOperatorTable(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } @@ -921,7 +921,7 @@ func (it *BN254CertificateVerifierStorageTableUpdatedIterator) Close() error { type BN254CertificateVerifierStorageTableUpdated struct { OperatorSet OperatorSet ReferenceTimestamp uint32 - OperatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo + OperatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo Raw types.Log // Blockchain specific contextual infos } diff --git a/pkg/bindings/BN254TableCalculator/binding.go b/pkg/bindings/BN254TableCalculator/binding.go deleted file mode 100644 index 44e8262af5..0000000000 --- a/pkg/bindings/BN254TableCalculator/binding.go +++ /dev/null @@ -1,491 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package BN254TableCalculator - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. -type BN254G1Point struct { - X *big.Int - Y *big.Int -} - -// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorInfo struct { - Pubkey BN254G1Point - Weights []*big.Int -} - -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { - OperatorInfoTreeRoot [32]byte - NumOperators *big.Int - AggregatePubkey BN254G1Point - TotalWeights []*big.Int -} - -// OperatorSet is an auto generated low-level Go binding around an user-defined struct. -type OperatorSet struct { - Avs common.Address - Id uint32 -} - -// BN254TableCalculatorMetaData contains all meta data concerning the BN254TableCalculator contract. -var BN254TableCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_keyRegistrar\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_LOOKAHEAD_BLOCKS\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"LOOKAHEAD_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.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\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"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\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254TableCalculatorTypes.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\":\"getOperatorWeight\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeights\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"weights\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyRegistrar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"ECAddFailed\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b506040516118b23803806118b283398101604081905261002e91610060565b6001600160a01b03928316608052911660a05260c0526100a0565b6001600160a01b038116811461005d575f5ffd5b50565b5f5f5f60608486031215610072575f5ffd5b835161007d81610049565b602085015190935061008e81610049565b80925050604084015190509250925092565b60805160a05160c0516117b16101015f395f8181610133015261063401525f818161017b015281816104df0152818161056f015261060701525f818160d401528181610328015281816103d401528181610a040152610b1f01526117b15ff3fe608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80635e120ffc116100585780635e120ffc1461012e57806371ca71d914610155578063ca8aa7c714610176578063cf2d90ef1461019d575f5ffd5b80631088794a14610089578063124c87e0146100af5780633ec45c7e146100cf57806341ee6d0e1461010e575b5f5ffd5b61009c610097366004610ff1565b6101bd565b6040519081526020015b60405180910390f35b6100c26100bd366004611027565b61025d565b6040516100a69190611082565b6100f67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a6565b61012161011c366004611027565b61026e565b6040516100a691906110d5565b61009c7f000000000000000000000000000000000000000000000000000000000000000081565b610168610163366004611027565b61029f565b6040516100a6929190611143565b6100f67f000000000000000000000000000000000000000000000000000000000000000081565b6101b06101ab366004611027565b6102b4565b6040516100a691906111e7565b5f5f5f6101c9856104d9565b90925090505f5b825181101561025057846001600160a01b03168382815181106101f5576101f561124a565b60200260200101516001600160a01b0316036102485781818151811061021d5761021d61124a565b60200260200101515f815181106102365761023661124a565b60200260200101519350505050610257565b6001016101d0565b505f925050505b92915050565b610265610f46565b61025782610894565b606061027982610894565b6040516020016102899190611082565b6040516020818303038152906040529050919050565b6060806102ab836104d9565b91509150915091565b60605f5f6102c1846104d9565b915091505f82516001600160401b038111156102df576102df61125e565b60405190808252806020026020018201604052801561031857816020015b610305610f85565b8152602001906001900390816102fd5790505b5090505f5b83518110156104d0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd30a0b9878684815181106103685761036861124a565b60200260200101516040518363ffffffff1660e01b815260040161038d9291906112ab565b602060405180830381865afa1580156103a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cc91906112d1565b156104c8575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a43e3fb888785815181106104145761041461124a565b60200260200101516040518363ffffffff1660e01b81526004016104399291906112ab565b60c060405180830381865afa158015610454573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104789190611395565b509050604051806040016040528082815260200185848151811061049e5761049e61124a565b60200260200101518152508383815181106104bb576104bb61124a565b6020026020010181905250505b60010161031d565b50949350505050565b6060805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e875dba856040518263ffffffff1660e01b81526004016105299190611412565b5f60405180830381865afa158015610543573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261056a9190810190611442565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634177a87c866040518263ffffffff1660e01b81526004016105b99190611412565b5f60405180830381865afa1580156105d3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105fa91908101906114e0565b90505f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016632bab2c4a8785856106597f000000000000000000000000000000000000000000000000000000000000000043611583565b6040518563ffffffff1660e01b81526004016106789493929190611596565b5f60405180830381865afa158015610692573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106b9919081019061160f565b905082516001600160401b038111156106d4576106d461125e565b6040519080825280602002602001820160405280156106fd578160200160208202803683370190505b50945082516001600160401b038111156107195761071961125e565b60405190808252806020026020018201604052801561074c57816020015b60608152602001906001900390816107375790505b5093505f805b8451811015610884575f805b85518110156107af578483815181106107795761077961124a565b602002602001015181815181106107925761079261124a565b6020026020010151826107a59190611583565b915060010161075e565b50801561087b576040805160018082528183019092529060208083019080368337019050508784815181106107e6576107e661124a565b6020026020010181905250808784815181106108045761080461124a565b60200260200101515f8151811061081d5761081d61124a565b60200260200101818152505085828151811061083b5761083b61124a565b60200260200101518884815181106108555761085561124a565b6001600160a01b0390921660209283029190910190910152826108778161171b565b9350505b50600101610752565b5080865280855250505050915091565b61089c610f46565b5f5f6108a7846104d9565b9150915080515f036109325760405180608001604052805f5f1b81526020015f815260200160405180604001604052805f81526020015f81525081526020015f6001600160401b038111156108fe576108fe61125e565b604051908082528060200260200182016040528015610927578160200160208202803683370190505b509052949350505050565b5f815f815181106109455761094561124a565b60200260200101515190505f816001600160401b038111156109695761096961125e565b604051908082528060200260200182016040528015610992578160200160208202803683370190505b5090505f84516001600160401b038111156109af576109af61125e565b6040519080825280602002602001820160405280156109d8578160200160208202803683370190505b5090506109f660405180604001604052805f81526020015f81525090565b5f805b8751811015610c5a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd30a0b98b8a8481518110610a4457610a4461124a565b60200260200101516040518363ffffffff1660e01b8152600401610a699291906112ab565b602060405180830381865afa158015610a84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa891906112d1565b15610c52575f5b86811015610b1b57878281518110610ac957610ac961124a565b60200260200101518181518110610ae257610ae261124a565b6020026020010151868281518110610afc57610afc61124a565b60200260200101818151610b109190611583565b905250600101610aaf565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a43e3fb8c8b8581518110610b5f57610b5f61124a565b60200260200101516040518363ffffffff1660e01b8152600401610b849291906112ab565b60c060405180830381865afa158015610b9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc39190611395565b5090506040518060400160405280828152602001898481518110610be957610be961124a565b6020026020010151815250604051602001610c049190611733565b60405160208183030381529060405280519060200120858381518110610c2c57610c2c61124a565b6020908102919091010152610c418482610d25565b935082610c4d8161171b565b935050505b6001016109f9565b50805f03610ce65760405180608001604052805f5f1b81526020015f815260200160405180604001604052805f81526020015f81525081526020015f6001600160401b03811115610cad57610cad61125e565b604051908082528060200260200182016040528015610cd6578160200160208202803683370190505b5090529998505050505050505050565b8083525f610cf384610da1565b905060405180608001604052808281526020018381526020018481526020018681525098505050505050505050919050565b604080518082019091525f8082526020820152610d40610fa6565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa90508080610d7a57fe5b5080610d995760405163d4b68fd760e01b815260040160405180910390fd5b505092915050565b5f60015b8251811015610dc057610db9600282611745565b9050610da5565b5f816001600160401b03811115610dd957610dd961125e565b604051908082528060200260200182016040528015610e02578160200160208202803683370190505b5090505f5b8451811015610e4f57848181518110610e2257610e2261124a565b6020026020010151828281518110610e3c57610e3c61124a565b6020908102919091010152600101610e07565b505b81600114610f23575f610e6560028461175c565b90505f5b81811015610f1b5782610e7d826002611745565b81518110610e8d57610e8d61124a565b602002602001015183826002610ea39190611745565b610eae906001611583565b81518110610ebe57610ebe61124a565b6020026020010151604051602001610ee0929190918252602082015260400190565b60405160208183030381529060405280519060200120838281518110610f0857610f0861124a565b6020908102919091010152600101610e69565b509150610e51565b805f81518110610f3557610f3561124a565b602002602001015192505050919050565b60405180608001604052805f81526020015f8152602001610f7860405180604001604052805f81526020015f81525090565b8152602001606081525090565b604080516080810182525f9181018281526060820192909252908190610f78565b60405180608001604052806004906020820280368337509192915050565b5f60408284031215610fd4575f5ffd5b50919050565b6001600160a01b0381168114610fee575f5ffd5b50565b5f5f60608385031215611002575f5ffd5b61100c8484610fc4565b9150604083013561101c81610fda565b809150509250929050565b5f60408284031215611037575f5ffd5b6110418383610fc4565b9392505050565b5f8151808452602084019350602083015f5b8281101561107857815186526020958601959091019060010161105a565b5093949350505050565b6020815281516020820152602082015160408201525f60408301516110b4606084018280518252602090810151910152565b50606083015160a0808401526110cd60c0840182611048565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8151808452602084019350602083015f5b828110156110785781516001600160a01b031686526020958601959091019060010161111c565b604081525f611155604083018561110a565b828103602084015280845180835260208301915060208160051b840101602087015f5b838110156111aa57601f19868403018552611194838351611048565b6020958601959093509190910190600101611178565b509098975050505050505050565b6111cd82825180518252602090810151910152565b5f6020820151606060408501526110cd6060850182611048565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561123e57603f198786030184526112298583516111b8565b9450602093840193919091019060010161120d565b50929695505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b803561127d81610fda565b6001600160a01b03168252602081013563ffffffff811680821461129f575f5ffd5b80602085015250505050565b606081016112b98285611272565b6001600160a01b039290921660409190910152919050565b5f602082840312156112e1575f5ffd5b81518015158114611041575f5ffd5b604080519081016001600160401b03811182821017156113125761131261125e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156113405761134061125e565b604052919050565b5f82601f830112611357575f5ffd5b61135f6112f0565b806040840185811115611370575f5ffd5b845b8181101561138a578051845260209384019301611372565b509095945050505050565b5f5f82840360c08112156113a7575f5ffd5b60408112156113b4575f5ffd5b6113bc6112f0565b845181526020808601519082015292506080603f19820112156113dd575f5ffd5b506113e66112f0565b6113f38560408601611348565b81526114028560808601611348565b6020820152809150509250929050565b604081016102578284611272565b5f6001600160401b038211156114385761143861125e565b5060051b60200190565b5f60208284031215611452575f5ffd5b81516001600160401b03811115611467575f5ffd5b8201601f81018413611477575f5ffd5b805161148a61148582611420565b611318565b8082825260208201915060208360051b8501019250868311156114ab575f5ffd5b6020840193505b828410156114d65783516114c581610fda565b8252602093840193909101906114b2565b9695505050505050565b5f602082840312156114f0575f5ffd5b81516001600160401b03811115611505575f5ffd5b8201601f81018413611515575f5ffd5b805161152361148582611420565b8082825260208201915060208360051b850101925086831115611544575f5ffd5b6020840193505b828410156114d657835161155e81610fda565b82526020938401939091019061154b565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102575761025761156f565b6115a08186611272565b60a060408201525f6115b560a083018661110a565b8281036060840152845180825260208087019201905f5b818110156115f35783516001600160a01b03168352602093840193909201916001016115cc565b5050809250505063ffffffff8316608083015295945050505050565b5f6020828403121561161f575f5ffd5b81516001600160401b03811115611634575f5ffd5b8201601f81018413611644575f5ffd5b805161165261148582611420565b8082825260208201915060208360051b850101925086831115611673575f5ffd5b602084015b838110156117105780516001600160401b03811115611695575f5ffd5b8501603f810189136116a5575f5ffd5b60208101516116b661148582611420565b808282526020820191506020808460051b8601010192508b8311156116d9575f5ffd5b6040840193505b828410156116fb5783518252602093840193909101906116e0565b86525050602093840193919091019050611678565b509695505050505050565b5f6001820161172c5761172c61156f565b5060010190565b602081525f61104160208301846111b8565b80820281158282048414176102575761025761156f565b5f8261177657634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212201b5a651309a6a5dca4bf019229739f96a3dfbba74509ef6e3025e4059ecb818164736f6c634300081b0033", -} - -// BN254TableCalculatorABI is the input ABI used to generate the binding from. -// Deprecated: Use BN254TableCalculatorMetaData.ABI instead. -var BN254TableCalculatorABI = BN254TableCalculatorMetaData.ABI - -// BN254TableCalculatorBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use BN254TableCalculatorMetaData.Bin instead. -var BN254TableCalculatorBin = BN254TableCalculatorMetaData.Bin - -// DeployBN254TableCalculator deploys a new Ethereum contract, binding an instance of BN254TableCalculator to it. -func DeployBN254TableCalculator(auth *bind.TransactOpts, backend bind.ContractBackend, _keyRegistrar common.Address, _allocationManager common.Address, _LOOKAHEAD_BLOCKS *big.Int) (common.Address, *types.Transaction, *BN254TableCalculator, error) { - parsed, err := BN254TableCalculatorMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BN254TableCalculatorBin), backend, _keyRegistrar, _allocationManager, _LOOKAHEAD_BLOCKS) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &BN254TableCalculator{BN254TableCalculatorCaller: BN254TableCalculatorCaller{contract: contract}, BN254TableCalculatorTransactor: BN254TableCalculatorTransactor{contract: contract}, BN254TableCalculatorFilterer: BN254TableCalculatorFilterer{contract: contract}}, nil -} - -// BN254TableCalculator is an auto generated Go binding around an Ethereum contract. -type BN254TableCalculator struct { - BN254TableCalculatorCaller // Read-only binding to the contract - BN254TableCalculatorTransactor // Write-only binding to the contract - BN254TableCalculatorFilterer // Log filterer for contract events -} - -// BN254TableCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. -type BN254TableCalculatorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BN254TableCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. -type BN254TableCalculatorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BN254TableCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type BN254TableCalculatorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BN254TableCalculatorSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type BN254TableCalculatorSession struct { - Contract *BN254TableCalculator // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BN254TableCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type BN254TableCalculatorCallerSession struct { - Contract *BN254TableCalculatorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// BN254TableCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type BN254TableCalculatorTransactorSession struct { - Contract *BN254TableCalculatorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BN254TableCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. -type BN254TableCalculatorRaw struct { - Contract *BN254TableCalculator // Generic contract binding to access the raw methods on -} - -// BN254TableCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type BN254TableCalculatorCallerRaw struct { - Contract *BN254TableCalculatorCaller // Generic read-only contract binding to access the raw methods on -} - -// BN254TableCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type BN254TableCalculatorTransactorRaw struct { - Contract *BN254TableCalculatorTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewBN254TableCalculator creates a new instance of BN254TableCalculator, bound to a specific deployed contract. -func NewBN254TableCalculator(address common.Address, backend bind.ContractBackend) (*BN254TableCalculator, error) { - contract, err := bindBN254TableCalculator(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &BN254TableCalculator{BN254TableCalculatorCaller: BN254TableCalculatorCaller{contract: contract}, BN254TableCalculatorTransactor: BN254TableCalculatorTransactor{contract: contract}, BN254TableCalculatorFilterer: BN254TableCalculatorFilterer{contract: contract}}, nil -} - -// NewBN254TableCalculatorCaller creates a new read-only instance of BN254TableCalculator, bound to a specific deployed contract. -func NewBN254TableCalculatorCaller(address common.Address, caller bind.ContractCaller) (*BN254TableCalculatorCaller, error) { - contract, err := bindBN254TableCalculator(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BN254TableCalculatorCaller{contract: contract}, nil -} - -// NewBN254TableCalculatorTransactor creates a new write-only instance of BN254TableCalculator, bound to a specific deployed contract. -func NewBN254TableCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*BN254TableCalculatorTransactor, error) { - contract, err := bindBN254TableCalculator(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BN254TableCalculatorTransactor{contract: contract}, nil -} - -// NewBN254TableCalculatorFilterer creates a new log filterer instance of BN254TableCalculator, bound to a specific deployed contract. -func NewBN254TableCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*BN254TableCalculatorFilterer, error) { - contract, err := bindBN254TableCalculator(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BN254TableCalculatorFilterer{contract: contract}, nil -} - -// bindBN254TableCalculator binds a generic wrapper to an already deployed contract. -func bindBN254TableCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BN254TableCalculatorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BN254TableCalculator *BN254TableCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BN254TableCalculator.Contract.BN254TableCalculatorCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BN254TableCalculator *BN254TableCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BN254TableCalculator.Contract.BN254TableCalculatorTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_BN254TableCalculator *BN254TableCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BN254TableCalculator.Contract.BN254TableCalculatorTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BN254TableCalculator *BN254TableCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BN254TableCalculator.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BN254TableCalculator *BN254TableCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BN254TableCalculator.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_BN254TableCalculator *BN254TableCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BN254TableCalculator.Contract.contract.Transact(opts, method, params...) -} - -// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. -// -// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) -func (_BN254TableCalculator *BN254TableCalculatorCaller) LOOKAHEADBLOCKS(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "LOOKAHEAD_BLOCKS") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. -// -// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) -func (_BN254TableCalculator *BN254TableCalculatorSession) LOOKAHEADBLOCKS() (*big.Int, error) { - return _BN254TableCalculator.Contract.LOOKAHEADBLOCKS(&_BN254TableCalculator.CallOpts) -} - -// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. -// -// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) LOOKAHEADBLOCKS() (*big.Int, error) { - return _BN254TableCalculator.Contract.LOOKAHEADBLOCKS(&_BN254TableCalculator.CallOpts) -} - -// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. -// -// Solidity: function allocationManager() view returns(address) -func (_BN254TableCalculator *BN254TableCalculatorCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "allocationManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. -// -// Solidity: function allocationManager() view returns(address) -func (_BN254TableCalculator *BN254TableCalculatorSession) AllocationManager() (common.Address, error) { - return _BN254TableCalculator.Contract.AllocationManager(&_BN254TableCalculator.CallOpts) -} - -// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. -// -// Solidity: function allocationManager() view returns(address) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) AllocationManager() (common.Address, error) { - return _BN254TableCalculator.Contract.AllocationManager(&_BN254TableCalculator.CallOpts) -} - -// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. -// -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) -func (_BN254TableCalculator *BN254TableCalculatorCaller) CalculateOperatorTable(opts *bind.CallOpts, operatorSet OperatorSet) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "calculateOperatorTable", operatorSet) - - if err != nil { - return *new(IBN254TableCalculatorTypesBN254OperatorSetInfo), err - } - - out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorSetInfo)).(*IBN254TableCalculatorTypesBN254OperatorSetInfo) - - return out0, err - -} - -// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. -// -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) -func (_BN254TableCalculator *BN254TableCalculatorSession) CalculateOperatorTable(operatorSet OperatorSet) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { - return _BN254TableCalculator.Contract.CalculateOperatorTable(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. -// -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) CalculateOperatorTable(operatorSet OperatorSet) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { - return _BN254TableCalculator.Contract.CalculateOperatorTable(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. -// -// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) -func (_BN254TableCalculator *BN254TableCalculatorCaller) CalculateOperatorTableBytes(opts *bind.CallOpts, operatorSet OperatorSet) ([]byte, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "calculateOperatorTableBytes", operatorSet) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. -// -// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) -func (_BN254TableCalculator *BN254TableCalculatorSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { - return _BN254TableCalculator.Contract.CalculateOperatorTableBytes(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. -// -// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { - return _BN254TableCalculator.Contract.CalculateOperatorTableBytes(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// GetOperatorInfos is a free data retrieval call binding the contract method 0xcf2d90ef. -// -// Solidity: function getOperatorInfos((address,uint32) operatorSet) view returns(((uint256,uint256),uint256[])[]) -func (_BN254TableCalculator *BN254TableCalculatorCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet) ([]IBN254TableCalculatorTypesBN254OperatorInfo, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "getOperatorInfos", operatorSet) - - if err != nil { - return *new([]IBN254TableCalculatorTypesBN254OperatorInfo), err - } - - out0 := *abi.ConvertType(out[0], new([]IBN254TableCalculatorTypesBN254OperatorInfo)).(*[]IBN254TableCalculatorTypesBN254OperatorInfo) - - return out0, err - -} - -// GetOperatorInfos is a free data retrieval call binding the contract method 0xcf2d90ef. -// -// Solidity: function getOperatorInfos((address,uint32) operatorSet) view returns(((uint256,uint256),uint256[])[]) -func (_BN254TableCalculator *BN254TableCalculatorSession) GetOperatorInfos(operatorSet OperatorSet) ([]IBN254TableCalculatorTypesBN254OperatorInfo, error) { - return _BN254TableCalculator.Contract.GetOperatorInfos(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// GetOperatorInfos is a free data retrieval call binding the contract method 0xcf2d90ef. -// -// Solidity: function getOperatorInfos((address,uint32) operatorSet) view returns(((uint256,uint256),uint256[])[]) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) GetOperatorInfos(operatorSet OperatorSet) ([]IBN254TableCalculatorTypesBN254OperatorInfo, error) { - return _BN254TableCalculator.Contract.GetOperatorInfos(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. -// -// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) -func (_BN254TableCalculator *BN254TableCalculatorCaller) GetOperatorWeight(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (*big.Int, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "getOperatorWeight", operatorSet, operator) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. -// -// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) -func (_BN254TableCalculator *BN254TableCalculatorSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { - return _BN254TableCalculator.Contract.GetOperatorWeight(&_BN254TableCalculator.CallOpts, operatorSet, operator) -} - -// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. -// -// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { - return _BN254TableCalculator.Contract.GetOperatorWeight(&_BN254TableCalculator.CallOpts, operatorSet, operator) -} - -// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. -// -// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) -func (_BN254TableCalculator *BN254TableCalculatorCaller) GetOperatorWeights(opts *bind.CallOpts, operatorSet OperatorSet) (struct { - Operators []common.Address - Weights [][]*big.Int -}, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "getOperatorWeights", operatorSet) - - outstruct := new(struct { - Operators []common.Address - Weights [][]*big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Operators = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - outstruct.Weights = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) - - return *outstruct, err - -} - -// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. -// -// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) -func (_BN254TableCalculator *BN254TableCalculatorSession) GetOperatorWeights(operatorSet OperatorSet) (struct { - Operators []common.Address - Weights [][]*big.Int -}, error) { - return _BN254TableCalculator.Contract.GetOperatorWeights(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. -// -// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) GetOperatorWeights(operatorSet OperatorSet) (struct { - Operators []common.Address - Weights [][]*big.Int -}, error) { - return _BN254TableCalculator.Contract.GetOperatorWeights(&_BN254TableCalculator.CallOpts, operatorSet) -} - -// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. -// -// Solidity: function keyRegistrar() view returns(address) -func (_BN254TableCalculator *BN254TableCalculatorCaller) KeyRegistrar(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BN254TableCalculator.contract.Call(opts, &out, "keyRegistrar") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. -// -// Solidity: function keyRegistrar() view returns(address) -func (_BN254TableCalculator *BN254TableCalculatorSession) KeyRegistrar() (common.Address, error) { - return _BN254TableCalculator.Contract.KeyRegistrar(&_BN254TableCalculator.CallOpts) -} - -// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. -// -// Solidity: function keyRegistrar() view returns(address) -func (_BN254TableCalculator *BN254TableCalculatorCallerSession) KeyRegistrar() (common.Address, error) { - return _BN254TableCalculator.Contract.KeyRegistrar(&_BN254TableCalculator.CallOpts) -} diff --git a/pkg/bindings/CrossChainRegistry/binding.go b/pkg/bindings/CrossChainRegistry/binding.go index 81b51208f0..48d8783852 100644 --- a/pkg/bindings/CrossChainRegistry/binding.go +++ b/pkg/bindings/CrossChainRegistry/binding.go @@ -44,7 +44,7 @@ type OperatorSet struct { // CrossChainRegistryMetaData contains all meta data concerning the CrossChainRegistry contract. var CrossChainRegistryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_keyRegistrar\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addChainIDsToWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"operatorTableUpdaters\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservations\",\"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\":\"getActiveTransportReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorTableCalculator\",\"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\":\"contractIOperatorTableCalculator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSupportedChains\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"keyRegistrar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeChainIDsFromWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeGenerationReservation\",\"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\":\"removeTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"ChainIDAddedToWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorTableUpdater\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainIDRemovedFromWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationCreated\",\"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\":\"GenerationReservationRemoved\",\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigRemoved\",\"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\":\"OperatorSetConfigSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorTableCalculatorRemoved\",\"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\":\"OperatorTableCalculatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIOperatorTableCalculator\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationChainAdded\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationChainRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationsRemoved\",\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDAlreadyWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EmptyChainIDsArray\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RequireAtLeastOneTransportDestination\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TransportDestinationAlreadyAdded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransportDestinationNotFound\",\"inputs\":[]}]", - Bin: "0x610120604052348015610010575f5ffd5b50604051612e0c380380612e0c83398101604081905261002f916101c1565b80838686856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a052811660c0521660e05261008181610098565b610100525061008e6100de565b5050505050610319565b5f5f829050601f815111156100cb578260405163305a27a960e01b81526004016100c291906102be565b60405180910390fd5b80516100d6826102f3565b179392505050565b5f54610100900460ff16156101455760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c2565b5f5460ff90811614610194575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101aa575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d5575f5ffd5b85516101e081610196565b60208701519095506101f181610196565b604087015190945061020281610196565b606087015190935061021381610196565b60808701519092506001600160401b0381111561022e575f5ffd5b8601601f8101881361023e575f5ffd5b80516001600160401b03811115610257576102576101ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610285576102856101ad565b6040528181528282016020018a101561029c575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610313575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612a7061039c5f395f610c8b01525f81816102c50152611a9c01525f818161026601526109d401525f81816103e5015281816106630152818161080e01528181610b6d01528181610d1e0152818161157a015261174b01525f8181610381015281816119930152611f430152612a705ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c80636c55a37f116100fe578063ca8aa7c71161009e578063f2fde38b1161006e578063f2fde38b14610442578063f3e9f5d414610455578063fabc1cbc14610468578063fe596dee1461047b575f5ffd5b8063ca8aa7c7146103e0578063cd6dc68714610407578063d09b978b1461041a578063dfbd9dfd1461042f575f5ffd5b8063886f1195116100d9578063886f11951461037c5780638da5cb5b146103a3578063bfda3b3d146103b4578063c4bffe2b146103ca575f5ffd5b80636c55a37f1461034e578063715018a61461036157806375e4b53914610369575f5ffd5b806341ee6d0e1161016957806354fd4d501161014457806354fd4d50146102fa578063595c6a67146103025780635ac86ab71461030a5780635c975abb1461033d575f5ffd5b806341ee6d0e146102a05780634657e26a146102c057806349be7d6f146102e7575f5ffd5b806321fa7fdc116101a457806321fa7fdc14610205578063277e1e621461022e5780633c75fddf146102415780633ec45c7e14610261575f5ffd5b806304e98be3146101ca578063136439dd146101df5780631ca9142a146101f2575b5f5ffd5b6101dd6101d8366004612269565b61048e565b005b6101dd6101ed3660046122d3565b6105d2565b6101dd610200366004612314565b61060c565b610218610213366004612403565b610757565b604051610225919061243b565b60405180910390f35b6101dd61023c366004612449565b6107b7565b61025461024f366004612403565b6108f8565b60405161022591906124b6565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610225565b6102b36102ae3660046124c8565b6109cf565b6040516102259190612510565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6102f5366004612522565b610b16565b6102b3610c84565b6101dd610cb4565b61032d610318366004612571565b606654600160ff9092169190911b9081161490565b6040519015158152602001610225565b606654604051908152602001610225565b6101dd61035c3660046124c8565b610cc8565b6101dd610f3e565b610288610377366004612403565b610f4f565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610288565b6103bc610f7b565b6040516102259291906125cc565b6103d26110e7565b604051610225929190612669565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6104153660046126ca565b6111f0565b61042261130c565b60405161022591906126f4565b6101dd61043d366004612706565b6113fe565b6101dd610450366004612744565b6114aa565b6101dd610463366004612522565b611523565b6101dd6104763660046122d3565b611688565b6101dd61048936600461275f565b6116f5565b6104966118da565b60046104a181611934565b8382146104c15760405163512509d360e11b815260040160405180910390fd5b5f5b848110156105ca575f8686838181106104de576104de6127d3565b905060200201359050805f0361050757604051633d23e4d160e11b815260040160405180910390fd5b61053b8186868581811061051d5761051d6127d3565b90506020020160208101906105329190612744565b609c919061195f565b610558576040516324bf631b60e11b815260040160405180910390fd5b7f7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff628186868581811061058c5761058c6127d3565b90506020020160208101906105a19190612744565b604080519283526001600160a01b0390911660208301520160405180910390a1506001016104c3565b505050505050565b6105da61197e565b60665481811681146105ff5760405163c61dca5d60e01b815260040160405180910390fd5b61060882611a21565b5050565b600161061781611934565b6106246020840184612744565b61062d81611a5e565b61064a5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610698908490600401612818565b602060405180830381865afa1580156106b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d79190612826565b6106f457604051631fb1705560e21b815260040160405180910390fd5b8461072261070f61070a36849003840184612403565b611b0e565b5f90815260986020526040902054151590565b61073f57604051634d2baea960e11b815260040160405180910390fd5b6105ca61075136889003880188612403565b86611b71565b604080518082019091525f8082526020820152609a5f61077684611b0e565b815260208082019290925260409081015f208151808301909252546001600160a01b0381168252600160a01b900463ffffffff169181019190915292915050565b60026107c281611934565b6107cf6020840184612744565b6107d881611a5e565b6107f55760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610843908490600401612818565b602060405180830381865afa15801561085e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108829190612826565b61089f57604051631fb1705560e21b815260040160405180910390fd5b846108b561070f61070a36849003840184612403565b6108d257604051634d2baea960e11b815260040160405180910390fd5b6105ca6108e436889003880188612403565b6108f336889003880188612403565b611beb565b60605f609b5f61090785611b0e565b81526020019081526020015f2090505f61092082611c70565b90505f816001600160401b0381111561093b5761093b61234a565b604051908082528060200260200182016040528015610964578160200160208202803683370190505b5090505f805b838110156109c4575f61097d8683611c79565b905061098a609c82611c84565b156109bb57808484815181106109a2576109a26127d3565b6020908102919091010152826109b781612859565b9350505b5060010161096a565b508152949350505050565b6060817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637cffe48c846040518263ffffffff1660e01b8152600401610a1e9190612818565b602060405180830381865afa158015610a39573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d9190612871565b610a6f61021336869003860186612403565b610a8161037736879003870187612403565b6001600160a01b03166341ee6d0e866040518263ffffffff1660e01b8152600401610aac9190612818565b5f60405180830381865afa158015610ac6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610aed919081019061288f565b604051602001610b009493929190612921565b6040516020818303038152906040529050919050565b6003610b2181611934565b610b2e6020850185612744565b610b3781611a5e565b610b545760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ba2908490600401612818565b602060405180830381865afa158015610bbd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be19190612826565b610bfe57604051631fb1705560e21b815260040160405180910390fd5b85610c1461070f61070a36849003840184612403565b610c3157604051634d2baea960e11b815260040160405180910390fd5b610c7b610c4336899003890189612403565b8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611c8f92505050565b50505050505050565b6060610caf7f0000000000000000000000000000000000000000000000000000000000000000611d8b565b905090565b610cbc61197e565b610cc65f19611a21565b565b5f610cd281611934565b610cdf6020830183612744565b610ce881611a5e565b610d055760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815283906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610d53908490600401612818565b602060405180830381865afa158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612826565b610daf57604051631fb1705560e21b815260040160405180910390fd5b83610dc561070f61070a36849003840184612403565b610de257604051634d2baea960e11b815260040160405180910390fd5b5f610df561070a36889003880188612403565b5f818152609960205260409081902080546001600160a01b0319169055519091507fd7811913efd5d98fc7ea0d1fdd022b3d31987815360842d05b1d1cf55578d16a90610e43908890612818565b60405180910390a15f818152609a60205260409081902080546001600160c01b0319169055517f210a1118a869246162804e2a7f21ef808ebd93f4be7ed512014fe29a7a8be02e90610e96908890612818565b60405180910390a15f818152609b60205260408120908181610eb882826121fb565b505050507faf209f19ac00e8ccb4539e96d4141cdc96fea479d258d99910307c7365e6875986604051610eeb9190612818565b60405180910390a1610efe609782611dc8565b507f4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb86604051610f2e9190612818565b60405180910390a1505050505050565b610f466118da565b610cc65f611dd3565b5f60995f610f5c84611b0e565b815260208101919091526040015f20546001600160a01b031692915050565b6060805f610f896097611c70565b90505f816001600160401b03811115610fa457610fa461234a565b604051908082528060200260200182016040528015610fe857816020015b604080518082019091525f8082526020820152815260200190600190039081610fc25790505b5090505f826001600160401b038111156110045761100461234a565b60405190808252806020026020018201604052801561103757816020015b60608152602001906001900390816110225790505b5090505f5b838110156110dc575f611050609783611c79565b90505f61108c82604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b9050808584815181106110a1576110a16127d3565b60200260200101819052506110b5816108f8565b8484815181106110c7576110c76127d3565b6020908102919091010152505060010161103c565b509094909350915050565b6060805f6110f5609c611e24565b90505f816001600160401b038111156111105761111061234a565b604051908082528060200260200182016040528015611139578160200160208202803683370190505b5090505f826001600160401b038111156111555761115561234a565b60405190808252806020026020018201604052801561117e578160200160208202803683370190505b5090505f5b838110156110dc575f80611198609c84611e2e565b91509150818584815181106111af576111af6127d3565b602002602001018181525050808484815181106111ce576111ce6127d3565b6001600160a01b03909216602092830291909101909101525050600101611183565b5f54610100900460ff161580801561120e57505f54600160ff909116105b806112275750303b15801561122757505f5460ff166001145b61128f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156112b0575f805461ff0019166101001790555b6112b983611dd3565b6112c282611a21565b8015611307575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60605f6113196097611c70565b90505f816001600160401b038111156113345761133461234a565b60405190808252806020026020018201604052801561137857816020015b604080518082019091525f80825260208201528152602001906001900390816113525790505b5090505f5b828110156113f7575f611391609783611c79565b90505f6113cd82604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b9050808484815181106113e2576113e26127d3565b6020908102919091010152505060010161137d565b5092915050565b6114066118da565b600461141181611934565b5f5b828110156114a4575f84848381811061142e5761142e6127d3565b90506020020135905061144b81609c611e4b90919063ffffffff16565b6114685760405163b3f92ba160e01b815260040160405180910390fd5b6040518181527f6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e59060200160405180910390a150600101611413565b50505050565b6114b26118da565b6001600160a01b0381166115175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611286565b61152081611dd3565b50565b600361152e81611934565b61153b6020850185612744565b61154481611a5e565b6115615760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906115af908490600401612818565b602060405180830381865afa1580156115ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ee9190612826565b61160b57604051631fb1705560e21b815260040160405180910390fd5b8561162161070f61070a36849003840184612403565b61163e57604051634d2baea960e11b815260040160405180910390fd5b610c7b61165036899003890189612403565b8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611e5692505050565b611690611f41565b606654801982198116146116b75760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6116ff81611934565b61170c6020870187612744565b61171581611a5e565b6117325760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815287906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890611780908490600401612818565b602060405180830381865afa15801561179b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bf9190612826565b6117dc57604051631fb1705560e21b815260040160405180910390fd5b6117f96117f161070a368b90038b018b612403565b609790611ff2565b61181657604051631883461560e01b815260040160405180910390fd5b7f4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6886040516118459190612818565b60405180910390a161186561185f368a90038a018a612403565b88611b71565b611886611877368a90038a018a612403565b6108f336899003890189612403565b6118d0611898368a90038a018a612403565b8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611c8f92505050565b5050505050505050565b6033546001600160a01b03163314610cc65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611286565b606654600160ff83161b908116036115205760405163840a48d560e01b815260040160405180910390fd5b5f61197484846001600160a01b038516611ffd565b90505b9392505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156119e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a049190612826565b610cc657604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015611ae4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b089190612826565b92915050565b5f815f0151826020015163ffffffff16604051602001611b5992919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b604051602081830303815290604052611b0890612979565b8060995f611b7e85611b0e565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df8282604051611bdf92919061299c565b60405180910390a15050565b80609a5f611bf885611b0e565b815260208082019290925260409081015f2083518154949093015163ffffffff16600160a01b026001600160c01b03199094166001600160a01b0390931692909217929092179055517f3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e290611bdf90849084906129c2565b5f611b08825490565b5f6119778383612019565b5f611977838361203f565b5f815111611cb057604051638631a07560e01b815260040160405180910390fd5b5f611cba83611b0e565b90505f5b82518110156114a4575f838281518110611cda57611cda6127d3565b60200260200101519050611cf881609c611c8490919063ffffffff16565b611d155760405163b3f92ba160e01b815260040160405180910390fd5b5f838152609b60205260409020611d2c9082611ff2565b611d49576040516396d81ac960e01b815260040160405180910390fd5b7f57a1fcb3d9cd447695c46f20944ba562d9547989dcddea0afb119115060c7f0b8582604051611d7a9291906129dd565b60405180910390a150600101611cbe565b60605f611d9783612056565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f611977838361207d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f611b0882612160565b5f808080611e3c868661216a565b909450925050505b9250929050565b5f6119778383612193565b5f611e6083611b0e565b90505f5b8251811015611f0c575f838281518110611e8057611e806127d3565b60200260200101519050611ead81609b5f8681526020019081526020015f20611dc890919063ffffffff16565b611eca5760405163ab6cce0760e01b815260040160405180910390fd5b7f499955d838e6f0ca31e83adf81d191cfe6cd8fe252bf826c75c9a80ba077e25e8582604051611efb9291906129dd565b60405180910390a150600101611e64565b505f818152609b60205260408120611f2390611c70565b11611307576040516343629f7b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f9d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc191906129f8565b6001600160a01b0316336001600160a01b031614610cc65760405163794821ff60e01b815260040160405180910390fd5b5f61197783836121af565b5f82815260028401602052604081208290556119748484611ff2565b5f825f01828154811061202e5761202e6127d3565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515611977565b5f60ff8216601f811115611b0857604051632cd44ac360e21b815260040160405180910390fd5b5f8181526001830160205260408120548015612157575f61209f600183612a13565b85549091505f906120b290600190612a13565b9050818114612111575f865f0182815481106120d0576120d06127d3565b905f5260205f200154905080875f0184815481106120f0576120f06127d3565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061212257612122612a26565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611b08565b5f915050611b08565b5f611b0882611c70565b5f80806121778585611c79565b5f81815260029690960160205260409095205494959350505050565b5f81815260028301602052604081208190556119778383611dc8565b5f8181526001830160205260408120546121f457508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611b08565b505f611b08565b5080545f8255905f5260205f209081019061152091905b80821115612225575f8155600101612212565b5090565b5f5f83601f840112612239575f5ffd5b5081356001600160401b0381111561224f575f5ffd5b6020830191508360208260051b8501011115611e44575f5ffd5b5f5f5f5f6040858703121561227c575f5ffd5b84356001600160401b03811115612291575f5ffd5b61229d87828801612229565b90955093505060208501356001600160401b038111156122bb575f5ffd5b6122c787828801612229565b95989497509550505050565b5f602082840312156122e3575f5ffd5b5035919050565b5f604082840312156122fa575f5ffd5b50919050565b6001600160a01b0381168114611520575f5ffd5b5f5f60608385031215612325575f5ffd5b61232f84846122ea565b9150604083013561233f81612300565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156123865761238661234a565b604052919050565b803563ffffffff811681146123a1575f5ffd5b919050565b5f604082840312156123b6575f5ffd5b604080519081016001600160401b03811182821017156123d8576123d861234a565b60405290508082356123e981612300565b81526123f76020840161238e565b60208201525092915050565b5f60408284031215612413575f5ffd5b61197783836123a6565b80516001600160a01b0316825260209081015163ffffffff16910152565b60408101611b08828461241d565b5f5f6080838503121561245a575f5ffd5b61246484846122ea565b915061247384604085016122ea565b90509250929050565b5f8151808452602084019350602083015f5b828110156124ac57815186526020958601959091019060010161248e565b5093949350505050565b602081525f611977602083018461247c565b5f604082840312156124d8575f5ffd5b61197783836122ea565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61197760208301846124e2565b5f5f5f60608486031215612534575f5ffd5b61253e85856122ea565b925060408401356001600160401b03811115612558575f5ffd5b61256486828701612229565b9497909650939450505050565b5f60208284031215612581575f5ffd5b813560ff81168114611977575f5ffd5b5f8151808452602084019350602083015f5b828110156124ac576125b686835161241d565b60409590950194602091909101906001016125a3565b604081525f6125de6040830185612591565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561265b57858303601f19018552815180518085526020918201918501905f5b81811015612642578351835260209384019390920191600101612624565b5050602096870196909450929092019150600101612601565b509098975050505050505050565b604081525f61267b604083018561247c565b82810360208401528084518083526020830191506020860192505f5b818110156126be5783516001600160a01b0316835260209384019390920191600101612697565b50909695505050505050565b5f5f604083850312156126db575f5ffd5b82356126e681612300565b946020939093013593505050565b602081525f6119776020830184612591565b5f5f60208385031215612717575f5ffd5b82356001600160401b0381111561272c575f5ffd5b61273885828601612229565b90969095509350505050565b5f60208284031215612754575f5ffd5b813561197781612300565b5f5f5f5f5f60c08688031215612773575f5ffd5b61277d87876122ea565b9450604086013561278d81612300565b935061279c87606088016122ea565b925060a08601356001600160401b038111156127b6575f5ffd5b6127c288828901612229565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b80356127f281612300565b6001600160a01b0316825263ffffffff61280e6020830161238e565b1660208301525050565b60408101611b0882846127e7565b5f60208284031215612836575f5ffd5b81518015158114611977575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161286a5761286a612845565b5060010190565b5f60208284031215612881575f5ffd5b815160038110611977575f5ffd5b5f6020828403121561289f575f5ffd5b81516001600160401b038111156128b4575f5ffd5b8201601f810184136128c4575f5ffd5b80516001600160401b038111156128dd576128dd61234a565b6128f0601f8201601f191660200161235e565b818152856020838501011115612904575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b61292b81866127e7565b5f6003851061294857634e487b7160e01b5f52602160045260245ffd5b84604083015261295b606083018561241d565b60c060a083015261296f60c08301846124e2565b9695505050505050565b805160208083015191908110156122fa575f1960209190910360031b1b16919050565b606081016129aa828561241d565b6001600160a01b039290921660409190910152919050565b608081016129d0828561241d565b611977604083018461241d565b606081016129eb828561241d565b8260408301529392505050565b5f60208284031215612a08575f5ffd5b815161197781612300565b81810381811115611b0857611b08612845565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220443b42f409d9f9cebc20e506bd47f204250cab51215216781e87cd680e2deef364736f6c634300081b0033", + Bin: "0x610120604052348015610010575f5ffd5b50604051612e0c380380612e0c83398101604081905261002f916101c1565b80838686856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a052811660c0521660e05261008181610098565b610100525061008e6100de565b5050505050610319565b5f5f829050601f815111156100cb578260405163305a27a960e01b81526004016100c291906102be565b60405180910390fd5b80516100d6826102f3565b179392505050565b5f54610100900460ff16156101455760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c2565b5f5460ff90811614610194575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101aa575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d5575f5ffd5b85516101e081610196565b60208701519095506101f181610196565b604087015190945061020281610196565b606087015190935061021381610196565b60808701519092506001600160401b0381111561022e575f5ffd5b8601601f8101881361023e575f5ffd5b80516001600160401b03811115610257576102576101ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610285576102856101ad565b6040528181528282016020018a101561029c575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610313575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612a7061039c5f395f610c8b01525f81816102c50152611a9c01525f818161026601526109d401525f81816103e5015281816106630152818161080e01528181610b6d01528181610d1e0152818161157a015261174b01525f8181610381015281816119930152611f430152612a705ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c80636c55a37f116100fe578063ca8aa7c71161009e578063f2fde38b1161006e578063f2fde38b14610442578063f3e9f5d414610455578063fabc1cbc14610468578063fe596dee1461047b575f5ffd5b8063ca8aa7c7146103e0578063cd6dc68714610407578063d09b978b1461041a578063dfbd9dfd1461042f575f5ffd5b8063886f1195116100d9578063886f11951461037c5780638da5cb5b146103a3578063bfda3b3d146103b4578063c4bffe2b146103ca575f5ffd5b80636c55a37f1461034e578063715018a61461036157806375e4b53914610369575f5ffd5b806341ee6d0e1161016957806354fd4d501161014457806354fd4d50146102fa578063595c6a67146103025780635ac86ab71461030a5780635c975abb1461033d575f5ffd5b806341ee6d0e146102a05780634657e26a146102c057806349be7d6f146102e7575f5ffd5b806321fa7fdc116101a457806321fa7fdc14610205578063277e1e621461022e5780633c75fddf146102415780633ec45c7e14610261575f5ffd5b806304e98be3146101ca578063136439dd146101df5780631ca9142a146101f2575b5f5ffd5b6101dd6101d8366004612269565b61048e565b005b6101dd6101ed3660046122d3565b6105d2565b6101dd610200366004612314565b61060c565b610218610213366004612403565b610757565b604051610225919061243b565b60405180910390f35b6101dd61023c366004612449565b6107b7565b61025461024f366004612403565b6108f8565b60405161022591906124b6565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610225565b6102b36102ae3660046124c8565b6109cf565b6040516102259190612510565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6102f5366004612522565b610b16565b6102b3610c84565b6101dd610cb4565b61032d610318366004612571565b606654600160ff9092169190911b9081161490565b6040519015158152602001610225565b606654604051908152602001610225565b6101dd61035c3660046124c8565b610cc8565b6101dd610f3e565b610288610377366004612403565b610f4f565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610288565b6103bc610f7b565b6040516102259291906125cc565b6103d26110e7565b604051610225929190612669565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6104153660046126ca565b6111f0565b61042261130c565b60405161022591906126f4565b6101dd61043d366004612706565b6113fe565b6101dd610450366004612744565b6114aa565b6101dd610463366004612522565b611523565b6101dd6104763660046122d3565b611688565b6101dd61048936600461275f565b6116f5565b6104966118da565b60046104a181611934565b8382146104c15760405163512509d360e11b815260040160405180910390fd5b5f5b848110156105ca575f8686838181106104de576104de6127d3565b905060200201359050805f0361050757604051633d23e4d160e11b815260040160405180910390fd5b61053b8186868581811061051d5761051d6127d3565b90506020020160208101906105329190612744565b609c919061195f565b610558576040516324bf631b60e11b815260040160405180910390fd5b7f7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff628186868581811061058c5761058c6127d3565b90506020020160208101906105a19190612744565b604080519283526001600160a01b0390911660208301520160405180910390a1506001016104c3565b505050505050565b6105da61197e565b60665481811681146105ff5760405163c61dca5d60e01b815260040160405180910390fd5b61060882611a21565b5050565b600161061781611934565b6106246020840184612744565b61062d81611a5e565b61064a5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610698908490600401612818565b602060405180830381865afa1580156106b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d79190612826565b6106f457604051631fb1705560e21b815260040160405180910390fd5b8461072261070f61070a36849003840184612403565b611b0e565b5f90815260986020526040902054151590565b61073f57604051634d2baea960e11b815260040160405180910390fd5b6105ca61075136889003880188612403565b86611b71565b604080518082019091525f8082526020820152609a5f61077684611b0e565b815260208082019290925260409081015f208151808301909252546001600160a01b0381168252600160a01b900463ffffffff169181019190915292915050565b60026107c281611934565b6107cf6020840184612744565b6107d881611a5e565b6107f55760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610843908490600401612818565b602060405180830381865afa15801561085e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108829190612826565b61089f57604051631fb1705560e21b815260040160405180910390fd5b846108b561070f61070a36849003840184612403565b6108d257604051634d2baea960e11b815260040160405180910390fd5b6105ca6108e436889003880188612403565b6108f336889003880188612403565b611beb565b60605f609b5f61090785611b0e565b81526020019081526020015f2090505f61092082611c70565b90505f816001600160401b0381111561093b5761093b61234a565b604051908082528060200260200182016040528015610964578160200160208202803683370190505b5090505f805b838110156109c4575f61097d8683611c79565b905061098a609c82611c84565b156109bb57808484815181106109a2576109a26127d3565b6020908102919091010152826109b781612859565b9350505b5060010161096a565b508152949350505050565b6060817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637cffe48c846040518263ffffffff1660e01b8152600401610a1e9190612818565b602060405180830381865afa158015610a39573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d9190612871565b610a6f61021336869003860186612403565b610a8161037736879003870187612403565b6001600160a01b03166341ee6d0e866040518263ffffffff1660e01b8152600401610aac9190612818565b5f60405180830381865afa158015610ac6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610aed919081019061288f565b604051602001610b009493929190612921565b6040516020818303038152906040529050919050565b6003610b2181611934565b610b2e6020850185612744565b610b3781611a5e565b610b545760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ba2908490600401612818565b602060405180830381865afa158015610bbd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be19190612826565b610bfe57604051631fb1705560e21b815260040160405180910390fd5b85610c1461070f61070a36849003840184612403565b610c3157604051634d2baea960e11b815260040160405180910390fd5b610c7b610c4336899003890189612403565b8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611c8f92505050565b50505050505050565b6060610caf7f0000000000000000000000000000000000000000000000000000000000000000611d8b565b905090565b610cbc61197e565b610cc65f19611a21565b565b5f610cd281611934565b610cdf6020830183612744565b610ce881611a5e565b610d055760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815283906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610d53908490600401612818565b602060405180830381865afa158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612826565b610daf57604051631fb1705560e21b815260040160405180910390fd5b83610dc561070f61070a36849003840184612403565b610de257604051634d2baea960e11b815260040160405180910390fd5b5f610df561070a36889003880188612403565b5f818152609960205260409081902080546001600160a01b0319169055519091507fd7811913efd5d98fc7ea0d1fdd022b3d31987815360842d05b1d1cf55578d16a90610e43908890612818565b60405180910390a15f818152609a60205260409081902080546001600160c01b0319169055517f210a1118a869246162804e2a7f21ef808ebd93f4be7ed512014fe29a7a8be02e90610e96908890612818565b60405180910390a15f818152609b60205260408120908181610eb882826121fb565b505050507faf209f19ac00e8ccb4539e96d4141cdc96fea479d258d99910307c7365e6875986604051610eeb9190612818565b60405180910390a1610efe609782611dc8565b507f4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb86604051610f2e9190612818565b60405180910390a1505050505050565b610f466118da565b610cc65f611dd3565b5f60995f610f5c84611b0e565b815260208101919091526040015f20546001600160a01b031692915050565b6060805f610f896097611c70565b90505f816001600160401b03811115610fa457610fa461234a565b604051908082528060200260200182016040528015610fe857816020015b604080518082019091525f8082526020820152815260200190600190039081610fc25790505b5090505f826001600160401b038111156110045761100461234a565b60405190808252806020026020018201604052801561103757816020015b60608152602001906001900390816110225790505b5090505f5b838110156110dc575f611050609783611c79565b90505f61108c82604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b9050808584815181106110a1576110a16127d3565b60200260200101819052506110b5816108f8565b8484815181106110c7576110c76127d3565b6020908102919091010152505060010161103c565b509094909350915050565b6060805f6110f5609c611e24565b90505f816001600160401b038111156111105761111061234a565b604051908082528060200260200182016040528015611139578160200160208202803683370190505b5090505f826001600160401b038111156111555761115561234a565b60405190808252806020026020018201604052801561117e578160200160208202803683370190505b5090505f5b838110156110dc575f80611198609c84611e2e565b91509150818584815181106111af576111af6127d3565b602002602001018181525050808484815181106111ce576111ce6127d3565b6001600160a01b03909216602092830291909101909101525050600101611183565b5f54610100900460ff161580801561120e57505f54600160ff909116105b806112275750303b15801561122757505f5460ff166001145b61128f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156112b0575f805461ff0019166101001790555b6112b983611dd3565b6112c282611a21565b8015611307575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60605f6113196097611c70565b90505f816001600160401b038111156113345761133461234a565b60405190808252806020026020018201604052801561137857816020015b604080518082019091525f80825260208201528152602001906001900390816113525790505b5090505f5b828110156113f7575f611391609783611c79565b90505f6113cd82604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b9050808484815181106113e2576113e26127d3565b6020908102919091010152505060010161137d565b5092915050565b6114066118da565b600461141181611934565b5f5b828110156114a4575f84848381811061142e5761142e6127d3565b90506020020135905061144b81609c611e4b90919063ffffffff16565b6114685760405163b3f92ba160e01b815260040160405180910390fd5b6040518181527f6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e59060200160405180910390a150600101611413565b50505050565b6114b26118da565b6001600160a01b0381166115175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611286565b61152081611dd3565b50565b600361152e81611934565b61153b6020850185612744565b61154481611a5e565b6115615760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906115af908490600401612818565b602060405180830381865afa1580156115ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ee9190612826565b61160b57604051631fb1705560e21b815260040160405180910390fd5b8561162161070f61070a36849003840184612403565b61163e57604051634d2baea960e11b815260040160405180910390fd5b610c7b61165036899003890189612403565b8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611e5692505050565b611690611f41565b606654801982198116146116b75760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6116ff81611934565b61170c6020870187612744565b61171581611a5e565b6117325760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815287906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890611780908490600401612818565b602060405180830381865afa15801561179b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bf9190612826565b6117dc57604051631fb1705560e21b815260040160405180910390fd5b6117f96117f161070a368b90038b018b612403565b609790611ff2565b61181657604051631883461560e01b815260040160405180910390fd5b7f4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6886040516118459190612818565b60405180910390a161186561185f368a90038a018a612403565b88611b71565b611886611877368a90038a018a612403565b6108f336899003890189612403565b6118d0611898368a90038a018a612403565b8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611c8f92505050565b5050505050505050565b6033546001600160a01b03163314610cc65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611286565b606654600160ff83161b908116036115205760405163840a48d560e01b815260040160405180910390fd5b5f61197484846001600160a01b038516611ffd565b90505b9392505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156119e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a049190612826565b610cc657604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015611ae4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b089190612826565b92915050565b5f815f0151826020015163ffffffff16604051602001611b5992919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b604051602081830303815290604052611b0890612979565b8060995f611b7e85611b0e565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df8282604051611bdf92919061299c565b60405180910390a15050565b80609a5f611bf885611b0e565b815260208082019290925260409081015f2083518154949093015163ffffffff16600160a01b026001600160c01b03199094166001600160a01b0390931692909217929092179055517f3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e290611bdf90849084906129c2565b5f611b08825490565b5f6119778383612019565b5f611977838361203f565b5f815111611cb057604051638631a07560e01b815260040160405180910390fd5b5f611cba83611b0e565b90505f5b82518110156114a4575f838281518110611cda57611cda6127d3565b60200260200101519050611cf881609c611c8490919063ffffffff16565b611d155760405163b3f92ba160e01b815260040160405180910390fd5b5f838152609b60205260409020611d2c9082611ff2565b611d49576040516396d81ac960e01b815260040160405180910390fd5b7f57a1fcb3d9cd447695c46f20944ba562d9547989dcddea0afb119115060c7f0b8582604051611d7a9291906129dd565b60405180910390a150600101611cbe565b60605f611d9783612056565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f611977838361207d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f611b0882612160565b5f808080611e3c868661216a565b909450925050505b9250929050565b5f6119778383612193565b5f611e6083611b0e565b90505f5b8251811015611f0c575f838281518110611e8057611e806127d3565b60200260200101519050611ead81609b5f8681526020019081526020015f20611dc890919063ffffffff16565b611eca5760405163ab6cce0760e01b815260040160405180910390fd5b7f499955d838e6f0ca31e83adf81d191cfe6cd8fe252bf826c75c9a80ba077e25e8582604051611efb9291906129dd565b60405180910390a150600101611e64565b505f818152609b60205260408120611f2390611c70565b11611307576040516343629f7b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f9d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc191906129f8565b6001600160a01b0316336001600160a01b031614610cc65760405163794821ff60e01b815260040160405180910390fd5b5f61197783836121af565b5f82815260028401602052604081208290556119748484611ff2565b5f825f01828154811061202e5761202e6127d3565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515611977565b5f60ff8216601f811115611b0857604051632cd44ac360e21b815260040160405180910390fd5b5f8181526001830160205260408120548015612157575f61209f600183612a13565b85549091505f906120b290600190612a13565b9050818114612111575f865f0182815481106120d0576120d06127d3565b905f5260205f200154905080875f0184815481106120f0576120f06127d3565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061212257612122612a26565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611b08565b5f915050611b08565b5f611b0882611c70565b5f80806121778585611c79565b5f81815260029690960160205260409095205494959350505050565b5f81815260028301602052604081208190556119778383611dc8565b5f8181526001830160205260408120546121f457508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611b08565b505f611b08565b5080545f8255905f5260205f209081019061152091905b80821115612225575f8155600101612212565b5090565b5f5f83601f840112612239575f5ffd5b5081356001600160401b0381111561224f575f5ffd5b6020830191508360208260051b8501011115611e44575f5ffd5b5f5f5f5f6040858703121561227c575f5ffd5b84356001600160401b03811115612291575f5ffd5b61229d87828801612229565b90955093505060208501356001600160401b038111156122bb575f5ffd5b6122c787828801612229565b95989497509550505050565b5f602082840312156122e3575f5ffd5b5035919050565b5f604082840312156122fa575f5ffd5b50919050565b6001600160a01b0381168114611520575f5ffd5b5f5f60608385031215612325575f5ffd5b61232f84846122ea565b9150604083013561233f81612300565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156123865761238661234a565b604052919050565b803563ffffffff811681146123a1575f5ffd5b919050565b5f604082840312156123b6575f5ffd5b604080519081016001600160401b03811182821017156123d8576123d861234a565b60405290508082356123e981612300565b81526123f76020840161238e565b60208201525092915050565b5f60408284031215612413575f5ffd5b61197783836123a6565b80516001600160a01b0316825260209081015163ffffffff16910152565b60408101611b08828461241d565b5f5f6080838503121561245a575f5ffd5b61246484846122ea565b915061247384604085016122ea565b90509250929050565b5f8151808452602084019350602083015f5b828110156124ac57815186526020958601959091019060010161248e565b5093949350505050565b602081525f611977602083018461247c565b5f604082840312156124d8575f5ffd5b61197783836122ea565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61197760208301846124e2565b5f5f5f60608486031215612534575f5ffd5b61253e85856122ea565b925060408401356001600160401b03811115612558575f5ffd5b61256486828701612229565b9497909650939450505050565b5f60208284031215612581575f5ffd5b813560ff81168114611977575f5ffd5b5f8151808452602084019350602083015f5b828110156124ac576125b686835161241d565b60409590950194602091909101906001016125a3565b604081525f6125de6040830185612591565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561265b57858303601f19018552815180518085526020918201918501905f5b81811015612642578351835260209384019390920191600101612624565b5050602096870196909450929092019150600101612601565b509098975050505050505050565b604081525f61267b604083018561247c565b82810360208401528084518083526020830191506020860192505f5b818110156126be5783516001600160a01b0316835260209384019390920191600101612697565b50909695505050505050565b5f5f604083850312156126db575f5ffd5b82356126e681612300565b946020939093013593505050565b602081525f6119776020830184612591565b5f5f60208385031215612717575f5ffd5b82356001600160401b0381111561272c575f5ffd5b61273885828601612229565b90969095509350505050565b5f60208284031215612754575f5ffd5b813561197781612300565b5f5f5f5f5f60c08688031215612773575f5ffd5b61277d87876122ea565b9450604086013561278d81612300565b935061279c87606088016122ea565b925060a08601356001600160401b038111156127b6575f5ffd5b6127c288828901612229565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b80356127f281612300565b6001600160a01b0316825263ffffffff61280e6020830161238e565b1660208301525050565b60408101611b0882846127e7565b5f60208284031215612836575f5ffd5b81518015158114611977575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161286a5761286a612845565b5060010190565b5f60208284031215612881575f5ffd5b815160038110611977575f5ffd5b5f6020828403121561289f575f5ffd5b81516001600160401b038111156128b4575f5ffd5b8201601f810184136128c4575f5ffd5b80516001600160401b038111156128dd576128dd61234a565b6128f0601f8201601f191660200161235e565b818152856020838501011115612904575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b61292b81866127e7565b5f6003851061294857634e487b7160e01b5f52602160045260245ffd5b84604083015261295b606083018561241d565b60c060a083015261296f60c08301846124e2565b9695505050505050565b805160208083015191908110156122fa575f1960209190910360031b1b16919050565b606081016129aa828561241d565b6001600160a01b039290921660409190910152919050565b608081016129d0828561241d565b611977604083018461241d565b606081016129eb828561241d565b8260408301529392505050565b5f60208284031215612a08575f5ffd5b815161197781612300565b81810381811115611b0857611b08612845565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220a9894e743107c53f5ad5a9029c18a5e1ae09fdc18096b68b45ee0a5fb25dc2f964736f6c634300081b0033", } // CrossChainRegistryABI 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 ec870ff463..d2f5bcc8f7 100644 --- a/pkg/bindings/ECDSACertificateVerifier/binding.go +++ b/pkg/bindings/ECDSACertificateVerifier/binding.go @@ -42,8 +42,8 @@ type IECDSACertificateVerifierTypesECDSACertificate struct { Sig []byte } -// IECDSATableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IECDSATableCalculatorTypesECDSAOperatorInfo struct { +// IOperatorTableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesECDSAOperatorInfo struct { Pubkey common.Address Weights []*big.Int } @@ -56,8 +56,8 @@ 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\":\"structIECDSATableCalculatorTypes.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\":\"structIECDSATableCalculatorTypes.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\":\"structIECDSATableCalculatorTypes.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\":\"structIECDSATableCalculatorTypes.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: "0x60c060405234801561000f575f5ffd5b5060405161244038038061244083398101604081905261002e9161016d565b6001600160a01b03821660805280806100468161005b565b60a0525061005490506100a1565b5050610297565b5f5f829050601f8151111561008e578260405163305a27a960e01b8152600401610085919061023c565b60405180910390fd5b805161009982610271565b179392505050565b5f54610100900460ff16156101085760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610085565b5f5460ff90811614610157575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017e575f5ffd5b82516001600160a01b0381168114610194575f5ffd5b60208401519092506001600160401b038111156101af575f5ffd5b8301601f810185136101bf575f5ffd5b80516001600160401b038111156101d8576101d8610159565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020657610206610159565b60405281815282820160200187101561021d575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610291575f198160200360031b1b821691505b50919050565b60805160a0516121736102cd5f395f8181610679015261123f01525f81816101db015281816106ad0152610e7401526121735ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80636141879e1161009357806384818920116100635780638481892014610248578063be86e0b21461025b578063c0da24201461027e578063f698da2514610291575f5ffd5b80636141879e146101c357806368d6e081146101d65780637c85ac4c1461021557806380c7d3f314610235575f5ffd5b806323c2a3cb116100ce57806323c2a3cb1461015e57806354fd4d501461018657806356d482f51461019b5780635ddb9b5b146101b0575f5ffd5b806304cdbae4146100f4578063082ef73d1461011d578063184674341461013d575b5f5ffd5b6101076101023660046117ab565b610299565b60405161011491906117dd565b60405180910390f35b61013061012b3660046118d7565b61049d565b604051610114919061196d565b61015061014b36600461197f565b6105d0565b604051908152602001610114565b61017161016c3660046119a7565b61063f565b60405163ffffffff9091168152602001610114565b61018e610672565b60405161011491906119f0565b6101ae6101a9366004611a42565b6106a2565b005b6101716101be366004611ab4565b61089f565b6101716101d1366004611ab4565b6108c5565b6101fd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6102286102233660046119a7565b6108eb565b6040516101149190611ace565b610107610243366004611b41565b610a59565b6101fd610256366004611ab4565b610a65565b61026e610269366004611b8c565b610a8e565b6040519015158152602001610114565b61026e61028c366004611c6e565b610b21565b610150610c13565b60605f6102b36102ae36869003860186611ab4565b610cd3565b5f8181526003602052604090205490915063ffffffff8481169116146102ec57604051630cad17b760e31b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff871684529091529020548061032957604051630cad17b760e31b815260040160405180910390fd5b5f82815260056020908152604080832063ffffffff88168452825280832083805290915281206001015490816001600160401b0381111561036c5761036c61181f565b604051908082528060200260200182016040528015610395578160200160208202803683370190505b5090505f5b83811015610490575f85815260056020908152604080832063ffffffff808c168552908352818420908516845282528083206001018054825181850281018501909352808352919290919083018282801561041257602002820191905f5260205f20905b8154815260200190600101908083116103fe575b509394505f93505050505b81518110801561042c57508481105b156104865781818151811061044357610443611ce4565b602002602001015184828151811061045d5761045d611ce4565b602002602001018181516104719190611d0c565b9052508061047e81611d1f565b91505061041d565b505060010161039a565b5093505050505b92915050565b604080518082019091525f8152606060208201525f6104bb85610cd3565b5f81815260046020908152604080832063ffffffff808a1685529252909120549192508416106105315760405162461bcd60e51b815260206004820152601c60248201527f4f70657261746f7220696e646578206f7574206f6620626f756e647300000000604482015260640160405180910390fd5b5f81815260056020908152604080832063ffffffff808916855290835281842090871684528252918290208251808401845281546001600160a01b03168152600182018054855181860281018601909652808652919492938581019392908301828280156105bc57602002820191905f5260205f20905b8154815260200190600101908083116105a8575b5050505050815250509150505b9392505050565b604080517fda346acb3ce99e7c5132bf8cafb159ad8085970ebfdba78007ef0fe163063d14602082015263ffffffff841691810191909152606081018290525f90819060800160405160208183030381529060405280519060200120905061063781610d36565b949350505050565b5f5f61064a84610cd3565b5f90815260046020908152604080832063ffffffff8716845290915290205491505092915050565b606061069d7f0000000000000000000000000000000000000000000000000000000000000000610d7c565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106eb5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106fe6102ae36889003880188611ab4565b5f8181526003602052604090205490915063ffffffff9081169086161161073857604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff8916845290915281208490555b838110156107c45784848281811061077457610774611ce4565b90506020028101906107869190611d37565b5f83815260056020908152604080832063ffffffff808c168552908352818420908616845290915290206107ba8282611d6c565b505060010161075a565b505f818152600360209081526040909120805463ffffffff191663ffffffff88161790556107f490830183611e6f565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b03949094169390931790925561083391908401908401611e8a565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4f588da9ec57976194a79b5594f8f8782923d93013df2b9ed12fe125805011ef9061088f908890889088908890611ea3565b60405180910390a1505050505050565b5f5f6108aa83610cd3565b5f9081526003602052604090205463ffffffff169392505050565b5f5f6108d083610cd3565b5f9081526002602052604090205463ffffffff169392505050565b60605f6108f784610cd3565b5f81815260046020908152604080832063ffffffff8089168552925282205492935082166001600160401b038111156109325761093261181f565b60405190808252806020026020018201604052801561097757816020015b604080518082019091525f8152606060208201528152602001906001900390816109505790505b5090505f5b8263ffffffff168163ffffffff161015610a4f575f84815260056020908152604080832063ffffffff808b16855290835281842090851684528252918290208251808401845281546001600160a01b0316815260018201805485518186028101860190965280865291949293858101939290830182828015610a1b57602002820191905f5260205f20905b815481526020019060010190808311610a07575b505050505081525050828263ffffffff1681518110610a3c57610a3c611ce4565b602090810291909101015260010161097c565b5095945050505050565b60606105c98383610db9565b5f5f610a7083610cd3565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f610a9a8585610db9565b90508251815114610abe5760405163512509d360e11b815260040160405180910390fd5b5f5b8151811015610b1557838181518110610adb57610adb611ce4565b6020026020010151828281518110610af557610af5611ce4565b60200260200101511015610b0d575f925050506105c9565b600101610ac0565b50600195945050505050565b5f5f610b2d8686610db9565b90505f610b41876101026020890189611e8a565b82519091508414610b655760405163512509d360e11b815260040160405180910390fd5b5f5b8251811015610c05575f612710878784818110610b8657610b86611ce4565b9050602002016020810190610b9b9190611fd6565b61ffff16848481518110610bb157610bb1611ce4565b6020026020010151610bc39190611d55565b610bcd919061200b565b905080848381518110610be257610be2611ce4565b60200260200101511015610bfc575f945050505050610637565b50600101610b67565b506001979650505050505050565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f91ab3d17e3a50a9d89e63fd30b92be7f5336b03b287bb946787a83a9d62a27667f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610c80611237565b8051602091820120604051610cb8949392309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60405160208183030381529060405280519060200120905090565b5f815f0151826020015163ffffffff16604051602001610d1e92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526104979061201e565b5f610d3f610c13565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610d88836112ac565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60605f610dce6102ae36869003860186611ab4565b5f8181526002602090815260409091205491925063ffffffff90911690610df790850185611e8a565b610e019190612041565b63ffffffff16421115610e275760405163640fcd6b60e11b815260040160405180910390fd5b610e346020840184611e8a565b5f8281526003602052604090205463ffffffff908116911614610e6a57604051630cad17b760e31b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166364e1df84610ea66020860186611e8a565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa158015610ee6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0a919061205d565b610f2757604051631b14174b60e01b815260040160405180910390fd5b5f610f39856101026020870187611e8a565b90505f81516001600160401b03811115610f5557610f5561181f565b604051908082528060200260200182016040528015610f7e578160200160208202803683370190505b5090505f610f9c610f926020880188611e8a565b87602001356105d0565b90505f80610fea83610fb160408b018b61207c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506112d392505050565b915091508061100c5760405163439cc0cd60e01b815260040160405180910390fd5b5f5b8251811015611229575f83828151811061102a5761102a611ce4565b602002602001015190505f5f905061105d60405180604001604052805f6001600160a01b03168152602001606081525090565b5f5b60045f8c81526020019081526020015f205f8e5f0160208101906110839190611e8a565b63ffffffff1663ffffffff1681526020019081526020015f20548110156111885760055f8c81526020019081526020015f205f8e5f0160208101906110c89190611e8a565b63ffffffff908116825260208083019390935260409182015f90812091851681529083528190208151808301835281546001600160a01b03168152600182018054845181870281018701909552808552919492938584019390929083018282801561115057602002820191905f5260205f20905b81548152602001906001019080831161113c575b5050505050815250509150836001600160a01b0316825f01516001600160a01b0316036111805760019250611188565b60010161105f565b50816111a75760405163439cc0cd60e01b815260040160405180910390fd5b60208101515f5b8151811080156111be5750895181105b15611218578181815181106111d5576111d5611ce4565b60200260200101518a82815181106111ef576111ef611ce4565b602002602001018181516112039190611d0c565b9052508061121081611d1f565b9150506111ae565b50506001909301925061100e915050565b509298975050505050505050565b60605f6112637f0000000000000000000000000000000000000000000000000000000000000000610d7c565b9050805f8151811061127757611277611ce4565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b5f60ff8216601f81111561049757604051632cd44ac360e21b815260040160405180910390fd5b60605f604183516112e491906120be565b1561130257604051634be6321b60e01b815260040160405180910390fd5b5f60418451611311919061200b565b9050806001600160401b0381111561132b5761132b61181f565b604051908082528060200260200182016040528015611354578160200160208202803683370190505b5092505f5b818110156114d657604080516041808252608082019092525f916020820181803683370190505090505f5b60418110156113ef57868161139a856041611d55565b6113a49190611d0c565b815181106113b4576113b4611ce4565b602001015160f81c60f81b8282815181106113d1576113d1611ce4565b60200101906001600160f81b03191690815f1a905350600101611384565b505f5f6113fc89846114e4565b90925090505f816004811115611414576114146120d1565b14158061142857506001600160a01b038216155b1561143b57505f94506114dd9350505050565b5f8411801561147f5750866114516001866120e5565b8151811061146157611461611ce4565b60200260200101516001600160a01b0316826001600160a01b031611155b1561149257505f94506114dd9350505050565b61149f828a855f19611523565b818785815181106114b2576114b2611ce4565b6001600160a01b039290921660209283029190910190910152505050600101611359565b5060019150505b9250929050565b5f5f8251604103611518576020830151604084015160608501515f1a61150c8782858561157b565b945094505050506114dd565b505f905060026114dd565b4281101561154457604051630819bdcd60e01b815260040160405180910390fd5b6115586001600160a01b0385168484611638565b61157557604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115b057505f9050600361162f565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611601573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611629575f6001925092505061162f565b91505f90505b94509492505050565b5f5f5f61164585856114e4565b90925090505f81600481111561165d5761165d6120d1565b14801561167b5750856001600160a01b0316826001600160a01b0316145b8061168c575061168c868686611696565b9695505050505050565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016116be9291906120f8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116fc9190612110565b5f60405180830381855afa9150503d805f8114611734576040519150601f19603f3d011682016040523d82523d5f602084013e611739565b606091505b509150915081801561174d57506020815110155b801561168c57508051630b135d3f60e11b906117729083016020908101908401612126565b149695505050505050565b5f6040828403121561178d575f5ffd5b50919050565b803563ffffffff811681146117a6575f5ffd5b919050565b5f5f606083850312156117bc575f5ffd5b6117c6848461177d565b91506117d460408401611793565b90509250929050565b602080825282518282018190525f918401906040840190835b818110156118145783518352602093840193909201916001016117f6565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561185b5761185b61181f565b604052919050565b6001600160a01b0381168114611877575f5ffd5b50565b5f6040828403121561188a575f5ffd5b604080519081016001600160401b03811182821017156118ac576118ac61181f565b60405290508082356118bd81611863565b81526118cb60208401611793565b60208201525092915050565b5f5f5f608084860312156118e9575f5ffd5b6118f3858561187a565b925061190160408501611793565b915061190f60608501611793565b90509250925092565b80516001600160a01b03168252602080820151604082850181905281519085018190525f929190910190829060608601905b80831015610a4f578351825260208201915060208401935060018301925061194a565b602081525f6105c96020830184611918565b5f5f60408385031215611990575f5ffd5b61199983611793565b946020939093013593505050565b5f5f606083850312156119b8575f5ffd5b6117c6848461187a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105c960208301846119c2565b5f5f83601f840112611a12575f5ffd5b5081356001600160401b03811115611a28575f5ffd5b6020830191508360208260051b85010111156114dd575f5ffd5b5f5f5f5f5f60c08688031215611a56575f5ffd5b611a60878761177d565b9450611a6e60408701611793565b935060608601356001600160401b03811115611a88575f5ffd5b611a9488828901611a02565b9094509250611aa89050876080880161177d565b90509295509295909350565b5f60408284031215611ac4575f5ffd5b6105c9838361187a565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611b2557603f19878603018452611b10858351611918565b94506020938401939190910190600101611af4565b50929695505050505050565b5f6060828403121561178d575f5ffd5b5f5f60608385031215611b52575f5ffd5b611b5c848461177d565b915060408301356001600160401b03811115611b76575f5ffd5b611b8285828601611b31565b9150509250929050565b5f5f5f60808486031215611b9e575f5ffd5b611ba8858561177d565b925060408401356001600160401b03811115611bc2575f5ffd5b611bce86828701611b31565b92505060608401356001600160401b03811115611be9575f5ffd5b8401601f81018613611bf9575f5ffd5b80356001600160401b03811115611c1257611c1261181f565b8060051b611c2260208201611833565b91825260208184018101929081019089841115611c3d575f5ffd5b6020850194505b83851015611c5f578435825260209485019490910190611c44565b80955050505050509250925092565b5f5f5f5f60808587031215611c81575f5ffd5b611c8b868661177d565b935060408501356001600160401b03811115611ca5575f5ffd5b611cb187828801611b31565b93505060608501356001600160401b03811115611ccc575f5ffd5b611cd887828801611a02565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561049757610497611cf8565b5f60018201611d3057611d30611cf8565b5060010190565b5f8235603e19833603018112611d4b575f5ffd5b9190910192915050565b808202811582820484141761049757610497611cf8565b8135611d7781611863565b81546001600160a01b0319166001600160a01b0391909116178155602082013536839003601e19018112611da9575f5ffd5b820180356001600160401b03811115611dc0575f5ffd5b6020820191508060051b3603821315611dd7575f5ffd5b600183016001600160401b03821115611df257611df261181f565b68010000000000000000821115611e0b57611e0b61181f565b805482825580831015611e40575f828152602090208381019082015b80821015611e3d575f8255600182019150611e27565b50505b505f90815260208120905b82811015611e6757833582820155602090930192600101611e4b565b505050505050565b5f60208284031215611e7f575f5ffd5b81356105c981611863565b5f60208284031215611e9a575f5ffd5b6105c982611793565b5f608082018635611eb381611863565b6001600160a01b0316835263ffffffff611ecf60208901611793565b16602084015263ffffffff861660408401526080606084015283905260a0600584901b83018101908301855f603e1936839003015b87821015611fc757868503609f190184528235818112611f22575f5ffd5b89018035611f2f81611863565b6001600160a01b03168652602081013536829003601e19018112611f51575f5ffd5b016020810190356001600160401b03811115611f6b575f5ffd5b8060051b803603831315611f7d575f5ffd5b60406020890181905288018290526001600160fb1b03821115611f9e575f5ffd5b808360608a01376060818901019750505050602083019250602084019350600182019150611f04565b50929998505050505050505050565b5f60208284031215611fe6575f5ffd5b813561ffff811681146105c9575f5ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261201957612019611ff7565b500490565b8051602080830151919081101561178d575f1960209190910360031b1b16919050565b63ffffffff818116838216019081111561049757610497611cf8565b5f6020828403121561206d575f5ffd5b815180151581146105c9575f5ffd5b5f5f8335601e19843603018112612091575f5ffd5b8301803591506001600160401b038211156120aa575f5ffd5b6020019150368190038213156114dd575f5ffd5b5f826120cc576120cc611ff7565b500690565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561049757610497611cf8565b828152604060208201525f61063760408301846119c2565b5f82518060208501845e5f920191825250919050565b5f60208284031215612136575f5ffd5b505191905056fea264697066735822122099b6cf164130d7a4d0a97daca830e99182ed113c305b03bb00f0f064f6896a5464736f6c634300081b0033", + 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: "0x60c060405234801561000f575f5ffd5b5060405161244038038061244083398101604081905261002e9161016d565b6001600160a01b03821660805280806100468161005b565b60a0525061005490506100a1565b5050610297565b5f5f829050601f8151111561008e578260405163305a27a960e01b8152600401610085919061023c565b60405180910390fd5b805161009982610271565b179392505050565b5f54610100900460ff16156101085760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610085565b5f5460ff90811614610157575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561017e575f5ffd5b82516001600160a01b0381168114610194575f5ffd5b60208401519092506001600160401b038111156101af575f5ffd5b8301601f810185136101bf575f5ffd5b80516001600160401b038111156101d8576101d8610159565b604051601f8201601f19908116603f011681016001600160401b038111828210171561020657610206610159565b60405281815282820160200187101561021d575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610291575f198160200360031b1b821691505b50919050565b60805160a0516121736102cd5f395f8181610679015261123f01525f81816101db015281816106ad0152610e7401526121735ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80636141879e1161009357806384818920116100635780638481892014610248578063be86e0b21461025b578063c0da24201461027e578063f698da2514610291575f5ffd5b80636141879e146101c357806368d6e081146101d65780637c85ac4c1461021557806380c7d3f314610235575f5ffd5b806323c2a3cb116100ce57806323c2a3cb1461015e57806354fd4d501461018657806356d482f51461019b5780635ddb9b5b146101b0575f5ffd5b806304cdbae4146100f4578063082ef73d1461011d578063184674341461013d575b5f5ffd5b6101076101023660046117ab565b610299565b60405161011491906117dd565b60405180910390f35b61013061012b3660046118d7565b61049d565b604051610114919061196d565b61015061014b36600461197f565b6105d0565b604051908152602001610114565b61017161016c3660046119a7565b61063f565b60405163ffffffff9091168152602001610114565b61018e610672565b60405161011491906119f0565b6101ae6101a9366004611a42565b6106a2565b005b6101716101be366004611ab4565b61089f565b6101716101d1366004611ab4565b6108c5565b6101fd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6102286102233660046119a7565b6108eb565b6040516101149190611ace565b610107610243366004611b41565b610a59565b6101fd610256366004611ab4565b610a65565b61026e610269366004611b8c565b610a8e565b6040519015158152602001610114565b61026e61028c366004611c6e565b610b21565b610150610c13565b60605f6102b36102ae36869003860186611ab4565b610cd3565b5f8181526003602052604090205490915063ffffffff8481169116146102ec57604051630cad17b760e31b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff871684529091529020548061032957604051630cad17b760e31b815260040160405180910390fd5b5f82815260056020908152604080832063ffffffff88168452825280832083805290915281206001015490816001600160401b0381111561036c5761036c61181f565b604051908082528060200260200182016040528015610395578160200160208202803683370190505b5090505f5b83811015610490575f85815260056020908152604080832063ffffffff808c168552908352818420908516845282528083206001018054825181850281018501909352808352919290919083018282801561041257602002820191905f5260205f20905b8154815260200190600101908083116103fe575b509394505f93505050505b81518110801561042c57508481105b156104865781818151811061044357610443611ce4565b602002602001015184828151811061045d5761045d611ce4565b602002602001018181516104719190611d0c565b9052508061047e81611d1f565b91505061041d565b505060010161039a565b5093505050505b92915050565b604080518082019091525f8152606060208201525f6104bb85610cd3565b5f81815260046020908152604080832063ffffffff808a1685529252909120549192508416106105315760405162461bcd60e51b815260206004820152601c60248201527f4f70657261746f7220696e646578206f7574206f6620626f756e647300000000604482015260640160405180910390fd5b5f81815260056020908152604080832063ffffffff808916855290835281842090871684528252918290208251808401845281546001600160a01b03168152600182018054855181860281018601909652808652919492938581019392908301828280156105bc57602002820191905f5260205f20905b8154815260200190600101908083116105a8575b5050505050815250509150505b9392505050565b604080517fda346acb3ce99e7c5132bf8cafb159ad8085970ebfdba78007ef0fe163063d14602082015263ffffffff841691810191909152606081018290525f90819060800160405160208183030381529060405280519060200120905061063781610d36565b949350505050565b5f5f61064a84610cd3565b5f90815260046020908152604080832063ffffffff8716845290915290205491505092915050565b606061069d7f0000000000000000000000000000000000000000000000000000000000000000610d7c565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106eb5760405163030c1b6b60e11b815260040160405180910390fd5b5f6106fe6102ae36889003880188611ab4565b5f8181526003602052604090205490915063ffffffff9081169086161161073857604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020908152604080832063ffffffff8916845290915281208490555b838110156107c45784848281811061077457610774611ce4565b90506020028101906107869190611d37565b5f83815260056020908152604080832063ffffffff808c168552908352818420908616845290915290206107ba8282611d6c565b505060010161075a565b505f818152600360209081526040909120805463ffffffff191663ffffffff88161790556107f490830183611e6f565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b03949094169390931790925561083391908401908401611e8a565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4f588da9ec57976194a79b5594f8f8782923d93013df2b9ed12fe125805011ef9061088f908890889088908890611ea3565b60405180910390a1505050505050565b5f5f6108aa83610cd3565b5f9081526003602052604090205463ffffffff169392505050565b5f5f6108d083610cd3565b5f9081526002602052604090205463ffffffff169392505050565b60605f6108f784610cd3565b5f81815260046020908152604080832063ffffffff8089168552925282205492935082166001600160401b038111156109325761093261181f565b60405190808252806020026020018201604052801561097757816020015b604080518082019091525f8152606060208201528152602001906001900390816109505790505b5090505f5b8263ffffffff168163ffffffff161015610a4f575f84815260056020908152604080832063ffffffff808b16855290835281842090851684528252918290208251808401845281546001600160a01b0316815260018201805485518186028101860190965280865291949293858101939290830182828015610a1b57602002820191905f5260205f20905b815481526020019060010190808311610a07575b505050505081525050828263ffffffff1681518110610a3c57610a3c611ce4565b602090810291909101015260010161097c565b5095945050505050565b60606105c98383610db9565b5f5f610a7083610cd3565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f610a9a8585610db9565b90508251815114610abe5760405163512509d360e11b815260040160405180910390fd5b5f5b8151811015610b1557838181518110610adb57610adb611ce4565b6020026020010151828281518110610af557610af5611ce4565b60200260200101511015610b0d575f925050506105c9565b600101610ac0565b50600195945050505050565b5f5f610b2d8686610db9565b90505f610b41876101026020890189611e8a565b82519091508414610b655760405163512509d360e11b815260040160405180910390fd5b5f5b8251811015610c05575f612710878784818110610b8657610b86611ce4565b9050602002016020810190610b9b9190611fd6565b61ffff16848481518110610bb157610bb1611ce4565b6020026020010151610bc39190611d55565b610bcd919061200b565b905080848381518110610be257610be2611ce4565b60200260200101511015610bfc575f945050505050610637565b50600101610b67565b506001979650505050505050565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f91ab3d17e3a50a9d89e63fd30b92be7f5336b03b287bb946787a83a9d62a27667f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610c80611237565b8051602091820120604051610cb8949392309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60405160208183030381529060405280519060200120905090565b5f815f0151826020015163ffffffff16604051602001610d1e92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526104979061201e565b5f610d3f610c13565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610d88836112ac565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60605f610dce6102ae36869003860186611ab4565b5f8181526002602090815260409091205491925063ffffffff90911690610df790850185611e8a565b610e019190612041565b63ffffffff16421115610e275760405163640fcd6b60e11b815260040160405180910390fd5b610e346020840184611e8a565b5f8281526003602052604090205463ffffffff908116911614610e6a57604051630cad17b760e31b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166364e1df84610ea66020860186611e8a565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa158015610ee6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0a919061205d565b610f2757604051631b14174b60e01b815260040160405180910390fd5b5f610f39856101026020870187611e8a565b90505f81516001600160401b03811115610f5557610f5561181f565b604051908082528060200260200182016040528015610f7e578160200160208202803683370190505b5090505f610f9c610f926020880188611e8a565b87602001356105d0565b90505f80610fea83610fb160408b018b61207c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506112d392505050565b915091508061100c5760405163439cc0cd60e01b815260040160405180910390fd5b5f5b8251811015611229575f83828151811061102a5761102a611ce4565b602002602001015190505f5f905061105d60405180604001604052805f6001600160a01b03168152602001606081525090565b5f5b60045f8c81526020019081526020015f205f8e5f0160208101906110839190611e8a565b63ffffffff1663ffffffff1681526020019081526020015f20548110156111885760055f8c81526020019081526020015f205f8e5f0160208101906110c89190611e8a565b63ffffffff908116825260208083019390935260409182015f90812091851681529083528190208151808301835281546001600160a01b03168152600182018054845181870281018701909552808552919492938584019390929083018282801561115057602002820191905f5260205f20905b81548152602001906001019080831161113c575b5050505050815250509150836001600160a01b0316825f01516001600160a01b0316036111805760019250611188565b60010161105f565b50816111a75760405163439cc0cd60e01b815260040160405180910390fd5b60208101515f5b8151811080156111be5750895181105b15611218578181815181106111d5576111d5611ce4565b60200260200101518a82815181106111ef576111ef611ce4565b602002602001018181516112039190611d0c565b9052508061121081611d1f565b9150506111ae565b50506001909301925061100e915050565b509298975050505050505050565b60605f6112637f0000000000000000000000000000000000000000000000000000000000000000610d7c565b9050805f8151811061127757611277611ce4565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b5f60ff8216601f81111561049757604051632cd44ac360e21b815260040160405180910390fd5b60605f604183516112e491906120be565b1561130257604051634be6321b60e01b815260040160405180910390fd5b5f60418451611311919061200b565b9050806001600160401b0381111561132b5761132b61181f565b604051908082528060200260200182016040528015611354578160200160208202803683370190505b5092505f5b818110156114d657604080516041808252608082019092525f916020820181803683370190505090505f5b60418110156113ef57868161139a856041611d55565b6113a49190611d0c565b815181106113b4576113b4611ce4565b602001015160f81c60f81b8282815181106113d1576113d1611ce4565b60200101906001600160f81b03191690815f1a905350600101611384565b505f5f6113fc89846114e4565b90925090505f816004811115611414576114146120d1565b14158061142857506001600160a01b038216155b1561143b57505f94506114dd9350505050565b5f8411801561147f5750866114516001866120e5565b8151811061146157611461611ce4565b60200260200101516001600160a01b0316826001600160a01b031611155b1561149257505f94506114dd9350505050565b61149f828a855f19611523565b818785815181106114b2576114b2611ce4565b6001600160a01b039290921660209283029190910190910152505050600101611359565b5060019150505b9250929050565b5f5f8251604103611518576020830151604084015160608501515f1a61150c8782858561157b565b945094505050506114dd565b505f905060026114dd565b4281101561154457604051630819bdcd60e01b815260040160405180910390fd5b6115586001600160a01b0385168484611638565b61157557604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115b057505f9050600361162f565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611601573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611629575f6001925092505061162f565b91505f90505b94509492505050565b5f5f5f61164585856114e4565b90925090505f81600481111561165d5761165d6120d1565b14801561167b5750856001600160a01b0316826001600160a01b0316145b8061168c575061168c868686611696565b9695505050505050565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016116be9291906120f8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116fc9190612110565b5f60405180830381855afa9150503d805f8114611734576040519150601f19603f3d011682016040523d82523d5f602084013e611739565b606091505b509150915081801561174d57506020815110155b801561168c57508051630b135d3f60e11b906117729083016020908101908401612126565b149695505050505050565b5f6040828403121561178d575f5ffd5b50919050565b803563ffffffff811681146117a6575f5ffd5b919050565b5f5f606083850312156117bc575f5ffd5b6117c6848461177d565b91506117d460408401611793565b90509250929050565b602080825282518282018190525f918401906040840190835b818110156118145783518352602093840193909201916001016117f6565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561185b5761185b61181f565b604052919050565b6001600160a01b0381168114611877575f5ffd5b50565b5f6040828403121561188a575f5ffd5b604080519081016001600160401b03811182821017156118ac576118ac61181f565b60405290508082356118bd81611863565b81526118cb60208401611793565b60208201525092915050565b5f5f5f608084860312156118e9575f5ffd5b6118f3858561187a565b925061190160408501611793565b915061190f60608501611793565b90509250925092565b80516001600160a01b03168252602080820151604082850181905281519085018190525f929190910190829060608601905b80831015610a4f578351825260208201915060208401935060018301925061194a565b602081525f6105c96020830184611918565b5f5f60408385031215611990575f5ffd5b61199983611793565b946020939093013593505050565b5f5f606083850312156119b8575f5ffd5b6117c6848461187a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105c960208301846119c2565b5f5f83601f840112611a12575f5ffd5b5081356001600160401b03811115611a28575f5ffd5b6020830191508360208260051b85010111156114dd575f5ffd5b5f5f5f5f5f60c08688031215611a56575f5ffd5b611a60878761177d565b9450611a6e60408701611793565b935060608601356001600160401b03811115611a88575f5ffd5b611a9488828901611a02565b9094509250611aa89050876080880161177d565b90509295509295909350565b5f60408284031215611ac4575f5ffd5b6105c9838361187a565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611b2557603f19878603018452611b10858351611918565b94506020938401939190910190600101611af4565b50929695505050505050565b5f6060828403121561178d575f5ffd5b5f5f60608385031215611b52575f5ffd5b611b5c848461177d565b915060408301356001600160401b03811115611b76575f5ffd5b611b8285828601611b31565b9150509250929050565b5f5f5f60808486031215611b9e575f5ffd5b611ba8858561177d565b925060408401356001600160401b03811115611bc2575f5ffd5b611bce86828701611b31565b92505060608401356001600160401b03811115611be9575f5ffd5b8401601f81018613611bf9575f5ffd5b80356001600160401b03811115611c1257611c1261181f565b8060051b611c2260208201611833565b91825260208184018101929081019089841115611c3d575f5ffd5b6020850194505b83851015611c5f578435825260209485019490910190611c44565b80955050505050509250925092565b5f5f5f5f60808587031215611c81575f5ffd5b611c8b868661177d565b935060408501356001600160401b03811115611ca5575f5ffd5b611cb187828801611b31565b93505060608501356001600160401b03811115611ccc575f5ffd5b611cd887828801611a02565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561049757610497611cf8565b5f60018201611d3057611d30611cf8565b5060010190565b5f8235603e19833603018112611d4b575f5ffd5b9190910192915050565b808202811582820484141761049757610497611cf8565b8135611d7781611863565b81546001600160a01b0319166001600160a01b0391909116178155602082013536839003601e19018112611da9575f5ffd5b820180356001600160401b03811115611dc0575f5ffd5b6020820191508060051b3603821315611dd7575f5ffd5b600183016001600160401b03821115611df257611df261181f565b68010000000000000000821115611e0b57611e0b61181f565b805482825580831015611e40575f828152602090208381019082015b80821015611e3d575f8255600182019150611e27565b50505b505f90815260208120905b82811015611e6757833582820155602090930192600101611e4b565b505050505050565b5f60208284031215611e7f575f5ffd5b81356105c981611863565b5f60208284031215611e9a575f5ffd5b6105c982611793565b5f608082018635611eb381611863565b6001600160a01b0316835263ffffffff611ecf60208901611793565b16602084015263ffffffff861660408401526080606084015283905260a0600584901b83018101908301855f603e1936839003015b87821015611fc757868503609f190184528235818112611f22575f5ffd5b89018035611f2f81611863565b6001600160a01b03168652602081013536829003601e19018112611f51575f5ffd5b016020810190356001600160401b03811115611f6b575f5ffd5b8060051b803603831315611f7d575f5ffd5b60406020890181905288018290526001600160fb1b03821115611f9e575f5ffd5b808360608a01376060818901019750505050602083019250602084019350600182019150611f04565b50929998505050505050505050565b5f60208284031215611fe6575f5ffd5b813561ffff811681146105c9575f5ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261201957612019611ff7565b500490565b8051602080830151919081101561178d575f1960209190910360031b1b16919050565b63ffffffff818116838216019081111561049757610497611cf8565b5f6020828403121561206d575f5ffd5b815180151581146105c9575f5ffd5b5f5f8335601e19843603018112612091575f5ffd5b8301803591506001600160401b038211156120aa575f5ffd5b6020019150368190038213156114dd575f5ffd5b5f826120cc576120cc611ff7565b500690565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561049757610497611cf8565b828152604060208201525f61063760408301846119c2565b5f82518060208501845e5f920191825250919050565b5f60208284031215612136575f5ffd5b505191905056fea26469706673582212200bbcbd6931eb1e4b9a88e51b2b31dcb43cd54bebcc7cdbde1c749c08e86239a464736f6c634300081b0033", } // ECDSACertificateVerifierABI is the input ABI used to generate the binding from. @@ -323,15 +323,15 @@ func (_ECDSACertificateVerifier *ECDSACertificateVerifierCallerSession) GetOpera // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_ECDSACertificateVerifier *ECDSACertificateVerifierCaller) GetOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierCaller) GetOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { var out []interface{} err := _ECDSACertificateVerifier.contract.Call(opts, &out, "getOperatorInfo", operatorSet, referenceTimestamp, operatorIndex) if err != nil { - return *new(IECDSATableCalculatorTypesECDSAOperatorInfo), err + return *new(IOperatorTableCalculatorTypesECDSAOperatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IECDSATableCalculatorTypesECDSAOperatorInfo)).(*IECDSATableCalculatorTypesECDSAOperatorInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesECDSAOperatorInfo)).(*IOperatorTableCalculatorTypesECDSAOperatorInfo) return out0, err @@ -340,29 +340,29 @@ func (_ECDSACertificateVerifier *ECDSACertificateVerifierCaller) GetOperatorInfo // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_ECDSACertificateVerifier *ECDSACertificateVerifierSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifier.Contract.GetOperatorInfo(&_ECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_ECDSACertificateVerifier *ECDSACertificateVerifierCallerSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierCallerSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifier.Contract.GetOperatorInfo(&_ECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_ECDSACertificateVerifier *ECDSACertificateVerifierCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { var out []interface{} err := _ECDSACertificateVerifier.contract.Call(opts, &out, "getOperatorInfos", operatorSet, referenceTimestamp) if err != nil { - return *new([]IECDSATableCalculatorTypesECDSAOperatorInfo), err + return *new([]IOperatorTableCalculatorTypesECDSAOperatorInfo), err } - out0 := *abi.ConvertType(out[0], new([]IECDSATableCalculatorTypesECDSAOperatorInfo)).(*[]IECDSATableCalculatorTypesECDSAOperatorInfo) + out0 := *abi.ConvertType(out[0], new([]IOperatorTableCalculatorTypesECDSAOperatorInfo)).(*[]IOperatorTableCalculatorTypesECDSAOperatorInfo) return out0, err @@ -371,14 +371,14 @@ func (_ECDSACertificateVerifier *ECDSACertificateVerifierCaller) GetOperatorInfo // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_ECDSACertificateVerifier *ECDSACertificateVerifierSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifier.Contract.GetOperatorInfos(&_ECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_ECDSACertificateVerifier *ECDSACertificateVerifierCallerSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierCallerSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifier.Contract.GetOperatorInfos(&_ECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } @@ -664,21 +664,21 @@ func (_ECDSACertificateVerifier *ECDSACertificateVerifierCallerSession) Version( // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_ECDSACertificateVerifier *ECDSACertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _ECDSACertificateVerifier.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_ECDSACertificateVerifier *ECDSACertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _ECDSACertificateVerifier.Contract.UpdateOperatorTable(&_ECDSACertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_ECDSACertificateVerifier *ECDSACertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_ECDSACertificateVerifier *ECDSACertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _ECDSACertificateVerifier.Contract.UpdateOperatorTable(&_ECDSACertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } @@ -1157,7 +1157,7 @@ func (it *ECDSACertificateVerifierTableUpdatedIterator) Close() error { type ECDSACertificateVerifierTableUpdated struct { OperatorSet OperatorSet ReferenceTimestamp uint32 - OperatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo + OperatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo Raw types.Log // Blockchain specific contextual infos } diff --git a/pkg/bindings/ECDSACertificateVerifierStorage/binding.go b/pkg/bindings/ECDSACertificateVerifierStorage/binding.go index 1665383b9d..a0e9f5c4b3 100644 --- a/pkg/bindings/ECDSACertificateVerifierStorage/binding.go +++ b/pkg/bindings/ECDSACertificateVerifierStorage/binding.go @@ -42,8 +42,8 @@ type IECDSACertificateVerifierTypesECDSACertificate struct { Sig []byte } -// IECDSATableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IECDSATableCalculatorTypesECDSAOperatorInfo struct { +// IOperatorTableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesECDSAOperatorInfo struct { Pubkey common.Address Weights []*big.Int } @@ -56,7 +56,7 @@ type OperatorSet struct { // ECDSACertificateVerifierStorageMetaData contains all meta data concerning the ECDSACertificateVerifierStorage contract. var ECDSACertificateVerifierStorageMetaData = &bind.MetaData{ - ABI: "[{\"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\":\"structIECDSATableCalculatorTypes.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\":\"structIECDSATableCalculatorTypes.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\":\"structIECDSATableCalculatorTypes.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\":\"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\":\"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\":\"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\":\"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\":\"nonpayable\"},{\"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\":\"structIECDSATableCalculatorTypes.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\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", + ABI: "[{\"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\":\"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\":\"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\":\"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\":\"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\":\"nonpayable\"},{\"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\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", } // ECDSACertificateVerifierStorageABI is the input ABI used to generate the binding from. @@ -301,15 +301,15 @@ func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCallerSes // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCaller) GetOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCaller) GetOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { var out []interface{} err := _ECDSACertificateVerifierStorage.contract.Call(opts, &out, "getOperatorInfo", operatorSet, referenceTimestamp, operatorIndex) if err != nil { - return *new(IECDSATableCalculatorTypesECDSAOperatorInfo), err + return *new(IOperatorTableCalculatorTypesECDSAOperatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IECDSATableCalculatorTypesECDSAOperatorInfo)).(*IECDSATableCalculatorTypesECDSAOperatorInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesECDSAOperatorInfo)).(*IOperatorTableCalculatorTypesECDSAOperatorInfo) return out0, err @@ -318,29 +318,29 @@ func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCaller) G // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifierStorage.Contract.GetOperatorInfo(&_ECDSACertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCallerSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCallerSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifierStorage.Contract.GetOperatorInfo(&_ECDSACertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { var out []interface{} err := _ECDSACertificateVerifierStorage.contract.Call(opts, &out, "getOperatorInfos", operatorSet, referenceTimestamp) if err != nil { - return *new([]IECDSATableCalculatorTypesECDSAOperatorInfo), err + return *new([]IOperatorTableCalculatorTypesECDSAOperatorInfo), err } - out0 := *abi.ConvertType(out[0], new([]IECDSATableCalculatorTypesECDSAOperatorInfo)).(*[]IECDSATableCalculatorTypesECDSAOperatorInfo) + out0 := *abi.ConvertType(out[0], new([]IOperatorTableCalculatorTypesECDSAOperatorInfo)).(*[]IOperatorTableCalculatorTypesECDSAOperatorInfo) return out0, err @@ -349,14 +349,14 @@ func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCaller) G // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifierStorage.Contract.GetOperatorInfos(&_ECDSACertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp) } // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCallerSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCallerSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _ECDSACertificateVerifierStorage.Contract.GetOperatorInfos(&_ECDSACertificateVerifierStorage.CallOpts, operatorSet, referenceTimestamp) } @@ -518,21 +518,21 @@ func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageCallerSes // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _ECDSACertificateVerifierStorage.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _ECDSACertificateVerifierStorage.Contract.UpdateOperatorTable(&_ECDSACertificateVerifierStorage.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_ECDSACertificateVerifierStorage *ECDSACertificateVerifierStorageTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _ECDSACertificateVerifierStorage.Contract.UpdateOperatorTable(&_ECDSACertificateVerifierStorage.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } @@ -940,7 +940,7 @@ func (it *ECDSACertificateVerifierStorageTableUpdatedIterator) Close() error { type ECDSACertificateVerifierStorageTableUpdated struct { OperatorSet OperatorSet ReferenceTimestamp uint32 - OperatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo + OperatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo Raw types.Log // Blockchain specific contextual infos } diff --git a/pkg/bindings/ECDSATableCalculator/binding.go b/pkg/bindings/ECDSATableCalculator/binding.go deleted file mode 100644 index 7cac254104..0000000000 --- a/pkg/bindings/ECDSATableCalculator/binding.go +++ /dev/null @@ -1,580 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ECDSATableCalculator - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IECDSATableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IECDSATableCalculatorTypesECDSAOperatorInfo struct { - Pubkey common.Address - Weights []*big.Int -} - -// OperatorSet is an auto generated low-level Go binding around an user-defined struct. -type OperatorSet struct { - Avs common.Address - Id uint32 -} - -// ECDSATableCalculatorMetaData contains all meta data concerning the ECDSATableCalculator contract. -var ECDSATableCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_keyRegistrar\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_LOOKAHEAD_BLOCKS\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"LOOKAHEAD_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeight\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeights\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"weights\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyRegistrar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"LookaheadBlocksSet\",\"inputs\":[{\"name\":\"lookaheadBlocks\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"LookaheadBlocksTooHigh\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b5060405161108938038061108983398101604081905261002e91610060565b6001600160a01b03928316608052911660a05260c0526100a0565b6001600160a01b038116811461005d575f5ffd5b50565b5f5f5f60608486031215610072575f5ffd5b835161007d81610049565b602085015190935061008e81610049565b80925050604084015190509250925092565b60805160a05160c051610f966100f35f395f818161012801526103de01525f8181610170015281816102890152818161031901526103b101525f818160c90152818161070e01526107ba0152610f965ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c806341ee6d0e1161005857806341ee6d0e146101035780635e120ffc1461012357806371ca71d91461014a578063ca8aa7c71461016b575f5ffd5b80631088794a1461007e578063124c87e0146100a45780633ec45c7e146100c4575b5f5ffd5b61009161008c366004610951565b610192565b6040519081526020015b60405180910390f35b6100b76100b2366004610987565b610232565b60405161009b91906109e2565b6100eb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161009b565b610116610111366004610987565b61023d565b60405161009b9190610a65565b6100917f000000000000000000000000000000000000000000000000000000000000000081565b61015d610158366004610987565b61026e565b60405161009b929190610ad3565b6100eb7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f5f61019e85610283565b90925090505f5b825181101561022557846001600160a01b03168382815181106101ca576101ca610b48565b60200260200101516001600160a01b03160361021d578181815181106101f2576101f2610b48565b60200260200101515f8151811061020b5761020b610b48565b6020026020010151935050505061022c565b6001016101a5565b505f925050505b92915050565b606061022c82610640565b606061024882610640565b60405160200161025891906109e2565b6040516020818303038152906040529050919050565b60608061027a83610283565b91509150915091565b6060805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e875dba856040518263ffffffff1660e01b81526004016102d39190610b95565b5f60405180830381865afa1580156102ed573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103149190810190610c0b565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634177a87c866040518263ffffffff1660e01b81526004016103639190610b95565b5f60405180830381865afa15801561037d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a49190810190610caa565b90505f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016632bab2c4a8785856104037f000000000000000000000000000000000000000000000000000000000000000043610d4e565b6040518563ffffffff1660e01b81526004016104229493929190610d61565b5f60405180830381865afa15801561043c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104639190810190610dda565b9050825167ffffffffffffffff81111561047f5761047f610ba3565b6040519080825280602002602001820160405280156104a8578160200160208202803683370190505b509450825167ffffffffffffffff8111156104c5576104c5610ba3565b6040519080825280602002602001820160405280156104f857816020015b60608152602001906001900390816104e35790505b5093505f805b8451811015610630575f805b855181101561055b5784838151811061052557610525610b48565b6020026020010151818151811061053e5761053e610b48565b6020026020010151826105519190610d4e565b915060010161050a565b5080156106275760408051600180825281830190925290602080830190803683370190505087848151811061059257610592610b48565b6020026020010181905250808784815181106105b0576105b0610b48565b60200260200101515f815181106105c9576105c9610b48565b6020026020010181815250508582815181106105e7576105e7610b48565b602002602001015188848151811061060157610601610b48565b6001600160a01b03909216602092830291909101909101528261062381610ee8565b9350505b506001016104fe565b5080865280855250505050915091565b60605f5f61064d84610283565b9150915080515f0361069e57604080515f8082526020820190925290610695565b604080518082019091525f81526060602082015281526020019060019003908161066e5790505b50949350505050565b815167ffffffffffffffff8111156106b8576106b8610ba3565b6040519080825280602002602001820160405280156106fd57816020015b604080518082019091525f8152606060208201528152602001906001900390816106d65790505b5092505f805b83518110156108cc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd30a0b98786848151811061074e5761074e610b48565b60200260200101516040518363ffffffff1660e01b8152600401610773929190610f00565b602060405180830381865afa15801561078e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b29190610f26565b156108c4575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633b32a7bd888785815181106107fa576107fa610b48565b60200260200101516040518363ffffffff1660e01b815260040161081f929190610f00565b602060405180830381865afa15801561083a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085e9190610f45565b90506040518060400160405280826001600160a01b0316815260200185848151811061088c5761088c610b48565b60200260200101518152508684815181106108a9576108a9610b48565b602002602001018190525082806108bf90610ee8565b935050505b600101610703565b50805f0361091a57604080515f8082526020820190925290610910565b604080518082019091525f8152606060208201528152602001906001900390816108e95790505b5095945050505050565b8352509092915050565b5f60408284031215610934575f5ffd5b50919050565b6001600160a01b038116811461094e575f5ffd5b50565b5f5f60608385031215610962575f5ffd5b61096c8484610924565b9150604083013561097c8161093a565b809150509250929050565b5f60408284031215610997575f5ffd5b6109a18383610924565b9392505050565b5f8151808452602084019350602083015f5b828110156109d85781518652602095860195909101906001016109ba565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015610a5957868503603f19018452815180516001600160a01b03168652602090810151604091870182905290610a43908701826109a8565b9550506020938401939190910190600101610a08565b50929695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8151808452602084019350602083015f5b828110156109d85781516001600160a01b0316865260209586019590910190600101610aac565b604081525f610ae56040830185610a9a565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015610b3a57601f19868403018552610b248383516109a8565b6020958601959093509190910190600101610b08565b509098975050505050505050565b634e487b7160e01b5f52603260045260245ffd5b8035610b678161093a565b6001600160a01b03168252602081013563ffffffff8116808214610b89575f5ffd5b80602085015250505050565b6040810161022c8284610b5c565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610be057610be0610ba3565b604052919050565b5f67ffffffffffffffff821115610c0157610c01610ba3565b5060051b60200190565b5f60208284031215610c1b575f5ffd5b815167ffffffffffffffff811115610c31575f5ffd5b8201601f81018413610c41575f5ffd5b8051610c54610c4f82610be8565b610bb7565b8082825260208201915060208360051b850101925086831115610c75575f5ffd5b6020840193505b82841015610ca0578351610c8f8161093a565b825260209384019390910190610c7c565b9695505050505050565b5f60208284031215610cba575f5ffd5b815167ffffffffffffffff811115610cd0575f5ffd5b8201601f81018413610ce0575f5ffd5b8051610cee610c4f82610be8565b8082825260208201915060208360051b850101925086831115610d0f575f5ffd5b6020840193505b82841015610ca0578351610d298161093a565b825260209384019390910190610d16565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561022c5761022c610d3a565b610d6b8186610b5c565b60a060408201525f610d8060a0830186610a9a565b8281036060840152845180825260208087019201905f5b81811015610dbe5783516001600160a01b0316835260209384019390920191600101610d97565b5050809250505063ffffffff8316608083015295945050505050565b5f60208284031215610dea575f5ffd5b815167ffffffffffffffff811115610e00575f5ffd5b8201601f81018413610e10575f5ffd5b8051610e1e610c4f82610be8565b8082825260208201915060208360051b850101925086831115610e3f575f5ffd5b602084015b83811015610edd57805167ffffffffffffffff811115610e62575f5ffd5b8501603f81018913610e72575f5ffd5b6020810151610e83610c4f82610be8565b808282526020820191506020808460051b8601010192508b831115610ea6575f5ffd5b6040840193505b82841015610ec8578351825260209384019390910190610ead565b86525050602093840193919091019050610e44565b509695505050505050565b5f60018201610ef957610ef9610d3a565b5060010190565b60608101610f0e8285610b5c565b6001600160a01b039290921660409190910152919050565b5f60208284031215610f36575f5ffd5b815180151581146109a1575f5ffd5b5f60208284031215610f55575f5ffd5b81516109a18161093a56fea2646970667358221220d84a68511f506942f3e0fa8d48df5dd9dda5a4c230f3307af1fd784b19b4d5c264736f6c634300081b0033", -} - -// ECDSATableCalculatorABI is the input ABI used to generate the binding from. -// Deprecated: Use ECDSATableCalculatorMetaData.ABI instead. -var ECDSATableCalculatorABI = ECDSATableCalculatorMetaData.ABI - -// ECDSATableCalculatorBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ECDSATableCalculatorMetaData.Bin instead. -var ECDSATableCalculatorBin = ECDSATableCalculatorMetaData.Bin - -// DeployECDSATableCalculator deploys a new Ethereum contract, binding an instance of ECDSATableCalculator to it. -func DeployECDSATableCalculator(auth *bind.TransactOpts, backend bind.ContractBackend, _keyRegistrar common.Address, _allocationManager common.Address, _LOOKAHEAD_BLOCKS *big.Int) (common.Address, *types.Transaction, *ECDSATableCalculator, error) { - parsed, err := ECDSATableCalculatorMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ECDSATableCalculatorBin), backend, _keyRegistrar, _allocationManager, _LOOKAHEAD_BLOCKS) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ECDSATableCalculator{ECDSATableCalculatorCaller: ECDSATableCalculatorCaller{contract: contract}, ECDSATableCalculatorTransactor: ECDSATableCalculatorTransactor{contract: contract}, ECDSATableCalculatorFilterer: ECDSATableCalculatorFilterer{contract: contract}}, nil -} - -// ECDSATableCalculator is an auto generated Go binding around an Ethereum contract. -type ECDSATableCalculator struct { - ECDSATableCalculatorCaller // Read-only binding to the contract - ECDSATableCalculatorTransactor // Write-only binding to the contract - ECDSATableCalculatorFilterer // Log filterer for contract events -} - -// ECDSATableCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. -type ECDSATableCalculatorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ECDSATableCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ECDSATableCalculatorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ECDSATableCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ECDSATableCalculatorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ECDSATableCalculatorSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ECDSATableCalculatorSession struct { - Contract *ECDSATableCalculator // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ECDSATableCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ECDSATableCalculatorCallerSession struct { - Contract *ECDSATableCalculatorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ECDSATableCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ECDSATableCalculatorTransactorSession struct { - Contract *ECDSATableCalculatorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ECDSATableCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. -type ECDSATableCalculatorRaw struct { - Contract *ECDSATableCalculator // Generic contract binding to access the raw methods on -} - -// ECDSATableCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ECDSATableCalculatorCallerRaw struct { - Contract *ECDSATableCalculatorCaller // Generic read-only contract binding to access the raw methods on -} - -// ECDSATableCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ECDSATableCalculatorTransactorRaw struct { - Contract *ECDSATableCalculatorTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewECDSATableCalculator creates a new instance of ECDSATableCalculator, bound to a specific deployed contract. -func NewECDSATableCalculator(address common.Address, backend bind.ContractBackend) (*ECDSATableCalculator, error) { - contract, err := bindECDSATableCalculator(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ECDSATableCalculator{ECDSATableCalculatorCaller: ECDSATableCalculatorCaller{contract: contract}, ECDSATableCalculatorTransactor: ECDSATableCalculatorTransactor{contract: contract}, ECDSATableCalculatorFilterer: ECDSATableCalculatorFilterer{contract: contract}}, nil -} - -// NewECDSATableCalculatorCaller creates a new read-only instance of ECDSATableCalculator, bound to a specific deployed contract. -func NewECDSATableCalculatorCaller(address common.Address, caller bind.ContractCaller) (*ECDSATableCalculatorCaller, error) { - contract, err := bindECDSATableCalculator(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ECDSATableCalculatorCaller{contract: contract}, nil -} - -// NewECDSATableCalculatorTransactor creates a new write-only instance of ECDSATableCalculator, bound to a specific deployed contract. -func NewECDSATableCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*ECDSATableCalculatorTransactor, error) { - contract, err := bindECDSATableCalculator(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ECDSATableCalculatorTransactor{contract: contract}, nil -} - -// NewECDSATableCalculatorFilterer creates a new log filterer instance of ECDSATableCalculator, bound to a specific deployed contract. -func NewECDSATableCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*ECDSATableCalculatorFilterer, error) { - contract, err := bindECDSATableCalculator(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ECDSATableCalculatorFilterer{contract: contract}, nil -} - -// bindECDSATableCalculator binds a generic wrapper to an already deployed contract. -func bindECDSATableCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ECDSATableCalculatorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ECDSATableCalculator *ECDSATableCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ECDSATableCalculator.Contract.ECDSATableCalculatorCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ECDSATableCalculator *ECDSATableCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ECDSATableCalculator.Contract.ECDSATableCalculatorTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ECDSATableCalculator *ECDSATableCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ECDSATableCalculator.Contract.ECDSATableCalculatorTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ECDSATableCalculator *ECDSATableCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ECDSATableCalculator.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ECDSATableCalculator *ECDSATableCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ECDSATableCalculator.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ECDSATableCalculator *ECDSATableCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ECDSATableCalculator.Contract.contract.Transact(opts, method, params...) -} - -// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. -// -// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) -func (_ECDSATableCalculator *ECDSATableCalculatorCaller) LOOKAHEADBLOCKS(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ECDSATableCalculator.contract.Call(opts, &out, "LOOKAHEAD_BLOCKS") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. -// -// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) -func (_ECDSATableCalculator *ECDSATableCalculatorSession) LOOKAHEADBLOCKS() (*big.Int, error) { - return _ECDSATableCalculator.Contract.LOOKAHEADBLOCKS(&_ECDSATableCalculator.CallOpts) -} - -// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. -// -// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) -func (_ECDSATableCalculator *ECDSATableCalculatorCallerSession) LOOKAHEADBLOCKS() (*big.Int, error) { - return _ECDSATableCalculator.Contract.LOOKAHEADBLOCKS(&_ECDSATableCalculator.CallOpts) -} - -// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. -// -// Solidity: function allocationManager() view returns(address) -func (_ECDSATableCalculator *ECDSATableCalculatorCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ECDSATableCalculator.contract.Call(opts, &out, "allocationManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. -// -// Solidity: function allocationManager() view returns(address) -func (_ECDSATableCalculator *ECDSATableCalculatorSession) AllocationManager() (common.Address, error) { - return _ECDSATableCalculator.Contract.AllocationManager(&_ECDSATableCalculator.CallOpts) -} - -// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. -// -// Solidity: function allocationManager() view returns(address) -func (_ECDSATableCalculator *ECDSATableCalculatorCallerSession) AllocationManager() (common.Address, error) { - return _ECDSATableCalculator.Contract.AllocationManager(&_ECDSATableCalculator.CallOpts) -} - -// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. -// -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint256[])[] operatorInfos) -func (_ECDSATableCalculator *ECDSATableCalculatorCaller) CalculateOperatorTable(opts *bind.CallOpts, operatorSet OperatorSet) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { - var out []interface{} - err := _ECDSATableCalculator.contract.Call(opts, &out, "calculateOperatorTable", operatorSet) - - if err != nil { - return *new([]IECDSATableCalculatorTypesECDSAOperatorInfo), err - } - - out0 := *abi.ConvertType(out[0], new([]IECDSATableCalculatorTypesECDSAOperatorInfo)).(*[]IECDSATableCalculatorTypesECDSAOperatorInfo) - - return out0, err - -} - -// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. -// -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint256[])[] operatorInfos) -func (_ECDSATableCalculator *ECDSATableCalculatorSession) CalculateOperatorTable(operatorSet OperatorSet) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { - return _ECDSATableCalculator.Contract.CalculateOperatorTable(&_ECDSATableCalculator.CallOpts, operatorSet) -} - -// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. -// -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint256[])[] operatorInfos) -func (_ECDSATableCalculator *ECDSATableCalculatorCallerSession) CalculateOperatorTable(operatorSet OperatorSet) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { - return _ECDSATableCalculator.Contract.CalculateOperatorTable(&_ECDSATableCalculator.CallOpts, operatorSet) -} - -// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. -// -// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) -func (_ECDSATableCalculator *ECDSATableCalculatorCaller) CalculateOperatorTableBytes(opts *bind.CallOpts, operatorSet OperatorSet) ([]byte, error) { - var out []interface{} - err := _ECDSATableCalculator.contract.Call(opts, &out, "calculateOperatorTableBytes", operatorSet) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. -// -// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) -func (_ECDSATableCalculator *ECDSATableCalculatorSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { - return _ECDSATableCalculator.Contract.CalculateOperatorTableBytes(&_ECDSATableCalculator.CallOpts, operatorSet) -} - -// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. -// -// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) -func (_ECDSATableCalculator *ECDSATableCalculatorCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { - return _ECDSATableCalculator.Contract.CalculateOperatorTableBytes(&_ECDSATableCalculator.CallOpts, operatorSet) -} - -// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. -// -// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) -func (_ECDSATableCalculator *ECDSATableCalculatorCaller) GetOperatorWeight(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (*big.Int, error) { - var out []interface{} - err := _ECDSATableCalculator.contract.Call(opts, &out, "getOperatorWeight", operatorSet, operator) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. -// -// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) -func (_ECDSATableCalculator *ECDSATableCalculatorSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { - return _ECDSATableCalculator.Contract.GetOperatorWeight(&_ECDSATableCalculator.CallOpts, operatorSet, operator) -} - -// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. -// -// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) -func (_ECDSATableCalculator *ECDSATableCalculatorCallerSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { - return _ECDSATableCalculator.Contract.GetOperatorWeight(&_ECDSATableCalculator.CallOpts, operatorSet, operator) -} - -// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. -// -// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) -func (_ECDSATableCalculator *ECDSATableCalculatorCaller) GetOperatorWeights(opts *bind.CallOpts, operatorSet OperatorSet) (struct { - Operators []common.Address - Weights [][]*big.Int -}, error) { - var out []interface{} - err := _ECDSATableCalculator.contract.Call(opts, &out, "getOperatorWeights", operatorSet) - - outstruct := new(struct { - Operators []common.Address - Weights [][]*big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Operators = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - outstruct.Weights = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) - - return *outstruct, err - -} - -// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. -// -// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) -func (_ECDSATableCalculator *ECDSATableCalculatorSession) GetOperatorWeights(operatorSet OperatorSet) (struct { - Operators []common.Address - Weights [][]*big.Int -}, error) { - return _ECDSATableCalculator.Contract.GetOperatorWeights(&_ECDSATableCalculator.CallOpts, operatorSet) -} - -// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. -// -// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) -func (_ECDSATableCalculator *ECDSATableCalculatorCallerSession) GetOperatorWeights(operatorSet OperatorSet) (struct { - Operators []common.Address - Weights [][]*big.Int -}, error) { - return _ECDSATableCalculator.Contract.GetOperatorWeights(&_ECDSATableCalculator.CallOpts, operatorSet) -} - -// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. -// -// Solidity: function keyRegistrar() view returns(address) -func (_ECDSATableCalculator *ECDSATableCalculatorCaller) KeyRegistrar(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ECDSATableCalculator.contract.Call(opts, &out, "keyRegistrar") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. -// -// Solidity: function keyRegistrar() view returns(address) -func (_ECDSATableCalculator *ECDSATableCalculatorSession) KeyRegistrar() (common.Address, error) { - return _ECDSATableCalculator.Contract.KeyRegistrar(&_ECDSATableCalculator.CallOpts) -} - -// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. -// -// Solidity: function keyRegistrar() view returns(address) -func (_ECDSATableCalculator *ECDSATableCalculatorCallerSession) KeyRegistrar() (common.Address, error) { - return _ECDSATableCalculator.Contract.KeyRegistrar(&_ECDSATableCalculator.CallOpts) -} - -// ECDSATableCalculatorLookaheadBlocksSetIterator is returned from FilterLookaheadBlocksSet and is used to iterate over the raw logs and unpacked data for LookaheadBlocksSet events raised by the ECDSATableCalculator contract. -type ECDSATableCalculatorLookaheadBlocksSetIterator struct { - Event *ECDSATableCalculatorLookaheadBlocksSet // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ECDSATableCalculatorLookaheadBlocksSetIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ECDSATableCalculatorLookaheadBlocksSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ECDSATableCalculatorLookaheadBlocksSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ECDSATableCalculatorLookaheadBlocksSetIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ECDSATableCalculatorLookaheadBlocksSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ECDSATableCalculatorLookaheadBlocksSet represents a LookaheadBlocksSet event raised by the ECDSATableCalculator contract. -type ECDSATableCalculatorLookaheadBlocksSet struct { - LookaheadBlocks *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterLookaheadBlocksSet is a free log retrieval operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. -// -// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) -func (_ECDSATableCalculator *ECDSATableCalculatorFilterer) FilterLookaheadBlocksSet(opts *bind.FilterOpts) (*ECDSATableCalculatorLookaheadBlocksSetIterator, error) { - - logs, sub, err := _ECDSATableCalculator.contract.FilterLogs(opts, "LookaheadBlocksSet") - if err != nil { - return nil, err - } - return &ECDSATableCalculatorLookaheadBlocksSetIterator{contract: _ECDSATableCalculator.contract, event: "LookaheadBlocksSet", logs: logs, sub: sub}, nil -} - -// WatchLookaheadBlocksSet is a free log subscription operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. -// -// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) -func (_ECDSATableCalculator *ECDSATableCalculatorFilterer) WatchLookaheadBlocksSet(opts *bind.WatchOpts, sink chan<- *ECDSATableCalculatorLookaheadBlocksSet) (event.Subscription, error) { - - logs, sub, err := _ECDSATableCalculator.contract.WatchLogs(opts, "LookaheadBlocksSet") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ECDSATableCalculatorLookaheadBlocksSet) - if err := _ECDSATableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseLookaheadBlocksSet is a log parse operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. -// -// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) -func (_ECDSATableCalculator *ECDSATableCalculatorFilterer) ParseLookaheadBlocksSet(log types.Log) (*ECDSATableCalculatorLookaheadBlocksSet, error) { - event := new(ECDSATableCalculatorLookaheadBlocksSet) - if err := _ECDSATableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/bindings/IBN254CertificateVerifier/binding.go b/pkg/bindings/IBN254CertificateVerifier/binding.go index 3960abd7f2..7d7281656d 100644 --- a/pkg/bindings/IBN254CertificateVerifier/binding.go +++ b/pkg/bindings/IBN254CertificateVerifier/binding.go @@ -54,29 +54,29 @@ type IBN254CertificateVerifierTypesBN254Certificate struct { type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { OperatorIndex uint32 OperatorInfoProof []byte - OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo + OperatorInfo IOperatorTableCalculatorTypesBN254OperatorInfo } -// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorInfo struct { +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// IOperatorTableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorInfo struct { Pubkey BN254G1Point Weights []*big.Int } -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { +// IOperatorTableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorSetInfo struct { OperatorInfoTreeRoot [32]byte NumOperators *big.Int AggregatePubkey BN254G1Point TotalWeights []*big.Int } -// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. -type ICrossChainRegistryTypesOperatorSetConfig struct { - Owner common.Address - MaxStalenessPeriod uint32 -} - // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -85,7 +85,7 @@ type OperatorSet struct { // IBN254CertificateVerifierMetaData contains all meta data concerning the IBN254CertificateVerifier contract. var IBN254CertificateVerifierMetaData = &bind.MetaData{ - ABI: "[{\"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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"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\":\"structIBN254TableCalculatorTypes.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\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", + ABI: "[{\"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\":\"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\":\"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\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", } // IBN254CertificateVerifierABI is the input ABI used to generate the binding from. @@ -237,15 +237,15 @@ func (_IBN254CertificateVerifier *IBN254CertificateVerifierTransactorRaw) Transa // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_IBN254CertificateVerifier *IBN254CertificateVerifierCaller) GetNonsignerOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierCaller) GetNonsignerOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { var out []interface{} err := _IBN254CertificateVerifier.contract.Call(opts, &out, "getNonsignerOperatorInfo", operatorSet, referenceTimestamp, operatorIndex) if err != nil { - return *new(IBN254TableCalculatorTypesBN254OperatorInfo), err + return *new(IOperatorTableCalculatorTypesBN254OperatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorInfo)).(*IBN254TableCalculatorTypesBN254OperatorInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesBN254OperatorInfo)).(*IOperatorTableCalculatorTypesBN254OperatorInfo) return out0, err @@ -254,29 +254,29 @@ func (_IBN254CertificateVerifier *IBN254CertificateVerifierCaller) GetNonsignerO // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_IBN254CertificateVerifier *IBN254CertificateVerifierSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { return _IBN254CertificateVerifier.Contract.GetNonsignerOperatorInfo(&_IBN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetNonsignerOperatorInfo is a free data retrieval call binding the contract method 0x26af6a3c. // // Solidity: function getNonsignerOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) -func (_IBN254CertificateVerifier *IBN254CertificateVerifierCallerSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierCallerSession) GetNonsignerOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IOperatorTableCalculatorTypesBN254OperatorInfo, error) { return _IBN254CertificateVerifier.Contract.GetNonsignerOperatorInfo(&_IBN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_IBN254CertificateVerifier *IBN254CertificateVerifierCaller) GetOperatorSetInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierCaller) GetOperatorSetInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { var out []interface{} err := _IBN254CertificateVerifier.contract.Call(opts, &out, "getOperatorSetInfo", operatorSet, referenceTimestamp) if err != nil { - return *new(IBN254TableCalculatorTypesBN254OperatorSetInfo), err + return *new(IOperatorTableCalculatorTypesBN254OperatorSetInfo), err } - out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorSetInfo)).(*IBN254TableCalculatorTypesBN254OperatorSetInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesBN254OperatorSetInfo)).(*IOperatorTableCalculatorTypesBN254OperatorSetInfo) return out0, err @@ -285,14 +285,14 @@ func (_IBN254CertificateVerifier *IBN254CertificateVerifierCaller) GetOperatorSe // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_IBN254CertificateVerifier *IBN254CertificateVerifierSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { return _IBN254CertificateVerifier.Contract.GetOperatorSetInfo(&_IBN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } // GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. // // Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) -func (_IBN254CertificateVerifier *IBN254CertificateVerifierCallerSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierCallerSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IOperatorTableCalculatorTypesBN254OperatorSetInfo, error) { return _IBN254CertificateVerifier.Contract.GetOperatorSetInfo(&_IBN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } @@ -468,21 +468,21 @@ func (_IBN254CertificateVerifier *IBN254CertificateVerifierCallerSession) TrySig // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_IBN254CertificateVerifier *IBN254CertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IBN254CertificateVerifier.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_IBN254CertificateVerifier *IBN254CertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IBN254CertificateVerifier.Contract.UpdateOperatorTable(&_IBN254CertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() -func (_IBN254CertificateVerifier *IBN254CertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_IBN254CertificateVerifier *IBN254CertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IBN254CertificateVerifier.Contract.UpdateOperatorTable(&_IBN254CertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) } @@ -890,7 +890,7 @@ func (it *IBN254CertificateVerifierTableUpdatedIterator) Close() error { type IBN254CertificateVerifierTableUpdated struct { OperatorSet OperatorSet ReferenceTimestamp uint32 - OperatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo + OperatorSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo Raw types.Log // Blockchain specific contextual infos } diff --git a/pkg/bindings/IECDSACertificateVerifier/binding.go b/pkg/bindings/IECDSACertificateVerifier/binding.go index 24e99a2553..5a1b32a935 100644 --- a/pkg/bindings/IECDSACertificateVerifier/binding.go +++ b/pkg/bindings/IECDSACertificateVerifier/binding.go @@ -42,8 +42,8 @@ type IECDSACertificateVerifierTypesECDSACertificate struct { Sig []byte } -// IECDSATableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IECDSATableCalculatorTypesECDSAOperatorInfo struct { +// IOperatorTableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesECDSAOperatorInfo struct { Pubkey common.Address Weights []*big.Int } @@ -56,7 +56,7 @@ type OperatorSet struct { // IECDSACertificateVerifierMetaData contains all meta data concerning the IECDSACertificateVerifier contract. var IECDSACertificateVerifierMetaData = &bind.MetaData{ - ABI: "[{\"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\":\"structIECDSATableCalculatorTypes.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\":\"structIECDSATableCalculatorTypes.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\":\"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\":\"structIECDSATableCalculatorTypes.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\":\"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\":\"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\":\"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\":\"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\":\"nonpayable\"},{\"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\":\"structIECDSATableCalculatorTypes.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\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", + ABI: "[{\"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\":\"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\":\"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\":\"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\":\"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\":\"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\":\"nonpayable\"},{\"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\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", } // IECDSACertificateVerifierABI is the input ABI used to generate the binding from. @@ -301,15 +301,15 @@ func (_IECDSACertificateVerifier *IECDSACertificateVerifierCallerSession) GetOpe // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_IECDSACertificateVerifier *IECDSACertificateVerifierCaller) GetOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierCaller) GetOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { var out []interface{} err := _IECDSACertificateVerifier.contract.Call(opts, &out, "getOperatorInfo", operatorSet, referenceTimestamp, operatorIndex) if err != nil { - return *new(IECDSATableCalculatorTypesECDSAOperatorInfo), err + return *new(IOperatorTableCalculatorTypesECDSAOperatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IECDSATableCalculatorTypesECDSAOperatorInfo)).(*IECDSATableCalculatorTypesECDSAOperatorInfo) + out0 := *abi.ConvertType(out[0], new(IOperatorTableCalculatorTypesECDSAOperatorInfo)).(*IOperatorTableCalculatorTypesECDSAOperatorInfo) return out0, err @@ -318,29 +318,29 @@ func (_IECDSACertificateVerifier *IECDSACertificateVerifierCaller) GetOperatorIn // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_IECDSACertificateVerifier *IECDSACertificateVerifierSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _IECDSACertificateVerifier.Contract.GetOperatorInfo(&_IECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorInfo is a free data retrieval call binding the contract method 0x082ef73d. // // Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint32 operatorIndex) view returns((address,uint256[])) -func (_IECDSACertificateVerifier *IECDSACertificateVerifierCallerSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierCallerSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex uint32) (IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _IECDSACertificateVerifier.Contract.GetOperatorInfo(&_IECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) } // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_IECDSACertificateVerifier *IECDSACertificateVerifierCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { var out []interface{} err := _IECDSACertificateVerifier.contract.Call(opts, &out, "getOperatorInfos", operatorSet, referenceTimestamp) if err != nil { - return *new([]IECDSATableCalculatorTypesECDSAOperatorInfo), err + return *new([]IOperatorTableCalculatorTypesECDSAOperatorInfo), err } - out0 := *abi.ConvertType(out[0], new([]IECDSATableCalculatorTypesECDSAOperatorInfo)).(*[]IECDSATableCalculatorTypesECDSAOperatorInfo) + out0 := *abi.ConvertType(out[0], new([]IOperatorTableCalculatorTypesECDSAOperatorInfo)).(*[]IOperatorTableCalculatorTypesECDSAOperatorInfo) return out0, err @@ -349,14 +349,14 @@ func (_IECDSACertificateVerifier *IECDSACertificateVerifierCaller) GetOperatorIn // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_IECDSACertificateVerifier *IECDSACertificateVerifierSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _IECDSACertificateVerifier.Contract.GetOperatorInfos(&_IECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } // GetOperatorInfos is a free data retrieval call binding the contract method 0x7c85ac4c. // // Solidity: function getOperatorInfos((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((address,uint256[])[]) -func (_IECDSACertificateVerifier *IECDSACertificateVerifierCallerSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierCallerSession) GetOperatorInfos(operatorSet OperatorSet, referenceTimestamp uint32) ([]IOperatorTableCalculatorTypesECDSAOperatorInfo, error) { return _IECDSACertificateVerifier.Contract.GetOperatorInfos(&_IECDSACertificateVerifier.CallOpts, operatorSet, referenceTimestamp) } @@ -487,21 +487,21 @@ func (_IECDSACertificateVerifier *IECDSACertificateVerifierCallerSession) MaxOpe // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_IECDSACertificateVerifier *IECDSACertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IECDSACertificateVerifier.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_IECDSACertificateVerifier *IECDSACertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IECDSACertificateVerifier.Contract.UpdateOperatorTable(&_IECDSACertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } // UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // // Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() -func (_IECDSACertificateVerifier *IECDSACertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_IECDSACertificateVerifier *IECDSACertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IECDSACertificateVerifier.Contract.UpdateOperatorTable(&_IECDSACertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } @@ -909,7 +909,7 @@ func (it *IECDSACertificateVerifierTableUpdatedIterator) Close() error { type IECDSACertificateVerifierTableUpdated struct { OperatorSet OperatorSet ReferenceTimestamp uint32 - OperatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo + OperatorInfos []IOperatorTableCalculatorTypesECDSAOperatorInfo Raw types.Log // Blockchain specific contextual infos } diff --git a/pkg/bindings/IOperatorTableUpdater/binding.go b/pkg/bindings/IOperatorTableUpdater/binding.go index 4a1eec3f6d..8482422311 100644 --- a/pkg/bindings/IOperatorTableUpdater/binding.go +++ b/pkg/bindings/IOperatorTableUpdater/binding.go @@ -54,29 +54,29 @@ type IBN254CertificateVerifierTypesBN254Certificate struct { type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { OperatorIndex uint32 OperatorInfoProof []byte - OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo + OperatorInfo IOperatorTableCalculatorTypesBN254OperatorInfo } -// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorInfo struct { +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// IOperatorTableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorInfo struct { Pubkey BN254G1Point Weights []*big.Int } -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { +// IOperatorTableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorSetInfo struct { OperatorInfoTreeRoot [32]byte NumOperators *big.Int AggregatePubkey BN254G1Point TotalWeights []*big.Int } -// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. -type ICrossChainRegistryTypesOperatorSetConfig struct { - Owner common.Address - MaxStalenessPeriod uint32 -} - // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"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\":[]}]", } // IOperatorTableUpdaterABI is the input ABI used to generate the binding from. @@ -693,21 +693,21 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) SetGlobalR // 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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IOperatorTableUpdater.Contract.UpdateGlobalRootConfirmerSet(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) } diff --git a/pkg/bindings/OperatorTableUpdater/binding.go b/pkg/bindings/OperatorTableUpdater/binding.go index c75021261f..374a1f257f 100644 --- a/pkg/bindings/OperatorTableUpdater/binding.go +++ b/pkg/bindings/OperatorTableUpdater/binding.go @@ -54,29 +54,29 @@ type IBN254CertificateVerifierTypesBN254Certificate struct { type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { OperatorIndex uint32 OperatorInfoProof []byte - OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo + OperatorInfo IOperatorTableCalculatorTypesBN254OperatorInfo } -// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorInfo struct { +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// IOperatorTableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorInfo struct { Pubkey BN254G1Point Weights []*big.Int } -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { +// IOperatorTableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorSetInfo struct { OperatorInfoTreeRoot [32]byte NumOperators *big.Int AggregatePubkey BN254G1Point TotalWeights []*big.Int } -// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. -type ICrossChainRegistryTypesOperatorSetConfig struct { - Owner common.Address - MaxStalenessPeriod uint32 -} - // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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: "0x60e060405234801561000f575f5ffd5b5060405161231638038061231683398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120026103145f395f61073601525f818161042b015281816107b701526109d501525f81816104520152818161068c015281816107770152818161093001528181610c040152610ed801526120025ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c806364e1df84116100f3578063c252aa2211610093578063c5916a391161006e578063c5916a39146104bb578063eaaed9d5146104e0578063f2fde38b146104f3578063fd967f4714610506575f5ffd5b8063c252aa2214610474578063c3621f0a14610495578063c3be1e33146104a8575f5ffd5b80638da5cb5b116100ce5780638da5cb5b146104025780639ea9477814610413578063ad0f958214610426578063b8c143061461044d575f5ffd5b806364e1df841461039a5780636f728c50146103cf578063715018a6146103fa575f5ffd5b806328522d791161015e5780633ef6cd7a116101395780633ef6cd7a146103025780634624e6a314610329578063462828891461033d57806354fd4d5014610385575f5ffd5b806328522d791461027f57806330ef41b4146102ab57806331a599d2146102dd575f5ffd5b8063193b79f311610199578063193b79f3146102095780631ab78d90146102315780632370356c1461024457806323b7b5b214610257575f5ffd5b8063021ab442146101bf5780630371406e146101d45780630f3f8edd146101e7575b5f5ffd5b6101d26101cd366004611264565b61050f565b005b6101d26101e23660046112f4565b61065f565b6101ef610673565b60405163ffffffff90911681526020015b60405180910390f35b6101ef610217366004611315565b63ffffffff9081165f908152606960205260409020541690565b6101d261023f366004611330565b610706565b6101d261025236600461138c565b61071e565b6101ef610265366004611315565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b604051908152602001610200565b6102cd6102b93660046113a5565b5f908152606a602052604090205460ff1690565b6040519015158152602001610200565b60655462010000900463ffffffff9081165f90815260686020526040902054166101ef565b61029d7f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff166101ef565b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff169082015260405161020091906113da565b61038d61072f565b60405161020091906113e8565b6102cd6103a8366004611315565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b6103e26103dd36600461142b565b61075a565b6040516001600160a01b039091168152602001610200565b6101d26107f9565b6033546001600160a01b03166103e2565b6101d2610421366004611488565b61080c565b6103e27f000000000000000000000000000000000000000000000000000000000000000081565b6103e27f000000000000000000000000000000000000000000000000000000000000000081565b6065546104829061ffff1681565b60405161ffff9091168152602001610200565b6101d26104a33660046113a5565b610a3a565b61029d6104b6366004611523565b610aaf565b61029d6104c9366004611315565b63ffffffff165f9081526067602052604090205490565b6101d26104ee366004611562565b610b17565b6101d26105013660046115ce565b610d49565b61048261271081565b5f54610100900460ff161580801561052d57505f54600160ff909116105b806105465750303b15801561054657505f5460ff166001145b6105ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156105cf575f805461ff0019166101001790555b6105d887610dbb565b6105e186610e0c565b6105ea85610e56565b6105f5848484610ec1565b6065805465ffffffff000019166201000063ffffffff8716021790558015610656575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610667610f3d565b61067081610e0c565b50565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b906106c2906066906004016115e9565b602060405180830381865afa1580156106dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190611610565b905090565b61070e610f3d565b610719838383610ec1565b505050565b610726610f3d565b61067081610e56565b60606107017f0000000000000000000000000000000000000000000000000000000000000000610f97565b5f600282600281111561076f5761076f61162b565b0361079b57507f0000000000000000000000000000000000000000000000000000000000000000919050565b60018260028111156107af576107af61162b565b036107db57507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b610801610f3d565b61080a5f610dbb565b565b5f5f5f5f61081a8686610fd4565b5f8e8152606a60205260409020549397509195509350915060ff166108525760405163504570e360e01b815260040160405180910390fd5b61085b8361075a565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161088691906113da565b602060405180830381865afa1580156108a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c59190611610565b63ffffffff168b63ffffffff16116108f05760405163207617df60e01b815260040160405180910390fd5b6109158b8b8b8b8b8b8b60405161090892919061163f565b604051809103902061101b565b60028360028111156109295761092961162b565b036109ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610968856110bc565b866040518563ffffffff1660e01b81526004016109889493929190611688565b5f604051808303815f87803b15801561099f575f5ffd5b505af11580156109b1573d5f5f3e3d5ffd5b50505050610a2d565b60018360028111156109ce576109ce61162b565b036107db577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d610a0d856110de565b866040518563ffffffff1660e01b81526004016109889493929190611704565b5050505050505050505050565b610a42610f3d565b5f818152606a602052604090205460ff16610a705760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b428263ffffffff161115610b3e57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610b705760405163037fa86b60e31b815260040160405180910390fd5b610b7b838383610aaf565b846020013514610b9e57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610bd957610bd96117bd565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610c3e906066908a9087906004016118ef565b6020604051808303815f875af1158015610c5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611a7c565b905080610c9e57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610d51610f3d565b6001600160a01b038116610db65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a5565b610670815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610e198282611a9b565b9050507f20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b3781604051610e4b9190611b2c565b60405180910390a150565b61271061ffff82161115610e7d576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610e4b565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b90610f1490606690879087908790600401611b3a565b5f604051808303815f87803b158015610f2b575f5ffd5b505af1158015610656573d5f5f3e3d5ffd5b6033546001600160a01b0316331461080a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a5565b60605f610fa3836110f4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f8082526020820181905290606061100b85870187611c8d565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461104f5760405163639d09b560e11b815260040160405180910390fd5b61109783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff881661111b565b6110b45760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6110c46111c9565b818060200190518101906110d89190611dde565b92915050565b6060818060200190518101906110d89190611e8d565b5f60ff8216601f8111156110d857604051632cd44ac360e21b815260040160405180910390fd5b5f83611128868585611132565b1495945050505050565b5f602084516111419190611f8e565b1561115f576040516313717da960e21b815260040160405180910390fd5b8260205b855181116111c057611176600285611f8e565b5f0361119757815f528086015160205260405f2091506002840493506111ae565b808601515f528160205260405f2091506002840493505b6111b9602082611fad565b9050611163565b50949350505050565b60405180608001604052805f81526020015f81526020016111fb60405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b0381168114610670575f5ffd5b5f6040828403121561122c575f5ffd5b50919050565b803561ffff811681146107f4575f5ffd5b63ffffffff81168114610670575f5ffd5b5f60a0828403121561122c575f5ffd5b5f5f5f5f5f5f610100878903121561127a575f5ffd5b863561128581611208565b9550611294886020890161121c565b94506112a260608801611232565b935060808701356112b281611243565b925060a08701356001600160401b038111156112cc575f5ffd5b6112d889828a01611254565b9250506112e88860c0890161121c565b90509295509295509295565b5f60408284031215611304575f5ffd5b61130e838361121c565b9392505050565b5f60208284031215611325575f5ffd5b813561130e81611243565b5f5f5f60808486031215611342575f5ffd5b833561134d81611243565b925060208401356001600160401b03811115611367575f5ffd5b61137386828701611254565b925050611383856040860161121c565b90509250925092565b5f6020828403121561139c575f5ffd5b61130e82611232565b5f602082840312156113b5575f5ffd5b5035919050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016110d882846113bc565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8035600381106107f4575f5ffd5b5f6020828403121561143b575f5ffd5b61130e8261141d565b5f5f83601f840112611454575f5ffd5b5081356001600160401b0381111561146a575f5ffd5b602083019150836020828501011115611481575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561149e575f5ffd5b87356114a981611243565b96506020880135955060408801356114c081611243565b945060608801356001600160401b038111156114da575f5ffd5b6114e68a828b01611444565b90955093505060808801356001600160401b03811115611504575f5ffd5b6115108a828b01611444565b989b979a50959850939692959293505050565b5f5f5f60608486031215611535575f5ffd5b83359250602084013561154781611243565b9150604084013561155781611243565b809150509250925092565b5f5f5f5f60808587031215611575575f5ffd5b84356001600160401b0381111561158a575f5ffd5b8501610120818803121561159c575f5ffd5b93506020850135925060408501356115b381611243565b915060608501356115c381611243565b939692955090935050565b5f602082840312156115de575f5ffd5b813561130e81611208565b604081016110d88284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f60208284031215611620575f5ffd5b815161130e81611243565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561167e578151865260209586019590910190600101611660565b5093949350505050565b61169281866113bc565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526116eb61016084018261164e565b9150506116fb60808301846113bc565b95945050505050565b5f60c0820161171383886113bc565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156117945786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061177e9087018261164e565b9550506020938401939190910190600101611743565b50505050809150506116fb60808301846113bc565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126117e6575f5ffd5b83016020810192503590506001600160401b03811115611804575f5ffd5b8060051b3603821315611481575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e19833603018112611851575f5ffd5b90910192915050565b8183525f6001600160fb1b03831115611871575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f6118a660408301836117d1565b606060408601526116fb60608601828461185a565b5f8151808452602084019350602083015f5b8281101561167e57815161ffff168652602095860195909101906001016118cd565b6119128185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a08201843561192a81611243565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c086016101408501376119796101008601866117d1565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611a5b578786036101bf190183526119b8828661183d565b80356119c381611243565b63ffffffff168752602081013536829003601e190181126119e2575f5ffd5b81016020810190356001600160401b038111156119fd575f5ffd5b803603821315611a0b575f5ffd5b606060208a0152611a2060608a018284611815565b915050611a30604083018361183d565b91508781036040890152611a44818361188a565b97505050602092830192919091019060010161199c565b50505050508281036060840152611a7281856118bb565b9695505050505050565b5f60208284031215611a8c575f5ffd5b8151801515811461130e575f5ffd5b8135611aa681611208565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611ad281611243565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611b0281611208565b6001600160a01b031682526020810135611b1b81611243565b63ffffffff81166020840152505050565b604081016110d88284611af7565b611b5d8186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611bab60808501856117d1565b60a0610140850152611bc26101608501828461185a565b925050506116fb6080830184611af7565b604080519081016001600160401b0381118282101715611bf557611bf56117a9565b60405290565b604051608081016001600160401b0381118282101715611bf557611bf56117a9565b604051601f8201601f191681016001600160401b0381118282101715611c4557611c456117a9565b604052919050565b5f60408284031215611c5d575f5ffd5b611c65611bd3565b90508135611c7281611208565b81526020820135611c8281611243565b602082015292915050565b5f5f5f5f60c08587031215611ca0575f5ffd5b611caa8686611c4d565b9350611cb86040860161141d565b9250611cc78660608701611c4d565b915060a08501356001600160401b03811115611ce1575f5ffd5b8501601f81018713611cf1575f5ffd5b80356001600160401b03811115611d0a57611d0a6117a9565b611d1d601f8201601f1916602001611c1d565b818152886020838501011115611d31575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611d6a57611d6a6117a9565b5060051b60200190565b5f82601f830112611d83575f5ffd5b8151611d96611d9182611d52565b611c1d565b8082825260208201915060208360051b860101925085831115611db7575f5ffd5b602085015b83811015611dd4578051835260209283019201611dbc565b5095945050505050565b5f60208284031215611dee575f5ffd5b81516001600160401b03811115611e03575f5ffd5b820180840360a0811215611e15575f5ffd5b611e1d611bfb565b82518152602080840151908201526040603f1983011215611e3c575f5ffd5b611e44611bd3565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611e73575f5ffd5b611e7f86838501611d74565b606082015295945050505050565b5f60208284031215611e9d575f5ffd5b81516001600160401b03811115611eb2575f5ffd5b8201601f81018413611ec2575f5ffd5b8051611ed0611d9182611d52565b8082825260208201915060208360051b850101925086831115611ef1575f5ffd5b602084015b83811015611f835780516001600160401b03811115611f13575f5ffd5b85016040818a03601f19011215611f28575f5ffd5b611f30611bd3565b6020820151611f3e81611208565b815260408201516001600160401b03811115611f58575f5ffd5b611f678b602083860101611d74565b6020830152508085525050602083019250602081019050611ef6565b509695505050505050565b5f82611fa857634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156110d857634e487b7160e01b5f52601160045260245ffdfea26469706673582212201633e49faf00f03a2a56870830f7f9b8bb992766b3faf552c112ca4a1c0d231964736f6c634300081b0033", + 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\":\"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: "0x60e060405234801561000f575f5ffd5b5060405161231638038061231683398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516120026103145f395f61073601525f818161042b015281816107b701526109d501525f81816104520152818161068c015281816107770152818161093001528181610c040152610ed801526120025ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c806364e1df84116100f3578063c252aa2211610093578063c5916a391161006e578063c5916a39146104bb578063eaaed9d5146104e0578063f2fde38b146104f3578063fd967f4714610506575f5ffd5b8063c252aa2214610474578063c3621f0a14610495578063c3be1e33146104a8575f5ffd5b80638da5cb5b116100ce5780638da5cb5b146104025780639ea9477814610413578063ad0f958214610426578063b8c143061461044d575f5ffd5b806364e1df841461039a5780636f728c50146103cf578063715018a6146103fa575f5ffd5b806328522d791161015e5780633ef6cd7a116101395780633ef6cd7a146103025780634624e6a314610329578063462828891461033d57806354fd4d5014610385575f5ffd5b806328522d791461027f57806330ef41b4146102ab57806331a599d2146102dd575f5ffd5b8063193b79f311610199578063193b79f3146102095780631ab78d90146102315780632370356c1461024457806323b7b5b214610257575f5ffd5b8063021ab442146101bf5780630371406e146101d45780630f3f8edd146101e7575b5f5ffd5b6101d26101cd366004611264565b61050f565b005b6101d26101e23660046112f4565b61065f565b6101ef610673565b60405163ffffffff90911681526020015b60405180910390f35b6101ef610217366004611315565b63ffffffff9081165f908152606960205260409020541690565b6101d261023f366004611330565b610706565b6101d261025236600461138c565b61071e565b6101ef610265366004611315565b63ffffffff9081165f908152606860205260409020541690565b60655462010000900463ffffffff165f908152606760205260409020545b604051908152602001610200565b6102cd6102b93660046113a5565b5f908152606a602052604090205460ff1690565b6040519015158152602001610200565b60655462010000900463ffffffff9081165f90815260686020526040902054166101ef565b61029d7f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc81565b60655462010000900463ffffffff166101ef565b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff169082015260405161020091906113da565b61038d61072f565b60405161020091906113e8565b6102cd6103a8366004611315565b63ffffffff165f908152606760209081526040808320548352606a90915290205460ff1690565b6103e26103dd36600461142b565b61075a565b6040516001600160a01b039091168152602001610200565b6101d26107f9565b6033546001600160a01b03166103e2565b6101d2610421366004611488565b61080c565b6103e27f000000000000000000000000000000000000000000000000000000000000000081565b6103e27f000000000000000000000000000000000000000000000000000000000000000081565b6065546104829061ffff1681565b60405161ffff9091168152602001610200565b6101d26104a33660046113a5565b610a3a565b61029d6104b6366004611523565b610aaf565b61029d6104c9366004611315565b63ffffffff165f9081526067602052604090205490565b6101d26104ee366004611562565b610b17565b6101d26105013660046115ce565b610d49565b61048261271081565b5f54610100900460ff161580801561052d57505f54600160ff909116105b806105465750303b15801561054657505f5460ff166001145b6105ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156105cf575f805461ff0019166101001790555b6105d887610dbb565b6105e186610e0c565b6105ea85610e56565b6105f5848484610ec1565b6065805465ffffffff000019166201000063ffffffff8716021790558015610656575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610667610f3d565b61067081610e0c565b50565b604051635ddb9b5b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635ddb9b5b906106c2906066906004016115e9565b602060405180830381865afa1580156106dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190611610565b905090565b61070e610f3d565b610719838383610ec1565b505050565b610726610f3d565b61067081610e56565b60606107017f0000000000000000000000000000000000000000000000000000000000000000610f97565b5f600282600281111561076f5761076f61162b565b0361079b57507f0000000000000000000000000000000000000000000000000000000000000000919050565b60018260028111156107af576107af61162b565b036107db57507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b610801610f3d565b61080a5f610dbb565b565b5f5f5f5f61081a8686610fd4565b5f8e8152606a60205260409020549397509195509350915060ff166108525760405163504570e360e01b815260040160405180910390fd5b61085b8361075a565b6001600160a01b0316635ddb9b5b856040518263ffffffff1660e01b815260040161088691906113da565b602060405180830381865afa1580156108a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c59190611610565b63ffffffff168b63ffffffff16116108f05760405163207617df60e01b815260040160405180910390fd5b6109158b8b8b8b8b8b8b60405161090892919061163f565b604051809103902061101b565b60028360028111156109295761092961162b565b036109ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b858d610968856110bc565b866040518563ffffffff1660e01b81526004016109889493929190611688565b5f604051808303815f87803b15801561099f575f5ffd5b505af11580156109b1573d5f5f3e3d5ffd5b50505050610a2d565b60018360028111156109ce576109ce61162b565b036107db577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5858d610a0d856110de565b866040518563ffffffff1660e01b81526004016109889493929190611704565b5050505050505050505050565b610a42610f3d565b5f818152606a602052604090205460ff16610a705760405163504570e360e01b815260040160405180910390fd5b5f818152606a6020526040808220805460ff191690555182917f8bd43de1250f58fe6ec9a78671a8b78dba70f0018656d157a3aeaabec389df3491a250565b604080517f4491f5ee91595f938885ef73c9a1fa8a6d14ff9b9dab4aa24b8802bbb9bfc1cc602082015290810184905263ffffffff8084166060830152821660808201525f9060a0016040516020818303038152906040528051906020012090509392505050565b428263ffffffff161115610b3e57604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff62010000909104811690831611610b705760405163037fa86b60e31b815260040160405180910390fd5b610b7b838383610aaf565b846020013514610b9e57604051638b56642d60e01b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f90610bd957610bd96117bd565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d797490610c3e906066908a9087906004016118ef565b6020604051808303815f875af1158015610c5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611a7c565b905080610c9e57604051633042041f60e21b815260040160405180910390fd5b6065805463ffffffff80871662010000810265ffffffff000019909316929092179092555f818152606860209081526040808320805495891663ffffffff1996871681179091558352606982528083208054909516841790945582825260678152838220899055888252606a9052828120805460ff19166001179055915187927f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a3505050505050565b610d51610f3d565b6001600160a01b038116610db65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a5565b610670815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610e198282611a9b565b9050507f20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b3781604051610e4b9190611b2c565b60405180910390a150565b61271061ffff82161115610e7d576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610e4b565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b90610f1490606690879087908790600401611b3a565b5f604051808303815f87803b158015610f2b575f5ffd5b505af1158015610656573d5f5f3e3d5ffd5b6033546001600160a01b0316331461080a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a5565b60605f610fa3836110f4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f8082526020820181905290606061100b85870187611c8d565b9299919850965090945092505050565b63ffffffff86165f90815260676020526040902054851461104f5760405163639d09b560e11b815260040160405180910390fd5b61109783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff881661111b565b6110b45760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b6110c46111c9565b818060200190518101906110d89190611dde565b92915050565b6060818060200190518101906110d89190611e8d565b5f60ff8216601f8111156110d857604051632cd44ac360e21b815260040160405180910390fd5b5f83611128868585611132565b1495945050505050565b5f602084516111419190611f8e565b1561115f576040516313717da960e21b815260040160405180910390fd5b8260205b855181116111c057611176600285611f8e565b5f0361119757815f528086015160205260405f2091506002840493506111ae565b808601515f528160205260405f2091506002840493505b6111b9602082611fad565b9050611163565b50949350505050565b60405180608001604052805f81526020015f81526020016111fb60405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b0381168114610670575f5ffd5b5f6040828403121561122c575f5ffd5b50919050565b803561ffff811681146107f4575f5ffd5b63ffffffff81168114610670575f5ffd5b5f60a0828403121561122c575f5ffd5b5f5f5f5f5f5f610100878903121561127a575f5ffd5b863561128581611208565b9550611294886020890161121c565b94506112a260608801611232565b935060808701356112b281611243565b925060a08701356001600160401b038111156112cc575f5ffd5b6112d889828a01611254565b9250506112e88860c0890161121c565b90509295509295509295565b5f60408284031215611304575f5ffd5b61130e838361121c565b9392505050565b5f60208284031215611325575f5ffd5b813561130e81611243565b5f5f5f60808486031215611342575f5ffd5b833561134d81611243565b925060208401356001600160401b03811115611367575f5ffd5b61137386828701611254565b925050611383856040860161121c565b90509250925092565b5f6020828403121561139c575f5ffd5b61130e82611232565b5f602082840312156113b5575f5ffd5b5035919050565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016110d882846113bc565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8035600381106107f4575f5ffd5b5f6020828403121561143b575f5ffd5b61130e8261141d565b5f5f83601f840112611454575f5ffd5b5081356001600160401b0381111561146a575f5ffd5b602083019150836020828501011115611481575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561149e575f5ffd5b87356114a981611243565b96506020880135955060408801356114c081611243565b945060608801356001600160401b038111156114da575f5ffd5b6114e68a828b01611444565b90955093505060808801356001600160401b03811115611504575f5ffd5b6115108a828b01611444565b989b979a50959850939692959293505050565b5f5f5f60608486031215611535575f5ffd5b83359250602084013561154781611243565b9150604084013561155781611243565b809150509250925092565b5f5f5f5f60808587031215611575575f5ffd5b84356001600160401b0381111561158a575f5ffd5b8501610120818803121561159c575f5ffd5b93506020850135925060408501356115b381611243565b915060608501356115c381611243565b939692955090935050565b5f602082840312156115de575f5ffd5b813561130e81611208565b604081016110d88284546001600160a01b038116825260a01c63ffffffff16602090910152565b5f60208284031215611620575f5ffd5b815161130e81611243565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b5f8151808452602084019350602083015f5b8281101561167e578151865260209586019590910190600101611660565b5093949350505050565b61169281866113bc565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526116eb61016084018261164e565b9150506116fb60808301846113bc565b95945050505050565b5f60c0820161171383886113bc565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156117945786850360df19018452815180516001600160a01b0316865260209081015160409187018290529061177e9087018261164e565b9550506020938401939190910190600101611743565b50505050809150506116fb60808301846113bc565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e198436030181126117e6575f5ffd5b83016020810192503590506001600160401b03811115611804575f5ffd5b8060051b3603821315611481575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e19833603018112611851575f5ffd5b90910192915050565b8183525f6001600160fb1b03831115611871575f5ffd5b8260051b80836020870137939093016020019392505050565b80358252602080820135908301525f6118a660408301836117d1565b606060408601526116fb60608601828461185a565b5f8151808452602084019350602083015f5b8281101561167e57815161ffff168652602095860195909101906001016118cd565b6119128185546001600160a01b038116825260a01c63ffffffff16602090910152565b608060408201525f6101a08201843561192a81611243565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c086016101408501376119796101008601866117d1565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b83811015611a5b578786036101bf190183526119b8828661183d565b80356119c381611243565b63ffffffff168752602081013536829003601e190181126119e2575f5ffd5b81016020810190356001600160401b038111156119fd575f5ffd5b803603821315611a0b575f5ffd5b606060208a0152611a2060608a018284611815565b915050611a30604083018361183d565b91508781036040890152611a44818361188a565b97505050602092830192919091019060010161199c565b50505050508281036060840152611a7281856118bb565b9695505050505050565b5f60208284031215611a8c575f5ffd5b8151801515811461130e575f5ffd5b8135611aa681611208565b81546001600160a01b031981166001600160a01b039290921691821783556020840135611ad281611243565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b8035611b0281611208565b6001600160a01b031682526020810135611b1b81611243565b63ffffffff81166020840152505050565b604081016110d88284611af7565b611b5d8186546001600160a01b038116825260a01c63ffffffff16602090910152565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f611bab60808501856117d1565b60a0610140850152611bc26101608501828461185a565b925050506116fb6080830184611af7565b604080519081016001600160401b0381118282101715611bf557611bf56117a9565b60405290565b604051608081016001600160401b0381118282101715611bf557611bf56117a9565b604051601f8201601f191681016001600160401b0381118282101715611c4557611c456117a9565b604052919050565b5f60408284031215611c5d575f5ffd5b611c65611bd3565b90508135611c7281611208565b81526020820135611c8281611243565b602082015292915050565b5f5f5f5f60c08587031215611ca0575f5ffd5b611caa8686611c4d565b9350611cb86040860161141d565b9250611cc78660608701611c4d565b915060a08501356001600160401b03811115611ce1575f5ffd5b8501601f81018713611cf1575f5ffd5b80356001600160401b03811115611d0a57611d0a6117a9565b611d1d601f8201601f1916602001611c1d565b818152886020838501011115611d31575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f6001600160401b03821115611d6a57611d6a6117a9565b5060051b60200190565b5f82601f830112611d83575f5ffd5b8151611d96611d9182611d52565b611c1d565b8082825260208201915060208360051b860101925085831115611db7575f5ffd5b602085015b83811015611dd4578051835260209283019201611dbc565b5095945050505050565b5f60208284031215611dee575f5ffd5b81516001600160401b03811115611e03575f5ffd5b820180840360a0811215611e15575f5ffd5b611e1d611bfb565b82518152602080840151908201526040603f1983011215611e3c575f5ffd5b611e44611bd3565b604084810151825260608501516020830152820152608083015191506001600160401b03821115611e73575f5ffd5b611e7f86838501611d74565b606082015295945050505050565b5f60208284031215611e9d575f5ffd5b81516001600160401b03811115611eb2575f5ffd5b8201601f81018413611ec2575f5ffd5b8051611ed0611d9182611d52565b8082825260208201915060208360051b850101925086831115611ef1575f5ffd5b602084015b83811015611f835780516001600160401b03811115611f13575f5ffd5b85016040818a03601f19011215611f28575f5ffd5b611f30611bd3565b6020820151611f3e81611208565b815260408201516001600160401b03811115611f58575f5ffd5b611f678b602083860101611d74565b6020830152508085525050602083019250602081019050611ef6565b509695505050505050565b5f82611fa857634e487b7160e01b5f52601260045260245ffd5b500690565b808201808211156110d857634e487b7160e01b5f52601160045260245ffdfea2646970667358221220cfe7b7fbc9077ac2afa7009b29263d1c42df26fddbd6f0875100a2981768952b64736f6c634300081b0033", } // OperatorTableUpdaterABI is the input ABI used to generate the binding from. @@ -890,21 +890,21 @@ 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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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) } // 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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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) } // 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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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) } @@ -995,21 +995,21 @@ func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) TransferOwne // 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 (_OperatorTableUpdater *OperatorTableUpdaterTransactor) UpdateGlobalRootConfirmerSet(opts *bind.TransactOpts, referenceTimestamp uint32, globalRootConfirmerSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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) } // 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 (_OperatorTableUpdater *OperatorTableUpdaterSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_OperatorTableUpdater *OperatorTableUpdaterSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _OperatorTableUpdater.Contract.UpdateGlobalRootConfirmerSet(&_OperatorTableUpdater.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 (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _OperatorTableUpdater.Contract.UpdateGlobalRootConfirmerSet(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) } diff --git a/pkg/bindings/OperatorTableUpdaterStorage/binding.go b/pkg/bindings/OperatorTableUpdaterStorage/binding.go index c23a701db5..62638362a0 100644 --- a/pkg/bindings/OperatorTableUpdaterStorage/binding.go +++ b/pkg/bindings/OperatorTableUpdaterStorage/binding.go @@ -54,29 +54,29 @@ type IBN254CertificateVerifierTypesBN254Certificate struct { type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { OperatorIndex uint32 OperatorInfoProof []byte - OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo + OperatorInfo IOperatorTableCalculatorTypesBN254OperatorInfo } -// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorInfo struct { +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// IOperatorTableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorInfo struct { Pubkey BN254G1Point Weights []*big.Int } -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { +// IOperatorTableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IOperatorTableCalculatorTypesBN254OperatorSetInfo struct { OperatorInfoTreeRoot [32]byte NumOperators *big.Int AggregatePubkey BN254G1Point TotalWeights []*big.Int } -// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. -type ICrossChainRegistryTypesOperatorSetConfig struct { - Owner common.Address - MaxStalenessPeriod uint32 -} - // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -85,7 +85,7 @@ type OperatorSet struct { // OperatorTableUpdaterStorageMetaData contains all meta data concerning the OperatorTableUpdaterStorage contract. var OperatorTableUpdaterStorageMetaData = &bind.MetaData{ - 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\":\"structIBN254TableCalculatorTypes.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\":\"structIBN254TableCalculatorTypes.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\":\"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\":[]}]", } // OperatorTableUpdaterStorageABI is the input ABI used to generate the binding from. @@ -848,21 +848,21 @@ func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession // 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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +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 IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) UpdateGlobalRootConfirmerSet(referenceTimestamp uint32, globalRootConfirmerSetInfo IOperatorTableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _OperatorTableUpdaterStorage.Contract.UpdateGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) } diff --git a/script/deploy/devnet/mutlichain/deploy_globalRootConfirmerSet.s.sol b/script/deploy/devnet/mutlichain/deploy_globalRootConfirmerSet.s.sol deleted file mode 100644 index e9674be08d..0000000000 --- a/script/deploy/devnet/mutlichain/deploy_globalRootConfirmerSet.s.sol +++ /dev/null @@ -1,150 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "@openzeppelin/contracts/utils/Strings.sol"; -import "src/test/utils/OperatorWalletLib.sol"; -import "src/contracts/interfaces/IBN254TableCalculator.sol"; -import "src/contracts/interfaces/ICrossChainRegistry.sol"; - -import "src/contracts/libraries/Merkle.sol"; - -import "forge-std/Script.sol"; -import "forge-std/Test.sol"; - -// forge script script/deploy/devnet/mutlichain/deploy_globalRootConfirmerSet.s.sol --sig "run(string memory)" $SEED -contract DeployGlobalRootConfirmerSet is Script, Test { - using Strings for uint256; - using Merkle for bytes32[]; - using BN254 for BN254.G1Point; - - function run( - string memory salt - ) public { - /** - * - * WALLET CREATION - * - */ - - // 1. Create a BN254 Wallet - Operator memory operator = OperatorWalletLib.createOperator(salt); - - /** - * - * Create the `BN254OperatorInfo` struct - * - */ - - // 1. Generate the `BN254OperatorInfo` struct - IBN254TableCalculatorTypes.BN254OperatorSetInfo memory operatorSetInfo; - - // 2. Set the numOperators and totalWeights - operatorSetInfo.numOperators = 1; - uint256[] memory weights = new uint256[](1); - weights[0] = 1; - operatorSetInfo.totalWeights = weights; - - // 3. Set the apk - BN254.G1Point memory aggregatePubkey; - aggregatePubkey = aggregatePubkey.plus(operator.signingKey.publicKeyG1); - operatorSetInfo.aggregatePubkey = aggregatePubkey; - - // 4. Set the operatorInfoTreeRoot - bytes32[] memory operatorInfoLeaves = new bytes32[](1); - operatorInfoLeaves[0] = keccak256( - abi.encode( - IBN254TableCalculatorTypes.BN254OperatorInfo({pubkey: operator.signingKey.publicKeyG1, weights: weights}) - ) - ); - operatorSetInfo.operatorInfoTreeRoot = operatorInfoLeaves.merkleizeKeccak(); - - /** - * - * Create the `operatorSetConfig` struct - * - */ - ICrossChainRegistry.OperatorSetConfig memory operatorSetConfig; - operatorSetConfig.owner = operator.key.addr; - operatorSetConfig.maxStalenessPeriod = 1 days; - - /** - * - * OUTPUT - OPERATOR SET INFO - * - */ - string memory parent_object = "parent object"; - - // Serialize operatorSetInfo - string memory operatorSetInfo_object = "operatorSetInfo"; - vm.serializeBytes32(operatorSetInfo_object, "operatorInfoTreeRoot", operatorSetInfo.operatorInfoTreeRoot); - vm.serializeUint(operatorSetInfo_object, "numOperators", operatorSetInfo.numOperators); - - // Serialize apk as nested object - string memory apk_object = "apk"; - vm.serializeUint(apk_object, "x", operatorSetInfo.aggregatePubkey.X); - string memory apkOutput = vm.serializeUint(apk_object, "y", operatorSetInfo.aggregatePubkey.Y); - vm.serializeString(operatorSetInfo_object, "apk", apkOutput); - - // Serialize totalWeights array - string memory operatorSetInfoOutput = - vm.serializeUint(operatorSetInfo_object, "totalWeights", operatorSetInfo.totalWeights); - - // Serialize operatorSetConfig - string memory operatorSetConfig_object = "operatorSetConfig"; - vm.serializeAddress(operatorSetConfig_object, "owner", operatorSetConfig.owner); - string memory operatorSetConfigOutput = - vm.serializeUint(operatorSetConfig_object, "maxStalenessPeriod", operatorSetConfig.maxStalenessPeriod); - - // Combine both objects into final output - vm.serializeString(parent_object, "operatorSetInfo", operatorSetInfoOutput); - string memory finalJson = vm.serializeString(parent_object, "operatorSetConfig", operatorSetConfigOutput); - - vm.writeJson(finalJson, "script/output/devnet/multichain/globalRootOperatorInfo.json"); - - /** - * - * OUTPUT - BLS WALLET - * - */ - - // Write operator data to a separate function to avoid stack too deep - _writeOperatorData(operator); - } - - function _writeOperatorData( - Operator memory operator - ) internal { - string memory operator_object = "operator"; - - // Serialize regular wallet info - string memory wallet_object = "wallet"; - vm.serializeUint(wallet_object, "privateKey", operator.key.privateKey); - string memory walletOutput = vm.serializeAddress(wallet_object, "address", operator.key.addr); - - // Serialize BLS wallet info - string memory blsWallet_object = "blsWallet"; - vm.serializeUint(blsWallet_object, "privateKey", operator.signingKey.privateKey); - - // Serialize publicKeyG1 - string memory publicKeyG1_object = "publicKeyG1"; - vm.serializeUint(publicKeyG1_object, "x", operator.signingKey.publicKeyG1.X); - string memory publicKeyG1Output = vm.serializeUint(publicKeyG1_object, "y", operator.signingKey.publicKeyG1.Y); - vm.serializeString(blsWallet_object, "publicKeyG1", publicKeyG1Output); - - // Serialize publicKeyG2 - string memory publicKeyG2_object = "publicKeyG2"; - vm.serializeUint(publicKeyG2_object, "x0", operator.signingKey.publicKeyG2.X[0]); - vm.serializeUint(publicKeyG2_object, "x1", operator.signingKey.publicKeyG2.X[1]); - vm.serializeUint(publicKeyG2_object, "y0", operator.signingKey.publicKeyG2.Y[0]); - string memory publicKeyG2Output = - vm.serializeUint(publicKeyG2_object, "y1", operator.signingKey.publicKeyG2.Y[1]); - string memory blsWalletOutput = vm.serializeString(blsWallet_object, "publicKeyG2", publicKeyG2Output); - - // Combine wallet and blsWallet into operator object - vm.serializeString(operator_object, "wallet", walletOutput); - string memory operatorOutput = vm.serializeString(operator_object, "blsWallet", blsWalletOutput); - - // Write to separate file - vm.writeJson(operatorOutput, "script/output/devnet/multichain/operatorWallet.json"); - } -} diff --git a/script/deploy/devnet/mutlichain/deploy_multichain_l1.s.sol b/script/deploy/devnet/mutlichain/deploy_multichain_l1.s.sol deleted file mode 100644 index db5e441b07..0000000000 --- a/script/deploy/devnet/mutlichain/deploy_multichain_l1.s.sol +++ /dev/null @@ -1,115 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -// OpenZeppelin Contracts -import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; -import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - -// Core Contracts -import "src/contracts/permissions/PauserRegistry.sol"; -import "src/contracts/core/AllocationManager.sol"; -import "src/contracts/permissions/PermissionController.sol"; - -// Multichain Contracts -import "src/contracts/multichain/CrossChainRegistry.sol"; -import "src/contracts/multichain/BN254TableCalculator.sol"; -import "src/contracts/permissions/KeyRegistrar.sol"; -import "src/test/mocks/EmptyContract.sol"; - -// Forge -import "forge-std/Script.sol"; -import "forge-std/Test.sol"; - -// forge script script/deploy/devnet/deploy_multichain_l1.s.sol --rpc-url $RPC_HOLESKY --private-key $PRIVATE_KEY --broadcast --sig "run()" --verify $ETHERSCAN_API_KEY -contract DeployMultichain_L1 is Script, Test { - Vm cheats = Vm(VM_ADDRESS); - - address owner = 0xDA29BB71669f46F2a779b4b62f03644A84eE3479; - - // EigenLayer Contracts on PREPROD - EmptyContract public emptyContract; - AllocationManager public allocationManager = AllocationManager(0xFdD5749e11977D60850E06bF5B13221Ad95eb6B4); - PermissionController public permissionController = PermissionController(0xa2348c77802238Db39f0CefAa500B62D3FDD682b); - PauserRegistry public pauserRegistry = PauserRegistry(0x50712285cE831a6B9a11214A430f28999A5b4DAe); - - // Multichain Contracts - ProxyAdmin public proxyAdmin; - KeyRegistrar public keyRegistrar; - KeyRegistrar public keyRegistrarImplementation; - CrossChainRegistry public crossChainRegistry; - CrossChainRegistry public crossChainRegistryImplementation; - BN254TableCalculator public bn254TableCalculator; - - function run() public { - uint256 chainId = block.chainid; - emit log_named_uint("You are deploying on ChainID", chainId); - - /** - * - * CONTRACT DEPLOYMENT - * - */ - vm.startBroadcast(); - - emptyContract = new EmptyContract(); - proxyAdmin = new ProxyAdmin(); - - // First, deploy the *proxy* contracts, using the *empty contract* as inputs - // Key Registrar - keyRegistrar = - KeyRegistrar(address(new TransparentUpgradeableProxy(address(emptyContract), address(proxyAdmin), ""))); - - // Cross Chain Registry - crossChainRegistry = CrossChainRegistry( - address(new TransparentUpgradeableProxy(address(emptyContract), address(proxyAdmin), "")) - ); - - // BN254 Table Calculator - - // Second, deploy the *implementation* contracts, using the *proxy contracts* as inputs - keyRegistrarImplementation = new KeyRegistrar(permissionController, allocationManager, "9.9.9"); - crossChainRegistryImplementation = - new CrossChainRegistry(allocationManager, keyRegistrar, permissionController, pauserRegistry, "9.9.9"); - - // Third, upgrade the proxies to point to the new implementations - proxyAdmin.upgrade( - ITransparentUpgradeableProxy(payable(address(keyRegistrar))), address(keyRegistrarImplementation) - ); - proxyAdmin.upgradeAndCall( - ITransparentUpgradeableProxy(payable(address(crossChainRegistry))), - address(crossChainRegistryImplementation), - abi.encodeWithSelector(CrossChainRegistry.initialize.selector, owner, 0) - ); - - // Fourth, deploy the non-upgradeable contracts - bn254TableCalculator = new BN254TableCalculator(keyRegistrar, allocationManager, 100); - - // Transfer ownership to the 0xDA address - proxyAdmin.transferOwnership(owner); - - vm.stopBroadcast(); - - /** - * - * OUTPUT - * - */ - string memory parent_object = "parent object"; - - string memory deployed_addresses = "addresses"; - vm.serializeAddress(deployed_addresses, "emptyContract", address(emptyContract)); - vm.serializeAddress(deployed_addresses, "proxyAdmin", address(proxyAdmin)); - vm.serializeAddress(deployed_addresses, "keyRegistrar", address(keyRegistrar)); - vm.serializeAddress(deployed_addresses, "keyRegistrarImplementation", address(keyRegistrarImplementation)); - vm.serializeAddress(deployed_addresses, "crossChainRegistry", address(crossChainRegistry)); - vm.serializeAddress( - deployed_addresses, "crossChainRegistryImplementation", address(crossChainRegistryImplementation) - ); - string memory deployed_addresses_output = - vm.serializeAddress(deployed_addresses, "bn254TableCalculator", address(bn254TableCalculator)); - - string memory finalJson = vm.serializeString(parent_object, deployed_addresses, deployed_addresses_output); - - vm.writeJson(finalJson, "script/output/devnet/multichain/deploy_multichain_l1.json"); - } -} diff --git a/script/deploy/devnet/mutlichain/deploy_multichain_l2.s.sol b/script/deploy/devnet/mutlichain/deploy_multichain_l2.s.sol deleted file mode 100644 index 3fda4bbd71..0000000000 --- a/script/deploy/devnet/mutlichain/deploy_multichain_l2.s.sol +++ /dev/null @@ -1,170 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -// OpenZeppelin Contracts -import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; -import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - -// Core Contracats -import "src/contracts/multichain/OperatorTableUpdater.sol"; -import "src/contracts/multichain/BN254CertificateVerifier.sol"; -import "src/contracts/interfaces/IECDSATableCalculator.sol"; -import "src/test/mocks/EmptyContract.sol"; - -// Import the necessary types -import "src/contracts/interfaces/IBN254TableCalculator.sol"; -import "src/contracts/interfaces/ICrossChainRegistry.sol"; -import "src/contracts/libraries/OperatorSetLib.sol"; -import "src/contracts/libraries/BN254.sol"; - -// Forge -import "forge-std/Script.sol"; -import "forge-std/Test.sol"; - -// forge script script/deploy/devnet/mutlichain/deploy_multichain_l2.s.sol --rpc-url $RPC_HOLESKY --private-key $PRIVATE_KEY --broadcast --sig "run()" --verify $ETHERSCAN_API_KEY -contract DeployMultichain_L2 is Script, Test { - address globalOwner = 0xDA29BB71669f46F2a779b4b62f03644A84eE3479; - - // Multichain Contracts - EmptyContract public emptyContract; - ProxyAdmin public proxyAdmin; - OperatorTableUpdater public operatorTableUpdater; - OperatorTableUpdater public operatorTableUpdaterImplementation; - BN254CertificateVerifier public bn254CertificateVerifier; - BN254CertificateVerifier public bn254CertificateVerifierImplementation; - - function run() public { - uint256 chainId = block.chainid; - emit log_named_uint("You are deploying on ChainID", chainId); - - /** - * - * CONTRACT DEPLOYMENT - * - */ - vm.startBroadcast(); - - emptyContract = new EmptyContract(); - proxyAdmin = new ProxyAdmin(); - - // First, deploy the *proxy* contracts, using the *empty contract* as inputs - // Operator Table Updater - operatorTableUpdater = OperatorTableUpdater( - address(new TransparentUpgradeableProxy(address(emptyContract), address(proxyAdmin), "")) - ); - - // BN254 Certificate Verifier - bn254CertificateVerifier = BN254CertificateVerifier( - address(new TransparentUpgradeableProxy(address(emptyContract), address(proxyAdmin), "")) - ); - - // Second, deploy the *implementation* contracts, using the *proxy contracts* as inputs - operatorTableUpdaterImplementation = new OperatorTableUpdater( - bn254CertificateVerifier, IECDSACertificateVerifier(address(emptyContract)), "0.0.1" - ); - bn254CertificateVerifierImplementation = new BN254CertificateVerifier(operatorTableUpdater, "1.0.0"); - - // Third, upgrade the proxies to point to the new implementations - proxyAdmin.upgrade( - ITransparentUpgradeableProxy(payable(address(operatorTableUpdater))), - address(operatorTableUpdaterImplementation) - ); - - proxyAdmin.upgrade( - ITransparentUpgradeableProxy(payable(address(bn254CertificateVerifier))), - address(bn254CertificateVerifierImplementation) - ); - - proxyAdmin.transferOwnership(globalOwner); - vm.stopBroadcast(); - - /** - * - * INITIALIZATION - * - */ - - // Read the JSON data - string memory globalRootOperatorInfoPath = "script/output/devnet/multichain/globalRootOperatorInfo.json"; - string memory jsonData = vm.readFile(globalRootOperatorInfoPath); - - // Parse operatorSetInfo - uint256 numOperators = vm.parseJsonUint(jsonData, ".operatorSetInfo.numOperators"); - bytes32 operatorInfoTreeRoot = vm.parseJsonBytes32(jsonData, ".operatorSetInfo.operatorInfoTreeRoot"); - - // Parse APK (aggregatePubkey) - uint256 apkX = vm.parseJsonUint(jsonData, ".operatorSetInfo.apk.x"); - uint256 apkY = vm.parseJsonUint(jsonData, ".operatorSetInfo.apk.y"); - BN254.G1Point memory aggregatePubkey = BN254.G1Point({X: apkX, Y: apkY}); - - // Parse totalWeights array - uint256[] memory totalWeights = vm.parseJsonUintArray(jsonData, ".operatorSetInfo.totalWeights"); - - // Create BN254OperatorSetInfo struct - IBN254TableCalculatorTypes.BN254OperatorSetInfo memory globalRootConfirmerSetInfo = IBN254TableCalculatorTypes - .BN254OperatorSetInfo({ - operatorInfoTreeRoot: operatorInfoTreeRoot, - numOperators: numOperators, - aggregatePubkey: aggregatePubkey, - totalWeights: totalWeights - }); - - // Parse operatorSetConfig - address owner = vm.parseJsonAddress(jsonData, ".operatorSetConfig.owner"); - uint32 maxStalenessPeriod = uint32(vm.parseJsonUint(jsonData, ".operatorSetConfig.maxStalenessPeriod")); - - ICrossChainRegistryTypes.OperatorSetConfig memory globalRootConfirmerSetConfig = - ICrossChainRegistryTypes.OperatorSetConfig({owner: owner, maxStalenessPeriod: maxStalenessPeriod}); - - // Create the global root confirmer OperatorSet - // For devnet, we'll use address(this) as the AVS and id 0 - OperatorSet memory globalRootConfirmerSet = OperatorSet({avs: owner, id: 0}); - - // Set confirmation threshold (e.g., 100% = 10_000 bps) - uint16 globalRootConfirmationThreshold = 10_000; - - // Use current block timestamp as reference timestamp - uint32 referenceTimestamp = uint32(block.timestamp); - - // Initialize the operatorTableUpdater - vm.startBroadcast(); - operatorTableUpdater.initialize( - globalOwner, - globalRootConfirmerSet, - globalRootConfirmationThreshold, - referenceTimestamp, - globalRootConfirmerSetInfo, - globalRootConfirmerSetConfig - ); - vm.stopBroadcast(); - - /** - * - * OUTPUT - * - */ - string memory parent_object = "parent object"; - - string memory deployed_addresses = "addresses"; - vm.serializeAddress(deployed_addresses, "emptyContract", address(emptyContract)); - vm.serializeAddress(deployed_addresses, "proxyAdmin", address(proxyAdmin)); - vm.serializeAddress(deployed_addresses, "operatorTableUpdater", address(operatorTableUpdater)); - vm.serializeAddress( - deployed_addresses, "operatorTableUpdaterImplementation", address(operatorTableUpdaterImplementation) - ); - vm.serializeAddress(deployed_addresses, "bn254CertificateVerifier", address(bn254CertificateVerifier)); - string memory deployed_addresses_output = vm.serializeAddress( - deployed_addresses, - "bn254CertificateVerifierImplementation", - address(bn254CertificateVerifierImplementation) - ); - - string memory finalJson = vm.serializeString(parent_object, deployed_addresses, deployed_addresses_output); - vm.writeJson( - finalJson, - string.concat( - "script/output/devnet/multichain/deploy_multichain_l2_chainid_", vm.toString(block.chainid), ".json" - ) - ); - } -} diff --git a/script/utils/ExistingDeploymentParser.sol b/script/utils/ExistingDeploymentParser.sol index da6a8098aa..0e23e24092 100644 --- a/script/utils/ExistingDeploymentParser.sol +++ b/script/utils/ExistingDeploymentParser.sol @@ -25,7 +25,6 @@ import "../../src/contracts/pods/EigenPodManager.sol"; import "../../src/contracts/permissions/PauserRegistry.sol"; import "../../src/contracts/permissions/KeyRegistrar.sol"; import "../../src/contracts/multichain/BN254CertificateVerifier.sol"; -import "../../src/contracts/multichain/BN254TableCalculator.sol"; import "../../src/contracts/multichain/OperatorTableUpdater.sol"; import "../../src/test/mocks/EmptyContract.sol"; @@ -97,9 +96,6 @@ contract ExistingDeploymentParser is Script, Logger { uint256 STRATEGY_MAX_PER_DEPOSIT; uint256 STRATEGY_MAX_TOTAL_DEPOSITS; - /// @dev BN254TableCalculator - uint256 BN254_TABLE_CALCULATOR_LOOKAHEAD_BLOCKS; - /// ----------------------------------------------------------------------- /// EigenLayer Contracts /// ----------------------------------------------------------------------- @@ -160,7 +156,6 @@ contract ExistingDeploymentParser is Script, Logger { /// @dev Multichain KeyRegistrar public keyRegistrar; KeyRegistrar public keyRegistrarImplementation; - BN254TableCalculator public bn254TableCalculator; /// ----------------------------------------------------------------------- /// Storage diff --git a/src/contracts/interfaces/IBN254CertificateVerifier.sol b/src/contracts/interfaces/IBN254CertificateVerifier.sol index 9d415d554f..4bff1f30c6 100644 --- a/src/contracts/interfaces/IBN254CertificateVerifier.sol +++ b/src/contracts/interfaces/IBN254CertificateVerifier.sol @@ -3,10 +3,10 @@ pragma solidity >=0.5.0; import {BN254} from "../libraries/BN254.sol"; import {OperatorSet} from "../libraries/OperatorSetLib.sol"; -import "./IBN254TableCalculator.sol"; +import "./IOperatorTableCalculator.sol"; import "./IBaseCertificateVerifier.sol"; -interface IBN254CertificateVerifierTypes is IBN254TableCalculatorTypes { +interface IBN254CertificateVerifierTypes is IOperatorTableCalculatorTypes { /** * @notice A witness for an operator * @param operatorIndex the index of the nonsigner in the `BN254OperatorInfo` tree diff --git a/src/contracts/interfaces/IBN254TableCalculator.sol b/src/contracts/interfaces/IBN254TableCalculator.sol deleted file mode 100644 index 759c972123..0000000000 --- a/src/contracts/interfaces/IBN254TableCalculator.sol +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity >=0.5.0; - -import "../libraries/BN254.sol"; -import "../libraries/OperatorSetLib.sol"; -import "./IOperatorTableCalculator.sol"; - -interface IBN254TableCalculatorTypes { - /** - * @notice A struct that contains information about a single operator - * @param pubkey The G1 public key of the operator. - * @param weights The weights of the operator for a single operatorSet. - * @dev The `weights` array can be defined as a list of arbitrary groupings. For example, - * it can be [slashable_stake, delegated_stake, strategy_i_stake, ...] - */ - struct BN254OperatorInfo { - BN254.G1Point pubkey; - uint256[] weights; - } - - /** - * @notice A struct that contains information about all operators for a given operatorSet - * @param operatorInfoTreeRoot The root of the operatorInfo tree. - * @param numOperators The number of operators in the operatorSet. - * @param aggregatePubkey The aggregate G1 public key of the operators in the operatorSet. - * @param totalWeights The total weights of the operators in the operatorSet. - * - * @dev The operatorInfoTreeRoot is the root of a merkle tree that contains the operatorInfos for each operator in the operatorSet. - * It is calculated in this function and used by the `IBN254CertificateVerifier` to verify stakes against the non-signing operators - * - * @dev Retrieval of the `aggregatePubKey` depends on maintaining a key registry contract, see `BLSAPKRegistry` for an example implementation. - * - * @dev The `totalWeights` array should be the same length as each individual `weights` array in `operatorInfos`. - */ - struct BN254OperatorSetInfo { - bytes32 operatorInfoTreeRoot; - uint256 numOperators; - BN254.G1Point aggregatePubkey; - uint256[] totalWeights; - } -} - -interface IBN254TableCalculator is IOperatorTableCalculator, IBN254TableCalculatorTypes { - /** - * @notice calculates the operatorInfos for a given operatorSet - * @param operatorSet the operatorSet to calculate the operator table for - * @return operatorSetInfo the operatorSetInfo for the given operatorSet - * @dev The output of this function is converted to bytes via the `calculateOperatorTableBytes` function - */ - function calculateOperatorTable( - OperatorSet calldata operatorSet - ) external view returns (BN254OperatorSetInfo memory operatorSetInfo); - - /** - * @notice Get the operatorInfos for a given operatorSet - * @param operatorSet the operatorSet to get the operatorInfos for - * @return operatorInfos the operatorInfos for the given operatorSet - */ - function getOperatorInfos( - OperatorSet calldata operatorSet - ) external view returns (BN254OperatorInfo[] memory operatorInfos); -} diff --git a/src/contracts/interfaces/IECDSACertificateVerifier.sol b/src/contracts/interfaces/IECDSACertificateVerifier.sol index 7755bfb210..55e263dca1 100644 --- a/src/contracts/interfaces/IECDSACertificateVerifier.sol +++ b/src/contracts/interfaces/IECDSACertificateVerifier.sol @@ -3,9 +3,9 @@ pragma solidity >=0.5.0; import {OperatorSet} from "../libraries/OperatorSetLib.sol"; import "./IBaseCertificateVerifier.sol"; -import "./IECDSATableCalculator.sol"; +import "./IOperatorTableCalculator.sol"; -interface IECDSACertificateVerifierTypes is IECDSATableCalculatorTypes { +interface IECDSACertificateVerifierTypes is IOperatorTableCalculatorTypes { // Errors error InvalidSignatureLength(); diff --git a/src/contracts/interfaces/IECDSATableCalculator.sol b/src/contracts/interfaces/IECDSATableCalculator.sol deleted file mode 100644 index fd7764be04..0000000000 --- a/src/contracts/interfaces/IECDSATableCalculator.sol +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity >=0.5.0; - -import "../libraries/OperatorSetLib.sol"; -import "./IOperatorTableCalculator.sol"; - -interface IECDSATableCalculatorTypes { - /** - * @notice A struct that contains information about a single operator - * @param pubkey The address of the signing ECDSA key of the operator and not the operator address itself. - * This is read from the KeyRegistrar contract. - * @param weights The weights of the operator for a single operatorSet - * @dev The `weights` array can be defined as a list of arbitrary groupings. For example, - * it can be [slashable_stake, delegated_stake, strategy_i_stake, ...] - */ - struct ECDSAOperatorInfo { - address pubkey; - uint256[] weights; - } -} - -interface IECDSATableCalculatorEvents { - /// @notice Emitted when the lookahead blocks are set - event LookaheadBlocksSet(uint256 lookaheadBlocks); -} - -interface IECDSATableCalculatorErrors { - /// @notice Emitted when the lookahead blocks are too high - error LookaheadBlocksTooHigh(); -} - -interface IECDSATableCalculator is - IOperatorTableCalculator, - IECDSATableCalculatorTypes, - IECDSATableCalculatorEvents, - IECDSATableCalculatorErrors -{ - /** - * @notice calculates the operatorInfos for a given operatorSet - * @param operatorSet the operatorSet to calculate the operator table for - * @return operatorInfos the list of operatorInfos for the given operatorSet - * @dev The output of this function is converted to bytes via the `calculateOperatorTableBytes` function - */ - function calculateOperatorTable( - OperatorSet calldata operatorSet - ) external view returns (ECDSAOperatorInfo[] memory operatorInfos); -} diff --git a/src/contracts/interfaces/IOperatorTableCalculator.sol b/src/contracts/interfaces/IOperatorTableCalculator.sol index 78a420da5f..e9a68202af 100644 --- a/src/contracts/interfaces/IOperatorTableCalculator.sol +++ b/src/contracts/interfaces/IOperatorTableCalculator.sol @@ -1,8 +1,60 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.27; +import "../libraries/BN254.sol"; import "../libraries/OperatorSetLib.sol"; +interface IOperatorTableCalculatorTypes { + /// BN254 Table Calculator Types + /** + * @notice A struct that contains information about a single operator + * @param pubkey The G1 public key of the operator. + * @param weights The weights of the operator for a single operatorSet. + * @dev The `weights` array can be defined as a list of arbitrary groupings. For example, + * it can be [slashable_stake, delegated_stake, strategy_i_stake, ...] + */ + struct BN254OperatorInfo { + BN254.G1Point pubkey; + uint256[] weights; + } + + /** + * @notice A struct that contains information about all operators for a given operatorSet + * @param operatorInfoTreeRoot The root of the operatorInfo tree. + * @param numOperators The number of operators in the operatorSet. + * @param aggregatePubkey The aggregate G1 public key of the operators in the operatorSet. + * @param totalWeights The total weights of the operators in the operatorSet. + * + * @dev The operatorInfoTreeRoot is the root of a merkle tree that contains the operatorInfos for each operator in the operatorSet. + * It is calculated in this function and used by the `IBN254CertificateVerifier` to verify stakes against the non-signing operators + * + * @dev Retrieval of the `aggregatePubKey` depends on maintaining a key registry contract, see `BLSAPKRegistry` for an example implementation. + * + * @dev The `totalWeights` array should be the same length as each individual `weights` array in `operatorInfos`. + */ + struct BN254OperatorSetInfo { + bytes32 operatorInfoTreeRoot; + uint256 numOperators; + BN254.G1Point aggregatePubkey; + uint256[] totalWeights; + } + + /// ECDSA Table Calculator Types + + /** + * @notice A struct that contains information about a single operator + * @param pubkey The address of the signing ECDSA key of the operator and not the operator address itself. + * This is read from the KeyRegistrar contract. + * @param weights The weights of the operator for a single operatorSet + * @dev The `weights` array can be defined as a list of arbitrary groupings. For example, + * it can be [slashable_stake, delegated_stake, strategy_i_stake, ...] + */ + struct ECDSAOperatorInfo { + address pubkey; + uint256[] weights; + } +} + /// @notice A base operator table calculator that all operator table calculators (ECDSA, BN254) must implement interface IOperatorTableCalculator { /** diff --git a/src/contracts/interfaces/IOperatorTableUpdater.sol b/src/contracts/interfaces/IOperatorTableUpdater.sol index bba6e892da..fce548c82c 100644 --- a/src/contracts/interfaces/IOperatorTableUpdater.sol +++ b/src/contracts/interfaces/IOperatorTableUpdater.sol @@ -3,8 +3,6 @@ pragma solidity >=0.5.0; import "../libraries/OperatorSetLib.sol"; -import "./IECDSATableCalculator.sol"; -import "./IBN254TableCalculator.sol"; import "./IECDSACertificateVerifier.sol"; import "./IBN254CertificateVerifier.sol"; import "./IKeyRegistrar.sol"; @@ -63,8 +61,8 @@ interface IOperatorTableUpdaterEvents { interface IOperatorTableUpdater is IOperatorTableUpdaterErrors, IOperatorTableUpdaterEvents, - IECDSACertificateVerifierTypes, IBN254CertificateVerifierTypes, + IECDSACertificateVerifierTypes, IKeyRegistrarTypes, ICrossChainRegistryTypes { diff --git a/src/contracts/multichain/BN254CertificateVerifierStorage.sol b/src/contracts/multichain/BN254CertificateVerifierStorage.sol index e03b2e6241..c903ed3c1e 100644 --- a/src/contracts/multichain/BN254CertificateVerifierStorage.sol +++ b/src/contracts/multichain/BN254CertificateVerifierStorage.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.27; import {OperatorSet} from "../libraries/OperatorSetLib.sol"; import "../interfaces/IOperatorTableUpdater.sol"; -import "../interfaces/IBN254TableCalculator.sol"; import "../interfaces/IBN254CertificateVerifier.sol"; import "../interfaces/IBaseCertificateVerifier.sol"; diff --git a/src/contracts/multichain/BN254TableCalculator.sol b/src/contracts/multichain/BN254TableCalculator.sol deleted file mode 100644 index eb76694088..0000000000 --- a/src/contracts/multichain/BN254TableCalculator.sol +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "./BN254TableCalculatorBase.sol"; -import "../interfaces/IAllocationManager.sol"; - -/** - * @title BN254TableCalculator - * @notice Implementation that calculates BN254 operator tables using the sum of the minimum slashable stake weights - */ -contract BN254TableCalculator is BN254TableCalculatorBase { - // Immutables - /// @notice AllocationManager contract for managing operator allocations - IAllocationManager public immutable allocationManager; - /// @notice The default lookahead blocks for the slashable stake lookup - uint256 public immutable LOOKAHEAD_BLOCKS; - - constructor( - IKeyRegistrar _keyRegistrar, - IAllocationManager _allocationManager, - uint256 _LOOKAHEAD_BLOCKS - ) BN254TableCalculatorBase(_keyRegistrar) { - allocationManager = _allocationManager; - LOOKAHEAD_BLOCKS = _LOOKAHEAD_BLOCKS; - } - - /** - * @notice Get the operator weights for a given operatorSet based on the slashable stake. - * @param operatorSet The operatorSet to get the weights for - * @return operators The addresses of the operators in the operatorSet - * @return weights The weights for each operator in the operatorSet, this is a 2D array where the first index is the operator - * and the second index is the type of weight. In this case its of length 1 and returns the slashable stake for the operatorSet. - */ - function _getOperatorWeights( - OperatorSet calldata operatorSet - ) internal view override returns (address[] memory operators, uint256[][] memory weights) { - // Get all operators & strategies in the operatorSet - address[] memory registeredOperators = allocationManager.getMembers(operatorSet); - IStrategy[] memory strategies = allocationManager.getStrategiesInOperatorSet(operatorSet); - - // Get the minimum slashable stake for each operator - uint256[][] memory minSlashableStake = allocationManager.getMinimumSlashableStake({ - operatorSet: operatorSet, - operators: registeredOperators, - strategies: strategies, - futureBlock: uint32(block.number + LOOKAHEAD_BLOCKS) - }); - - operators = new address[](registeredOperators.length); - weights = new uint256[][](registeredOperators.length); - uint256 operatorCount = 0; - for (uint256 i = 0; i < registeredOperators.length; ++i) { - // For the given operator, loop through the strategies and sum together to calculate the operator's weight for the operatorSet - uint256 totalWeight; - for (uint256 stratIndex = 0; stratIndex < strategies.length; ++stratIndex) { - totalWeight += minSlashableStake[i][stratIndex]; - } - - // If the operator has nonzero slashable stake, add them to the operators array - if (totalWeight > 0) { - // Initialize operator weights array of length 1 just for slashable stake - weights[operatorCount] = new uint256[](1); - weights[operatorCount][0] = totalWeight; - - // Add the operator to the operators array - operators[operatorCount] = registeredOperators[i]; - operatorCount++; - } - } - - // Resize arrays to be the size of the number of operators with nonzero slashable stake - assembly { - mstore(operators, operatorCount) - mstore(weights, operatorCount) - } - - return (operators, weights); - } -} diff --git a/src/contracts/multichain/BN254TableCalculatorBase.sol b/src/contracts/multichain/BN254TableCalculatorBase.sol deleted file mode 100644 index e19ea70a1b..0000000000 --- a/src/contracts/multichain/BN254TableCalculatorBase.sol +++ /dev/null @@ -1,180 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "../interfaces/IBN254TableCalculator.sol"; -import "../interfaces/IKeyRegistrar.sol"; -import "../libraries/Merkle.sol"; -import "../libraries/BN254.sol"; - -/** - * @title BN254TableCalculatorBase - * @notice Abstract contract that provides base functionality for calculating BN254 operator tables - * @dev This contract contains all the core logic for operator table calculations, - * with weight calculation left to be implemented by derived contracts - */ -abstract contract BN254TableCalculatorBase is IBN254TableCalculator { - using Merkle for bytes32[]; - using BN254 for BN254.G1Point; - - // Immutables - /// @notice KeyRegistrar contract for managing operator keys - IKeyRegistrar public immutable keyRegistrar; - - constructor( - IKeyRegistrar _keyRegistrar - ) { - keyRegistrar = _keyRegistrar; - } - - /// @inheritdoc IBN254TableCalculator - function calculateOperatorTable( - OperatorSet calldata operatorSet - ) external view virtual returns (BN254OperatorSetInfo memory operatorSetInfo) { - return _calculateOperatorTable(operatorSet); - } - - /// @inheritdoc IOperatorTableCalculator - function calculateOperatorTableBytes( - OperatorSet calldata operatorSet - ) external view virtual returns (bytes memory operatorTableBytes) { - return abi.encode(_calculateOperatorTable(operatorSet)); - } - - /// @inheritdoc IOperatorTableCalculator - function getOperatorWeights( - OperatorSet calldata operatorSet - ) external view virtual returns (address[] memory operators, uint256[][] memory weights) { - return _getOperatorWeights(operatorSet); - } - - /// @inheritdoc IOperatorTableCalculator - function getOperatorWeight( - OperatorSet calldata operatorSet, - address operator - ) external view virtual returns (uint256 weight) { - (address[] memory operators, uint256[][] memory weights) = _getOperatorWeights(operatorSet); - - // Find the index of the operator in the operators array - for (uint256 i = 0; i < operators.length; i++) { - if (operators[i] == operator) { - return weights[i][0]; - } - } - - return 0; - } - - /// @inheritdoc IBN254TableCalculator - function getOperatorInfos( - OperatorSet calldata operatorSet - ) external view virtual returns (BN254OperatorInfo[] memory) { - // Get the weights for all operators - (address[] memory operators, uint256[][] memory weights) = _getOperatorWeights(operatorSet); - - BN254OperatorInfo[] memory operatorInfos = new BN254OperatorInfo[](operators.length); - - for (uint256 i = 0; i < operators.length; i++) { - // Skip if the operator has not registered their key - if (!keyRegistrar.isRegistered(operatorSet, operators[i])) { - continue; - } - - (BN254.G1Point memory g1Point,) = keyRegistrar.getBN254Key(operatorSet, operators[i]); - operatorInfos[i] = BN254OperatorInfo({pubkey: g1Point, weights: weights[i]}); - } - - return operatorInfos; - } - - /** - * @notice Abstract function to get the operator weights for a given operatorSet - * @param operatorSet The operatorSet to get the weights for - * @return operators The addresses of the operators in the operatorSet - * @return weights The weights for each operator in the operatorSet, this is a 2D array where the first index is the operator - * and the second index is the type of weight - * @dev Must be implemented by derived contracts to define specific weight calculation logic - */ - function _getOperatorWeights( - OperatorSet calldata operatorSet - ) internal view virtual returns (address[] memory operators, uint256[][] memory weights); - - /** - * @notice Calculates the operator table for a given operatorSet, also calculates the aggregate pubkey for the operatorSet - * @param operatorSet The operatorSet to calculate the operator table for - * @return operatorSetInfo The operator table for the given operatorSet - * @dev This function: - * 1. Gets operator weights from the weight calculator - * 2. Collates weights into total weights - * 3. Creates a merkle tree of operator info - * - assumes that the operator has a registered BN254 key - * 4. Calculates the aggregate public key - */ - function _calculateOperatorTable( - OperatorSet calldata operatorSet - ) internal view returns (BN254OperatorSetInfo memory operatorSetInfo) { - // Get the weights for all operators in the operatorSet - (address[] memory operators, uint256[][] memory weights) = _getOperatorWeights(operatorSet); - - // If there are no weights, return an empty operator set info - if (weights.length == 0) { - return BN254OperatorSetInfo({ - operatorInfoTreeRoot: bytes32(0), - numOperators: 0, - aggregatePubkey: BN254.G1Point(0, 0), - totalWeights: new uint256[](0) - }); - } - - // Initialize arrays - uint256 subArrayLength = weights[0].length; - uint256[] memory totalWeights = new uint256[](subArrayLength); - bytes32[] memory operatorInfoLeaves = new bytes32[](operators.length); - BN254.G1Point memory aggregatePubkey; - uint256 operatorCount = 0; - - for (uint256 i = 0; i < operators.length; i++) { - // Skip if the operator has not registered their key - if (!keyRegistrar.isRegistered(operatorSet, operators[i])) { - continue; - } - - // Read the weights for the operator and encode them into the operatorInfoLeaves - // for all weights, add them to the total weights. The ith index returns the weights array for the ith operator - for (uint256 j = 0; j < subArrayLength; j++) { - totalWeights[j] += weights[i][j]; - } - (BN254.G1Point memory g1Point,) = keyRegistrar.getBN254Key(operatorSet, operators[i]); - operatorInfoLeaves[i] = keccak256(abi.encode(BN254OperatorInfo({pubkey: g1Point, weights: weights[i]}))); - - // Add the operator's G1 point to the aggregate pubkey - aggregatePubkey = aggregatePubkey.plus(g1Point); - - // Increment the operator count - operatorCount++; - } - - // If there are no operators, return an empty operator set info - if (operatorCount == 0) { - return BN254OperatorSetInfo({ - operatorInfoTreeRoot: bytes32(0), - numOperators: 0, - aggregatePubkey: BN254.G1Point(0, 0), - totalWeights: new uint256[](0) - }); - } - - // Resize the operatorInfoLeaves array to the number of operators and merkleize - assembly { - mstore(operatorInfoLeaves, operatorCount) - } - - bytes32 operatorInfoTreeRoot = operatorInfoLeaves.merkleizeKeccak(); - - return BN254OperatorSetInfo({ - operatorInfoTreeRoot: operatorInfoTreeRoot, - numOperators: operatorCount, - aggregatePubkey: aggregatePubkey, - totalWeights: totalWeights - }); - } -} diff --git a/src/contracts/multichain/ECDSACertificateVerifierStorage.sol b/src/contracts/multichain/ECDSACertificateVerifierStorage.sol index daa2bc21f5..dc39bf180d 100644 --- a/src/contracts/multichain/ECDSACertificateVerifierStorage.sol +++ b/src/contracts/multichain/ECDSACertificateVerifierStorage.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.27; import {OperatorSet} from "../libraries/OperatorSetLib.sol"; import "../interfaces/IOperatorTableUpdater.sol"; -import "../interfaces/IECDSATableCalculator.sol"; import "../interfaces/IECDSACertificateVerifier.sol"; import "../interfaces/IBaseCertificateVerifier.sol"; diff --git a/src/contracts/multichain/ECDSATableCalculator.sol b/src/contracts/multichain/ECDSATableCalculator.sol deleted file mode 100644 index cbd74313f3..0000000000 --- a/src/contracts/multichain/ECDSATableCalculator.sol +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "./ECDSATableCalculatorBase.sol"; -import "../interfaces/IAllocationManager.sol"; - -/** - * @title ECDSATableCalculator - * @notice Implementation that calculates ECDSA operator tables using the sum of the minimum slashable stake weights - */ -contract ECDSATableCalculator is ECDSATableCalculatorBase { - // Immutables - /// @notice AllocationManager contract for managing operator allocations - IAllocationManager public immutable allocationManager; - /// @notice The default lookahead blocks for the slashable stake lookup - uint256 public immutable LOOKAHEAD_BLOCKS; - - constructor( - IKeyRegistrar _keyRegistrar, - IAllocationManager _allocationManager, - uint256 _LOOKAHEAD_BLOCKS - ) ECDSATableCalculatorBase(_keyRegistrar) { - allocationManager = _allocationManager; - LOOKAHEAD_BLOCKS = _LOOKAHEAD_BLOCKS; - } - - /** - * @notice Get the operator weights for a given operatorSet based on the slashable stake. - * @param operatorSet The operatorSet to get the weights for - * @return operators The addresses of the operators in the operatorSet - * @return weights The weights for each operator in the operatorSet, this is a 2D array where the first index is the operator - * and the second index is the type of weight. In this case its of length 1 and returns the slashable stake for the operatorSet. - */ - function _getOperatorWeights( - OperatorSet calldata operatorSet - ) internal view override returns (address[] memory operators, uint256[][] memory weights) { - // Get all operators & strategies in the operatorSet - address[] memory registeredOperators = allocationManager.getMembers(operatorSet); - IStrategy[] memory strategies = allocationManager.getStrategiesInOperatorSet(operatorSet); - - // Get the minimum slashable stake for each operator - uint256[][] memory minSlashableStake = allocationManager.getMinimumSlashableStake({ - operatorSet: operatorSet, - operators: registeredOperators, - strategies: strategies, - futureBlock: uint32(block.number + LOOKAHEAD_BLOCKS) - }); - - operators = new address[](registeredOperators.length); - weights = new uint256[][](registeredOperators.length); - uint256 operatorCount = 0; - for (uint256 i = 0; i < registeredOperators.length; ++i) { - // For the given operator, loop through the strategies and sum together to calculate the operator's weight for the operatorSet - uint256 totalWeight; - for (uint256 stratIndex = 0; stratIndex < strategies.length; ++stratIndex) { - totalWeight += minSlashableStake[i][stratIndex]; - } - - // If the operator has nonzero slashable stake, add them to the operators array - if (totalWeight > 0) { - // Initialize operator weights array of length 1 just for slashable stake - weights[operatorCount] = new uint256[](1); - weights[operatorCount][0] = totalWeight; - - // Add the operator to the operators array - operators[operatorCount] = registeredOperators[i]; - operatorCount++; - } - } - - // Resize arrays to be the size of the number of operators with nonzero slashable stake - assembly { - mstore(operators, operatorCount) - mstore(weights, operatorCount) - } - - return (operators, weights); - } -} diff --git a/src/contracts/multichain/ECDSATableCalculatorBase.sol b/src/contracts/multichain/ECDSATableCalculatorBase.sol deleted file mode 100644 index 1c32b5a552..0000000000 --- a/src/contracts/multichain/ECDSATableCalculatorBase.sol +++ /dev/null @@ -1,127 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "../interfaces/IECDSATableCalculator.sol"; -import "../interfaces/IKeyRegistrar.sol"; -import "../libraries/Merkle.sol"; - -/** - * @title ECDSATableCalculatorBase - * @notice Abstract contract that provides base functionality for calculating ECDSA operator tables - * @dev This contract contains all the core logic for operator table calculations, - * with weight calculation left to be implemented by derived contracts - */ -abstract contract ECDSATableCalculatorBase is IECDSATableCalculator { - using Merkle for bytes32[]; - - // Immutables - /// @notice KeyRegistrar contract for managing operator keys - IKeyRegistrar public immutable keyRegistrar; - - constructor( - IKeyRegistrar _keyRegistrar - ) { - keyRegistrar = _keyRegistrar; - } - - /// @inheritdoc IECDSATableCalculator - function calculateOperatorTable( - OperatorSet calldata operatorSet - ) external view virtual returns (ECDSAOperatorInfo[] memory operatorInfos) { - return _calculateOperatorTable(operatorSet); - } - - /// @inheritdoc IOperatorTableCalculator - function calculateOperatorTableBytes( - OperatorSet calldata operatorSet - ) external view virtual returns (bytes memory operatorTableBytes) { - return abi.encode(_calculateOperatorTable(operatorSet)); - } - - /// @inheritdoc IOperatorTableCalculator - function getOperatorWeights( - OperatorSet calldata operatorSet - ) external view virtual returns (address[] memory operators, uint256[][] memory weights) { - return _getOperatorWeights(operatorSet); - } - - /// @inheritdoc IOperatorTableCalculator - function getOperatorWeight( - OperatorSet calldata operatorSet, - address operator - ) external view virtual returns (uint256 weight) { - (address[] memory operators, uint256[][] memory weights) = _getOperatorWeights(operatorSet); - - // Find the index of the operator in the operators array - for (uint256 i = 0; i < operators.length; i++) { - if (operators[i] == operator) { - return weights[i][0]; - } - } - - return 0; - } - - /** - * @notice Abstract function to get the operator weights for a given operatorSet - * @param operatorSet The operatorSet to get the weights for - * @return operators The addresses of the operators in the operatorSet - * @return weights The weights for each operator in the operatorSet, this is a 2D array where the first index is the operator - * and the second index is the type of weight - * @dev Must be implemented by derived contracts to define specific weight calculation logic - */ - function _getOperatorWeights( - OperatorSet calldata operatorSet - ) internal view virtual returns (address[] memory operators, uint256[][] memory weights); - - /** - * @notice Calculates the operator table for a given operatorSet - * @param operatorSet The operatorSet to calculate the operator table for - * @return operatorInfos The operator table for the given operatorSet - * @dev This function: - * 1. Gets operator weights from the weight calculator - * 2. Creates ECDSAOperatorInfo structs for each operator with registered ECDSA keys - */ - function _calculateOperatorTable( - OperatorSet calldata operatorSet - ) internal view returns (ECDSAOperatorInfo[] memory operatorInfos) { - // Get the weights for all operators in the operatorSet - (address[] memory operators, uint256[][] memory weights) = _getOperatorWeights(operatorSet); - - // If there are no weights, return an empty array - if (weights.length == 0) { - return new ECDSAOperatorInfo[](0); - } - - // Create the operator infos array with maximum possible size - operatorInfos = new ECDSAOperatorInfo[](operators.length); - uint256 operatorCount = 0; - - for (uint256 i = 0; i < operators.length; i++) { - // Skip if the operator has not registered their ECDSA key - if (!keyRegistrar.isRegistered(operatorSet, operators[i])) { - continue; - } - - // Get the ECDSA address (public key) for the operator - address ecdsaAddress = keyRegistrar.getECDSAAddress(operatorSet, operators[i]); - - // Create the ECDSAOperatorInfo struct - operatorInfos[operatorCount] = ECDSAOperatorInfo({pubkey: ecdsaAddress, weights: weights[i]}); - - operatorCount++; - } - - // If no operators have registered keys, return empty array - if (operatorCount == 0) { - return new ECDSAOperatorInfo[](0); - } - - // Resize the array to the actual number of operators with registered keys - assembly { - mstore(operatorInfos, operatorCount) - } - - return operatorInfos; - } -} diff --git a/src/test/integration/IntegrationDeployer.t.sol b/src/test/integration/IntegrationDeployer.t.sol index 7d9e1b10ee..e2c4b15f40 100644 --- a/src/test/integration/IntegrationDeployer.t.sol +++ b/src/test/integration/IntegrationDeployer.t.sol @@ -180,7 +180,6 @@ abstract contract IntegrationDeployer is ExistingDeploymentParser { DELEGATION_MANAGER_MIN_WITHDRAWAL_DELAY_BLOCKS = 50; DEALLOCATION_DELAY = 50; ALLOCATION_CONFIGURATION_DELAY = 75; - BN254_TABLE_CALCULATOR_LOOKAHEAD_BLOCKS = 50; REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS = 86_400; REWARDS_COORDINATOR_MAX_REWARDS_DURATION = 6_048_000; @@ -377,7 +376,6 @@ abstract contract IntegrationDeployer is ExistingDeploymentParser { // multichain keyRegistrarImplementation = new KeyRegistrar(permissionController, allocationManager, "9.9.9"); - bn254TableCalculator = new BN254TableCalculator(keyRegistrar, allocationManager, BN254_TABLE_CALCULATOR_LOOKAHEAD_BLOCKS); } function _upgradeProxies() public noTracing { diff --git a/src/test/integration/tests/multichain/BN254OperatorSet_CalculateWeights.t.sol b/src/test/integration/tests/multichain/BN254OperatorSet_CalculateWeights.t.sol deleted file mode 100644 index 315d814cbe..0000000000 --- a/src/test/integration/tests/multichain/BN254OperatorSet_CalculateWeights.t.sol +++ /dev/null @@ -1,324 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "src/test/integration/IntegrationChecks.t.sol"; -import "src/test/integration/users/User.t.sol"; -import {console} from "forge-std/console.sol"; -import {BN254} from "src/contracts/libraries/BN254.sol"; - -// TODO: instead of hardcoding bn254 keys, generate randomly per operator -contract BN254OperatorSet_CalculateWeights is IntegrationCheckUtils { - using BN254 for BN254.G1Point; - - AVS avs; - OperatorSet operatorSet; - BN254TableCalculator tableCalculator; - - address[] operators; - User operator1; - User operator2; - AllocateParams allocateParams; - AllocateParams allocateParams2; - - User staker1; - User staker2; - IStrategy[] strategies; - // IStrategy[] strategies2; - uint[] initTokenBalances1; - uint[] initTokenBalances2; - uint[] initDepositShares1; - uint[] initDepositShares2; - - // ----------------------------------------------------------------------- - // Test keys for BN254 - // key 1 - uint public bn254PrivKey1 = 69; - BN254.G1Point bn254G1Key1; - BN254.G2Point bn254G2Key1; - bytes public bn254Key1; - // key 2 - uint public bn254PrivKey2 = 123; - BN254.G1Point bn254G1Key2; - BN254.G2Point bn254G2Key2; - bytes public bn254Key2; - - function _init() internal override { - _configUserTypes(DEFAULT); - - // Initialize table calculator - tableCalculator = new BN254TableCalculator( - IKeyRegistrar(address(keyRegistrar)), IAllocationManager(address(allocationManager)), BN254_TABLE_CALCULATOR_LOOKAHEAD_BLOCKS - ); - - // Setup stakers and operators - (staker1, strategies, initTokenBalances1) = _newRandomStaker(); - (staker2, initTokenBalances2) = _newStaker(strategies); - (operator1,,) = _newRandomOperator(); - (operator2,,) = _newRandomOperator(); - operators = new address[](2); - operators[0] = address(operator1); - operators[1] = address(operator2); - (avs,) = _newRandomAVS(); - - // 1. Deposit Into Strategies for both stakers - initDepositShares1 = _calculateExpectedShares(strategies, initTokenBalances1); - staker1.depositIntoEigenlayer(strategies, initTokenBalances1); - check_Deposit_State(staker1, strategies, initDepositShares1); - - initDepositShares2 = _calculateExpectedShares(strategies, initTokenBalances2); - staker2.depositIntoEigenlayer(strategies, initTokenBalances2); - check_Deposit_State(staker2, strategies, initDepositShares2); - - // 2. Delegate both stakers to their respective operators - staker1.delegateTo(operator1); - check_Delegation_State(staker1, operator1, strategies, initDepositShares1); - - staker2.delegateTo(operator2); - check_Delegation_State(staker2, operator2, strategies, initDepositShares2); - - // 3. Create operator set with configured BN254 keytype - operatorSet = avs.createOperatorSet(strategies); - avs.configureOperatorSet(operatorSet, IKeyRegistrarTypes.CurveType.BN254); - - // 4. Register both operators for operator set - operator1.registerForOperatorSet(operatorSet); - check_Registration_State_NoAllocation(operator1, operatorSet, allStrats); - - operator2.registerForOperatorSet(operatorSet); - check_Registration_State_NoAllocation(operator2, operatorSet, allStrats); - - // 5. Allocate both operators to operator set - allocateParams = _genAllocation_AllAvailable(operator1, operatorSet); - operator1.modifyAllocations(allocateParams); - check_IncrAlloc_State_Slashable(operator1, allocateParams); - - allocateParams2 = _genAllocation_AllAvailable(operator2, operatorSet); - operator2.modifyAllocations(allocateParams2); - check_IncrAlloc_State_Slashable(operator2, allocateParams2); - - // 6. Wait for allocations to complete - // note: both operators have same allocationDelay so just roll for operator1 - _rollBlocksForCompleteAllocation(operator1, operatorSet, strategies); - - // 7. Register BN254 keys for both operators - // Operator 1 key setup - bn254G1Key1 = BN254.generatorG1().scalar_mul(bn254PrivKey1); - bn254G2Key1.X[1] = 19_101_821_850_089_705_274_637_533_855_249_918_363_070_101_489_527_618_151_493_230_256_975_900_223_847; - bn254G2Key1.X[0] = 5_334_410_886_741_819_556_325_359_147_377_682_006_012_228_123_419_628_681_352_847_439_302_316_235_957; - bn254G2Key1.Y[1] = 354_176_189_041_917_478_648_604_979_334_478_067_325_821_134_838_555_150_300_539_079_146_482_658_331; - bn254G2Key1.Y[0] = 4_185_483_097_059_047_421_902_184_823_581_361_466_320_657_066_600_218_863_748_375_739_772_335_928_910; - operator1.registerBN254Key(operatorSet, bn254G1Key1, bn254G2Key1, bn254PrivKey1); - - // Operator 2 key setup - bn254G1Key2 = BN254.generatorG1().scalar_mul(bn254PrivKey2); - bn254G2Key2.X[1] = 19_276_105_129_625_393_659_655_050_515_259_006_463_014_579_919_681_138_299_520_812_914_148_935_621_072; - bn254G2Key2.X[0] = 14_066_454_060_412_929_535_985_836_631_817_650_877_381_034_334_390_275_410_072_431_082_437_297_539_867; - bn254G2Key2.Y[1] = 12_642_665_914_920_339_463_975_152_321_804_664_028_480_770_144_655_934_937_445_922_690_262_428_344_269; - bn254G2Key2.Y[0] = 10_109_651_107_942_685_361_120_988_628_892_759_706_059_655_669_161_016_107_907_096_760_613_704_453_218; - operator2.registerBN254Key(operatorSet, bn254G1Key2, bn254G2Key2, bn254PrivKey2); - } - - function testFuzz_calculateOperatorWeights(uint24 _random) public rand(_random) { - // Calculate operator weights - uint[][] memory weights; - (operators, weights) = tableCalculator.getOperatorWeights(operatorSet); - - // Verify results - assertEq(operators.length, 2, "Should have exactly two operators"); - assertEq(operators[0], address(operator1), "Operator address should match"); - assertEq(operators[1], address(operator2), "Operator address should match"); - assertEq(weights.length, 2, "Should have weights for two operators"); - assertEq(weights[0].length, 1, "Should have one weight type (slashable stake)"); - assertEq(weights[1].length, 1, "Should have one weight type (slashable stake)"); - - // Get the expected weight from allocation manager - uint[][] memory slashableStake = allocationManager.getMinimumSlashableStake( - operatorSet, operators, strategies, uint32(block.number + tableCalculator.LOOKAHEAD_BLOCKS()) - ); - - // The BN254TableCalculator simply sums all the slashable stake so this should the expected weight - // should simply be the sum of all the slashable stake from AllocationManager.getMinimumSlashableStake - for (uint i = 0; i < slashableStake.length; i++) { - // Loop through each operator and calculate their weight - uint operatorWeight = 0; - for (uint j = 0; j < slashableStake[i].length; j++) { - operatorWeight += slashableStake[i][j]; - } - assertEq(operatorWeight, weights[i][0], "Operator weight should match"); - } - - // verify both view functions return the same weight - // `getOperatorWeight` matches same weight from `getOperatorWeights` - assertEq(tableCalculator.getOperatorWeight(operatorSet, address(operator1)), weights[0][0], "Operator weight should match"); - assertEq(tableCalculator.getOperatorWeight(operatorSet, address(operator2)), weights[1][0], "Operator weight should match"); - } - - function testFuzz_calculateOperatorTable(uint24 _random) public rand(_random) { - // Calculate operator table - IBN254TableCalculatorTypes.BN254OperatorSetInfo memory operatorSetInfo = tableCalculator.calculateOperatorTable(operatorSet); - - // Verify results - assertEq(operatorSetInfo.numOperators, 2, "Should have exactly two operators"); - assertEq(operatorSetInfo.totalWeights.length, 1, "Should have one weight type"); - - // Get the expected weight from allocation manager - uint[][] memory slashableStake = allocationManager.getMinimumSlashableStake( - operatorSet, operators, strategies, uint32(block.number + tableCalculator.LOOKAHEAD_BLOCKS()) - ); - - uint expectedTotalWeight = 0; - for (uint i = 0; i < slashableStake.length; i++) { - // Loop through each operator and calculate their weight - uint operatorWeight = 0; - for (uint j = 0; j < slashableStake[i].length; j++) { - operatorWeight += slashableStake[i][j]; - } - expectedTotalWeight += operatorWeight; - } - - assertEq( - operatorSetInfo.totalWeights[0], expectedTotalWeight, "Total weight should match minimum slashable stake of both operators" - ); - - // Verify aggregate pubkey matches operator's pubkey - BN254.G1Point memory expectedApk = bn254G1Key1.plus(bn254G1Key2); - assertEq(operatorSetInfo.aggregatePubkey.X, expectedApk.X, "Aggregate pubkey X should match"); - assertEq(operatorSetInfo.aggregatePubkey.Y, expectedApk.Y, "Aggregate pubkey Y should match"); - assertEq(operatorSetInfo.numOperators, 2, "Number of operators should match"); - } - - function testFuzz_getOperatorInfos(uint24 _random) public rand(_random) { - // Get operator infos - IBN254TableCalculatorTypes.BN254OperatorInfo[] memory operatorInfos = tableCalculator.getOperatorInfos(operatorSet); - - // Verify results - assertEq(operatorInfos.length, 2, "Should have exactly two operators"); - - // Verify operator1 info - assertEq(operatorInfos[0].pubkey.X, bn254G1Key1.X, "Operator1 pubkey X should match"); - assertEq(operatorInfos[0].pubkey.Y, bn254G1Key1.Y, "Operator1 pubkey Y should match"); - assertEq(operatorInfos[0].weights.length, 1, "Operator1 should have one weight type"); - - // Verify operator2 info - assertEq(operatorInfos[1].pubkey.X, bn254G1Key2.X, "Operator2 pubkey X should match"); - assertEq(operatorInfos[1].pubkey.Y, bn254G1Key2.Y, "Operator2 pubkey Y should match"); - assertEq(operatorInfos[1].weights.length, 1, "Operator2 should have one weight type"); - - // Verify weights match getOperatorWeight for each operator - assertEq( - operatorInfos[0].weights[0], - tableCalculator.getOperatorWeight(operatorSet, address(operator1)), - "Operator1 weight should match getOperatorWeight" - ); - assertEq( - operatorInfos[1].weights[0], - tableCalculator.getOperatorWeight(operatorSet, address(operator2)), - "Operator2 weight should match getOperatorWeight" - ); - - // Verify weights match minimum slashable stake from allocation manager - uint[][] memory slashableStake = allocationManager.getMinimumSlashableStake( - operatorSet, operators, strategies, uint32(block.number + tableCalculator.LOOKAHEAD_BLOCKS()) - ); - - // Calculate and verify weights for each operator - for (uint i = 0; i < slashableStake.length; i++) { - uint operatorWeight = 0; - for (uint j = 0; j < slashableStake[i].length; j++) { - operatorWeight += slashableStake[i][j]; - } - assertEq(operatorWeight, operatorInfos[i].weights[0], "Operator weight should match minimum slashable stake"); - } - } - - function testFuzz_getOperatorWeight(uint24 _random) public rand(_random) { - // Get operator weight - uint weight = tableCalculator.getOperatorWeight(operatorSet, address(operator1)); - - // Get the expected weight from allocation manager - operators = new address[](1); - operators[0] = address(operator1); - uint[][] memory slashableStake = allocationManager.getMinimumSlashableStake( - operatorSet, operators, strategies, uint32(block.number + tableCalculator.LOOKAHEAD_BLOCKS()) - ); - - uint expectedWeight = 0; - for (uint i = 0; i < slashableStake.length; i++) { - for (uint j = 0; j < slashableStake[i].length; j++) { - expectedWeight += slashableStake[i][j]; - } - } - - assertEq(weight, expectedWeight, "Weight should match minimum slashable stake"); - } - - function testFuzz_deallocate_calculateOperatorTable(uint24 _random) public rand(_random) { - // 1. First verify initial state is same as calculateOperatorTable - IBN254TableCalculatorTypes.BN254OperatorSetInfo memory operatorSetInfo = tableCalculator.calculateOperatorTable(operatorSet); - - // Verify initial results - assertEq(operatorSetInfo.numOperators, 2, "Should have exactly two operators"); - assertEq(operatorSetInfo.totalWeights.length, 1, "Should have one weight type"); - - // Get the expected weight from allocation manager - uint[][] memory slashableStake = allocationManager.getMinimumSlashableStake( - operatorSet, operators, strategies, uint32(block.number + tableCalculator.LOOKAHEAD_BLOCKS()) - ); - - uint expectedTotalWeight = 0; - uint[] memory operatorWeights = new uint[](2); - for (uint i = 0; i < slashableStake.length; i++) { - // Loop through each operator and calculate their weight - for (uint j = 0; j < slashableStake[i].length; j++) { - operatorWeights[i] += slashableStake[i][j]; - } - expectedTotalWeight += operatorWeights[i]; - } - - assertEq( - operatorSetInfo.totalWeights[0], expectedTotalWeight, "Total weight should match minimum slashable stake of both operators" - ); - - // Verify aggregate pubkey matches operator's pubkey - BN254.G1Point memory expectedApk = bn254G1Key1.plus(bn254G1Key2); - assertEq(operatorSetInfo.aggregatePubkey.X, expectedApk.X, "Aggregate pubkey X should match"); - assertEq(operatorSetInfo.aggregatePubkey.Y, expectedApk.Y, "Aggregate pubkey Y should match"); - - // 2. Now deallocate operator1's stake - AllocateParams memory deallocateParams = _genDeallocation_Full(operator1, operatorSet); - operator1.modifyAllocations(deallocateParams); - - // Immediately after deallocation, weight should still be the same due to delay - operatorSetInfo = tableCalculator.calculateOperatorTable(operatorSet); - // check operator weight != 0 - assertGt(tableCalculator.getOperatorWeight(operatorSet, address(operator1)), 0, "Operator1 weight should not be 0"); - assertGt(tableCalculator.getOperatorWeight(operatorSet, address(operator2)), 0, "Operator2 weight should not be 0"); - // check total weight != 0 - assertEq(operatorSetInfo.totalWeights[0], expectedTotalWeight, "Total weight should still match before delay period"); - assertEq( - tableCalculator.getOperatorWeight(operatorSet, address(operator1)), - operatorWeights[0], - "Operator1 weight should still match before delay period" - ); - - // Roll blocks forward to complete deallocation - _rollBlocksForCompleteAllocation(operator1, operatorSet, strategies); - - // 3. After delay period, operator1's weight should be 0 - operatorSetInfo = tableCalculator.calculateOperatorTable(operatorSet); - uint expectedWeightAfterDeallocation = expectedTotalWeight - operatorWeights[0]; - assertEq(operatorSetInfo.totalWeights[0], expectedWeightAfterDeallocation, "Total weight should be reduced after deallocation"); - assertEq(tableCalculator.getOperatorWeight(operatorSet, address(operator1)), 0, "Operator1 weight should be 0 after deallocation"); - - // Verify operator2's weight remains unchanged - assertEq( - tableCalculator.getOperatorWeight(operatorSet, address(operator2)), - operatorWeights[1], - "Operator2 weight should remain unchanged" - ); - - // Verify aggregate pubkey has changed - assertEq(operatorSetInfo.aggregatePubkey.X, bn254G1Key2.X, "Aggregate pubkey X should match"); - assertEq(operatorSetInfo.aggregatePubkey.Y, bn254G1Key2.Y, "Aggregate pubkey Y should match"); - } -} diff --git a/src/test/tree/BN254TableCalculatorBase.tree b/src/test/tree/BN254TableCalculatorBase.tree deleted file mode 100644 index 90b218b5d1..0000000000 --- a/src/test/tree/BN254TableCalculatorBase.tree +++ /dev/null @@ -1,31 +0,0 @@ -. -└── BN254TableCalculatorBase (**** denotes that integration tests are needed to fully validate path) - ├── when calculateOperatorTable is called - │ ├── given that there are no operators - │ │ └── it should return empty operator table with zero aggregate pubkey - │ ├── given that operators have no registered BN254 keys - │ │ └── it should skip those operators and return table without them - │ ├── given that all operators have registered BN254 keys - │ │ └── it should include all operators in the table and calculate aggregate pubkey - │ ├── given that weights array has multiple weight types - │ │ └── it should correctly sum all weight types in totalWeights - │ └── given that operators have mixed registration status - │ └── it should only include registered operators in calculations - ├── when calculateOperatorTableBytes is called - │ └── it should return the encoded bytes of the operator table - ├── when getOperatorWeights is called - │ └── it should return the result from _getOperatorWeights implementation - ├── when getOperatorWeight is called - │ ├── given that the operator exists in the set - │ │ └── it should return the first weight value for that operator - │ ├── given that the operator does not exist in the set - │ │ └── it should return zero - │ └── given that the operator exists but has empty weights - │ └── it should handle gracefully **** - └── when getOperatorInfos is called - ├── given that no operators are registered - │ └── it should return array with empty operator infos - ├── given that some operators are not registered - │ └── it should skip unregistered operators (leaving empty slots) - └── given that all operators are registered - └── it should return complete operator info for each operator \ No newline at end of file diff --git a/src/test/tree/ECDSATableCalculatorBase.tree b/src/test/tree/ECDSATableCalculatorBase.tree deleted file mode 100644 index 9be537855f..0000000000 --- a/src/test/tree/ECDSATableCalculatorBase.tree +++ /dev/null @@ -1,34 +0,0 @@ -. -└── ECDSATableCalculatorBase (**** denotes that integration tests are needed to fully validate path) - ├── when calculateOperatorTable is called - │ ├── given that no operators are in the set - │ │ └── it should return empty operator info array - │ ├── given that operators exist but none have registered keys - │ │ └── it should return empty operator info array - │ ├── given that all operators have registered keys - │ │ └── it should return operator infos with correct pubkeys and weights - │ ├── given that operators have multiple weight types - │ │ └── it should return operator infos with all weight types correctly - │ ├── given that some operators have registered keys and some have not - │ │ └── it should only include registered operators in the result - │ └── given that a single operator is registered - │ └── it should return single operator info with correct data - ├── when calculateOperatorTableBytes is called - │ ├── given valid operator set with registered operators - │ │ └── it should encode operator infos correctly as bytes - │ └── given various weight values (fuzz test) - │ └── it should encode and decode weights correctly - ├── when getOperatorWeights is called - │ ├── given operators and weights are set - │ │ └── it should return the implementation result correctly - │ └── given various numbers of operators (fuzz test) - │ └── it should return correct operator and weight arrays - └── when getOperatorWeight is called - ├── given that the operator exists in the set - │ └── it should return the correct weight - ├── given that the operator does not exist in the set - │ └── it should return 0 - ├── given that the operator set is empty - │ └── it should return 0 - └── given various operator and weight combinations (fuzz test) - └── it should return correct weight or 0 \ No newline at end of file diff --git a/src/test/unit/BN254CertificateVerifierUnit.t.sol b/src/test/unit/BN254CertificateVerifierUnit.t.sol index 8514f33592..8369149e5e 100644 --- a/src/test/unit/BN254CertificateVerifierUnit.t.sol +++ b/src/test/unit/BN254CertificateVerifierUnit.t.sol @@ -12,7 +12,6 @@ import "src/contracts/multichain/BN254CertificateVerifier.sol"; import "src/contracts/interfaces/IOperatorTableUpdater.sol"; import "src/contracts/interfaces/IBaseCertificateVerifier.sol"; import "src/contracts/interfaces/IBN254CertificateVerifier.sol"; -import "src/contracts/interfaces/IBN254TableCalculator.sol"; import "src/contracts/interfaces/ICrossChainRegistry.sol"; /** diff --git a/src/test/unit/BN254TableCalculatorBaseUnit.t.sol b/src/test/unit/BN254TableCalculatorBaseUnit.t.sol deleted file mode 100644 index 6fc1a6a04d..0000000000 --- a/src/test/unit/BN254TableCalculatorBaseUnit.t.sol +++ /dev/null @@ -1,694 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "forge-std/Test.sol"; -import "src/contracts/multichain/BN254TableCalculatorBase.sol"; -import "src/contracts/permissions/KeyRegistrar.sol"; -import "src/contracts/interfaces/IKeyRegistrar.sol"; -import "src/contracts/interfaces/IOperatorTableCalculator.sol"; -import "src/contracts/interfaces/IBN254TableCalculator.sol"; -import "src/contracts/libraries/BN254.sol"; -import "src/contracts/libraries/OperatorSetLib.sol"; -import "src/test/utils/EigenLayerMultichainUnitTestSetup.sol"; -import "src/test/mocks/AllocationManagerMock.sol"; - -// Mock implementation for testing abstract contract -contract BN254TableCalculatorBaseHarness is BN254TableCalculatorBase { - // Storage for mock weights - mapping(bytes32 => address[]) internal _mockOperators; - mapping(bytes32 => uint[][]) internal _mockWeights; - - constructor(IKeyRegistrar _keyRegistrar) BN254TableCalculatorBase(_keyRegistrar) {} - - function setMockOperatorWeights(OperatorSet calldata operatorSet, address[] memory operators, uint[][] memory weights) external { - bytes32 key = operatorSet.key(); - _mockOperators[key] = operators; - _mockWeights[key] = weights; - } - - function _getOperatorWeights(OperatorSet calldata operatorSet) - internal - view - override - returns (address[] memory operators, uint[][] memory weights) - { - bytes32 key = operatorSet.key(); - operators = _mockOperators[key]; - weights = _mockWeights[key]; - } -} - -/** - * @title BN254TableCalculatorBaseUnitTests - * @notice Base contract for all BN254TableCalculatorBase unit tests - */ -contract BN254TableCalculatorBaseUnitTests is EigenLayerMultichainUnitTestSetup, IBN254TableCalculatorTypes, IKeyRegistrarTypes { - using BN254 for BN254.G1Point; - using OperatorSetLib for OperatorSet; - - // Test contracts - BN254TableCalculatorBaseHarness public calculator; - - // Test addresses - address public avs1 = address(0x1); - address public avs2 = address(0x2); - address public operator1 = address(0x3); - address public operator2 = address(0x4); - address public operator3 = address(0x5); - - // Test operator sets - OperatorSet defaultOperatorSet; - OperatorSet alternativeOperatorSet; - - // BN254 test keys - uint constant BN254_PRIV_KEY_1 = 69; - uint constant BN254_PRIV_KEY_2 = 123; - uint constant BN254_PRIV_KEY_3 = 456; - - BN254.G1Point bn254G1Key1; - BN254.G1Point bn254G1Key2; - BN254.G1Point bn254G1Key3; - BN254.G2Point bn254G2Key1; - BN254.G2Point bn254G2Key2; - BN254.G2Point bn254G2Key3; - - function setUp() public virtual override { - EigenLayerMultichainUnitTestSetup.setUp(); - - // Deploy KeyRegistrar - KeyRegistrar keyRegistrarImpl = new KeyRegistrar(permissionController, IAllocationManager(address(allocationManagerMock)), "1.0.0"); - keyRegistrar = keyRegistrarImpl; - - // Deploy calculator with KeyRegistrar - calculator = new BN254TableCalculatorBaseHarness(IKeyRegistrar(address(keyRegistrar))); - - // Set up operator sets - defaultOperatorSet = OperatorSet({avs: avs1, id: 0}); - alternativeOperatorSet = OperatorSet({avs: avs2, id: 1}); - - // Set up BN254 keys - bn254G1Key1 = BN254.generatorG1().scalar_mul(BN254_PRIV_KEY_1); - bn254G1Key2 = BN254.generatorG1().scalar_mul(BN254_PRIV_KEY_2); - - // Valid G2 points that correspond to the private keys - bn254G2Key1.X[1] = 19_101_821_850_089_705_274_637_533_855_249_918_363_070_101_489_527_618_151_493_230_256_975_900_223_847; - bn254G2Key1.X[0] = 5_334_410_886_741_819_556_325_359_147_377_682_006_012_228_123_419_628_681_352_847_439_302_316_235_957; - bn254G2Key1.Y[1] = 354_176_189_041_917_478_648_604_979_334_478_067_325_821_134_838_555_150_300_539_079_146_482_658_331; - bn254G2Key1.Y[0] = 4_185_483_097_059_047_421_902_184_823_581_361_466_320_657_066_600_218_863_748_375_739_772_335_928_910; - - bn254G2Key2.X[1] = 19_276_105_129_625_393_659_655_050_515_259_006_463_014_579_919_681_138_299_520_812_914_148_935_621_072; - bn254G2Key2.X[0] = 14_066_454_060_412_929_535_985_836_631_817_650_877_381_034_334_390_275_410_072_431_082_437_297_539_867; - bn254G2Key2.Y[1] = 12_642_665_914_920_339_463_975_152_321_804_664_028_480_770_144_655_934_937_445_922_690_262_428_344_269; - bn254G2Key2.Y[0] = 10_109_651_107_942_685_361_120_988_628_892_759_706_059_655_669_161_016_107_907_096_760_613_704_453_218; - - // Configure operator sets in AllocationManager - allocationManagerMock.setAVSRegistrar(avs1, avs1); - allocationManagerMock.setAVSRegistrar(avs2, avs2); - - // Configure operator sets for BN254 - vm.prank(avs1); - keyRegistrar.configureOperatorSet(defaultOperatorSet, IKeyRegistrarTypes.CurveType.BN254); - - vm.prank(avs2); - keyRegistrar.configureOperatorSet(alternativeOperatorSet, IKeyRegistrarTypes.CurveType.BN254); - } - - // Helper functions - function _registerOperatorKey( - address operator, - OperatorSet memory operatorSet, - BN254.G1Point memory g1Key, - BN254.G2Point memory g2Key, - uint privKey - ) internal { - bytes memory pubkey = abi.encode(g1Key.X, g1Key.Y, g2Key.X, g2Key.Y); - bytes memory signature = _generateBN254Signature(operator, operatorSet, pubkey, privKey); - - vm.prank(operator); - keyRegistrar.registerKey(operator, operatorSet, pubkey, signature); - } - - function _generateBN254Signature(address operator, OperatorSet memory operatorSet, bytes memory pubkey, uint privKey) - internal - view - returns (bytes memory) - { - bytes32 structHash = keccak256( - abi.encode(keyRegistrar.BN254_KEY_REGISTRATION_TYPEHASH(), operator, operatorSet.avs, operatorSet.id, keccak256(pubkey)) - ); - bytes32 messageHash = keyRegistrar.domainSeparator(); - messageHash = keccak256(abi.encodePacked("\x19\x01", messageHash, structHash)); - - BN254.G1Point memory msgPoint = BN254.hashToG1(messageHash); - BN254.G1Point memory signature = msgPoint.scalar_mul(privKey); - - return abi.encode(signature.X, signature.Y); - } - - function _createSingleWeightArray(uint weight) internal pure returns (uint[][] memory) { - uint[][] memory weights = new uint[][](1); - weights[0] = new uint[](1); - weights[0][0] = weight; - return weights; - } - - function _createMultiWeightArray(uint[] memory weightValues) internal pure returns (uint[][] memory) { - uint[][] memory weights = new uint[][](1); - weights[0] = weightValues; - return weights; - } - - function _addG1Points(BN254.G1Point memory p1, BN254.G1Point memory p2) internal view returns (BN254.G1Point memory) { - if (p1.X == 0 && p1.Y == 0) return p2; - if (p2.X == 0 && p2.Y == 0) return p1; - return BN254.plus(p1, p2); - } -} - -/** - * @title BN254TableCalculatorBaseUnitTests_calculateOperatorTable - * @notice Unit tests for BN254TableCalculatorBase.calculateOperatorTable - */ -contract BN254TableCalculatorBaseUnitTests_calculateOperatorTable is BN254TableCalculatorBaseUnitTests { - function test_noOperators() public { - // Set empty operators and weights - address[] memory operators = new address[](0); - uint[][] memory weights = new uint[][](0); - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(info.numOperators, 0, "Should have 0 operators"); - assertEq(info.totalWeights.length, 0, "Should have empty total weights"); - assertEq(info.aggregatePubkey.X, 0, "Aggregate pubkey X should be 0"); - assertEq(info.aggregatePubkey.Y, 0, "Aggregate pubkey Y should be 0"); - } - - function test_operatorsWithNoRegisteredKeys() public { - // Set operators without registering their keys - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - - // When no operators have registered keys, operatorCount should be 0 and return empty table - assertEq(info.numOperators, 0, "Should have 0 operators when none are registered"); - assertEq(info.totalWeights.length, 0, "Should have empty total weights when no operators registered"); - assertEq(info.operatorInfoTreeRoot, bytes32(0), "Should have zero tree root"); - assertEq(info.aggregatePubkey.X, 0, "Aggregate pubkey X should be 0"); - assertEq(info.aggregatePubkey.Y, 0, "Aggregate pubkey Y should be 0"); - } - - function test_allOperatorsRegistered() public { - // Register operators - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - _registerOperatorKey(operator2, defaultOperatorSet, bn254G1Key2, bn254G2Key2, BN254_PRIV_KEY_2); - - // Set operators and weights - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(info.numOperators, 2, "Should have 2 operators"); - assertEq(info.totalWeights.length, 1, "Should have 1 weight type"); - assertEq(info.totalWeights[0], 300, "Total weight should be 300"); - - // Verify aggregate pubkey is correct (sum of G1 points) - BN254.G1Point memory expectedAggregate = _addG1Points(bn254G1Key1, bn254G1Key2); - assertEq(info.aggregatePubkey.X, expectedAggregate.X, "Aggregate pubkey X mismatch"); - assertEq(info.aggregatePubkey.Y, expectedAggregate.Y, "Aggregate pubkey Y mismatch"); - } - - function test_multipleWeightTypes() public { - // Register operators - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - _registerOperatorKey(operator2, defaultOperatorSet, bn254G1Key2, bn254G2Key2, BN254_PRIV_KEY_2); - - // Set operators and weights with multiple types - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - uint[] memory op1Weights = new uint[](3); - op1Weights[0] = 100; - op1Weights[1] = 150; - op1Weights[2] = 50; - weights[0] = op1Weights; - - uint[] memory op2Weights = new uint[](3); - op2Weights[0] = 200; - op2Weights[1] = 250; - op2Weights[2] = 100; - weights[1] = op2Weights; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(info.totalWeights.length, 3, "Should have 3 weight types"); - assertEq(info.totalWeights[0], 300, "Total weight[0] should be 300"); - assertEq(info.totalWeights[1], 400, "Total weight[1] should be 400"); - assertEq(info.totalWeights[2], 150, "Total weight[2] should be 150"); - } - - function test_mixedRegistrationStatus() public { - // Register only operator1 - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; // registered - operators[1] = operator2; // not registered - operators[2] = operator3; // not registered - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(info.numOperators, 1, "Should have 1 operator (only registered ones count)"); - assertEq(info.totalWeights[0], 100, "Total weight should be 100 (only operator1)"); - assertEq(info.aggregatePubkey.X, bn254G1Key1.X, "Aggregate pubkey X should be operator1's"); - assertEq(info.aggregatePubkey.Y, bn254G1Key1.Y, "Aggregate pubkey Y should be operator1's"); - } - - function test_singleOperatorRegistered() public { - // Test with 1 operator, 1 registered - address newOperator = address(uint160(100)); - - address[] memory operators = new address[](1); - operators[0] = newOperator; - uint[][] memory weights = new uint[][](1); - weights[0] = _createSingleWeightArray(100)[0]; - - _registerOperatorKey(newOperator, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - assertEq(info.numOperators, 1, "Should have 1 operator"); - assertEq(info.totalWeights[0], 100, "Total weight should be 100"); - assertEq(info.aggregatePubkey.X, bn254G1Key1.X, "Aggregate pubkey X mismatch"); - assertEq(info.aggregatePubkey.Y, bn254G1Key1.Y, "Aggregate pubkey Y mismatch"); - } - - function test_subsetOfOperatorsRegistered() public { - // Register operator1 and operator3, but not operator2 - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; // registered - operators[1] = operator2; // not registered - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; // This weight won't be included - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(info.numOperators, 1, "Should have 1 operator (only registered ones)"); - assertEq(info.totalWeights[0], 100, "Total weight should be 100 (100 + 300)"); - - // Verify aggregate pubkey is sum of registered operators' keys - BN254.G1Point memory expectedAggregate = bn254G1Key1; - assertEq(info.aggregatePubkey.X, expectedAggregate.X, "Aggregate pubkey X mismatch"); - assertEq(info.aggregatePubkey.Y, expectedAggregate.Y, "Aggregate pubkey Y mismatch"); - - // Verify merkle root is non-zero - assertTrue(info.operatorInfoTreeRoot != bytes32(0), "Merkle root should be non-zero"); - } - - function test_emptyOperatorSetReturnsZeroValues() public { - // Test with operators that exist but none registered - address[] memory operators = new address[](3); - operators[0] = operator1; - operators[1] = operator2; - operators[2] = operator3; - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - // Don't register any operators - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorSetInfo memory info = calculator.calculateOperatorTable(defaultOperatorSet); - - // Verify all values are zero/empty when no operators are registered - assertEq(info.operatorInfoTreeRoot, bytes32(0), "Tree root should be zero"); - assertEq(info.numOperators, 0, "Should have 0 operators"); - assertEq(info.aggregatePubkey.X, 0, "Aggregate pubkey X should be 0"); - assertEq(info.aggregatePubkey.Y, 0, "Aggregate pubkey Y should be 0"); - assertEq(info.totalWeights.length, 0, "Total weights should be empty array"); - } -} - -/** - * @title BN254TableCalculatorBaseUnitTests_calculateOperatorTableBytes - * @notice Unit tests for BN254TableCalculatorBase.calculateOperatorTableBytes - */ -contract BN254TableCalculatorBaseUnitTests_calculateOperatorTableBytes is BN254TableCalculatorBaseUnitTests { - function test_encodesCorrectly() public { - // Register operator - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](1); - operators[0] = operator1; - uint[][] memory weights = _createSingleWeightArray(100); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - bytes memory tableBytes = calculator.calculateOperatorTableBytes(defaultOperatorSet); - - // Decode and verify - BN254OperatorSetInfo memory decodedInfo = abi.decode(tableBytes, (BN254OperatorSetInfo)); - - assertEq(decodedInfo.numOperators, 1, "Should have 1 operator"); - assertEq(decodedInfo.totalWeights[0], 100, "Total weight should be 100"); - assertEq(decodedInfo.aggregatePubkey.X, bn254G1Key1.X, "Aggregate pubkey X mismatch"); - assertEq(decodedInfo.aggregatePubkey.Y, bn254G1Key1.Y, "Aggregate pubkey Y mismatch"); - } - - function testFuzz_encodesCorrectly(uint weight) public { - weight = bound(weight, 1, 1e18); - - // Register operator - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](1); - operators[0] = operator1; - uint[][] memory weights = _createSingleWeightArray(weight); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - bytes memory tableBytes = calculator.calculateOperatorTableBytes(defaultOperatorSet); - - // Decode and verify - BN254OperatorSetInfo memory decodedInfo = abi.decode(tableBytes, (BN254OperatorSetInfo)); - - assertEq(decodedInfo.totalWeights[0], weight, "Weight mismatch"); - } -} - -/** - * @title BN254TableCalculatorBaseUnitTests_getOperatorWeights - * @notice Unit tests for BN254TableCalculatorBase.getOperatorWeights - */ -contract BN254TableCalculatorBaseUnitTests_getOperatorWeights is BN254TableCalculatorBaseUnitTests { - function test_returnsImplementationResult() public { - // Set mock weights - address[] memory expectedOperators = new address[](2); - expectedOperators[0] = operator1; - expectedOperators[1] = operator2; - - uint[][] memory expectedWeights = new uint[][](2); - expectedWeights[0] = _createSingleWeightArray(100)[0]; - expectedWeights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, expectedOperators, expectedWeights); - - (address[] memory operators, uint[][] memory weights) = calculator.getOperatorWeights(defaultOperatorSet); - - assertEq(operators.length, expectedOperators.length, "Operators length mismatch"); - assertEq(weights.length, expectedWeights.length, "Weights length mismatch"); - - for (uint i = 0; i < operators.length; i++) { - assertEq(operators[i], expectedOperators[i], "Operator address mismatch"); - assertEq(weights[i][0], expectedWeights[i][0], "Weight value mismatch"); - } - } - - function testFuzz_returnsImplementationResult(uint8 numOperators) public { - numOperators = uint8(bound(numOperators, 0, 20)); - - address[] memory expectedOperators = new address[](numOperators); - uint[][] memory expectedWeights = new uint[][](numOperators); - - for (uint i = 0; i < numOperators; i++) { - expectedOperators[i] = address(uint160(i + 100)); - expectedWeights[i] = _createSingleWeightArray((i + 1) * 100)[0]; - } - - calculator.setMockOperatorWeights(defaultOperatorSet, expectedOperators, expectedWeights); - - (address[] memory operators, uint[][] memory weights) = calculator.getOperatorWeights(defaultOperatorSet); - - assertEq(operators.length, numOperators, "Operators length mismatch"); - assertEq(weights.length, numOperators, "Weights length mismatch"); - } -} - -/** - * @title BN254TableCalculatorBaseUnitTests_getOperatorWeight - * @notice Unit tests for BN254TableCalculatorBase.getOperatorWeight - */ -contract BN254TableCalculatorBaseUnitTests_getOperatorWeight is BN254TableCalculatorBaseUnitTests { - function test_operatorExists() public { - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; - operators[1] = operator2; - operators[2] = operator3; - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator1), 100, "Operator1 weight mismatch"); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator2), 200, "Operator2 weight mismatch"); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator3), 300, "Operator3 weight mismatch"); - } - - function test_operatorDoesNotExist() public { - // Set operators and weights - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator3), 0, "Non-existent operator should return 0"); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, address(0xdead)), 0, "Random address should return 0"); - } - - function test_emptyOperatorSet() public { - // Set empty operators and weights - address[] memory operators = new address[](0); - uint[][] memory weights = new uint[][](0); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator1), 0, "Should return 0 for empty set"); - } - - function testFuzz_getOperatorWeight(address operator, uint weight) public { - weight = bound(weight, 0, 1e18); - - // Set single operator - address[] memory operators = new address[](1); - operators[0] = operator; - - uint[][] memory weights = _createSingleWeightArray(weight); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator), weight, "Weight mismatch"); - - // Different operator should return 0 - address differentOperator = address(uint160(uint(uint160(operator)) + 1)); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, differentOperator), 0, "Different operator should return 0"); - } -} - -/** - * @title BN254TableCalculatorBaseUnitTests_getOperatorInfos - * @notice Unit tests for BN254TableCalculatorBase.getOperatorInfos - */ -contract BN254TableCalculatorBaseUnitTests_getOperatorInfos is BN254TableCalculatorBaseUnitTests { - function test_noOperatorsRegistered() public { - // Set operators without registering keys - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorInfo[] memory infos = calculator.getOperatorInfos(defaultOperatorSet); - - assertEq(infos.length, 2, "Should have 2 operator infos"); - - // Both should have zero pubkeys since not registered - for (uint i = 0; i < infos.length; i++) { - assertEq(infos[i].pubkey.X, 0, "Unregistered operator pubkey X should be 0"); - assertEq(infos[i].pubkey.Y, 0, "Unregistered operator pubkey Y should be 0"); - assertEq(infos[i].weights.length, 0, "Unregistered operator weights should be empty"); - } - } - - function test_someOperatorsNotRegistered() public { - // Register only operator1 (skip operator3 to avoid pairing issues) - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; // registered - operators[1] = operator2; // not registered - operators[2] = operator3; // not registered - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorInfo[] memory infos = calculator.getOperatorInfos(defaultOperatorSet); - - assertEq(infos.length, 3, "Should have 3 operator infos"); - - // Check operator1 (registered) - assertEq(infos[0].pubkey.X, bn254G1Key1.X, "Operator1 pubkey X mismatch"); - assertEq(infos[0].pubkey.Y, bn254G1Key1.Y, "Operator1 pubkey Y mismatch"); - assertEq(infos[0].weights[0], 100, "Operator1 weight mismatch"); - - // Check operator2 (not registered) - assertEq(infos[1].pubkey.X, 0, "Operator2 pubkey X should be 0"); - assertEq(infos[1].pubkey.Y, 0, "Operator2 pubkey Y should be 0"); - assertEq(infos[1].weights.length, 0, "Operator2 weights should be empty"); - - // Check operator3 (not registered) - assertEq(infos[2].pubkey.X, 0, "Operator3 pubkey X should be 0"); - assertEq(infos[2].pubkey.Y, 0, "Operator3 pubkey Y should be 0"); - assertEq(infos[2].weights.length, 0, "Operator3 weights should be empty"); - } - - function test_allOperatorsRegistered() public { - // Register all operators - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - _registerOperatorKey(operator2, defaultOperatorSet, bn254G1Key2, bn254G2Key2, BN254_PRIV_KEY_2); - - // Set operators and weights - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorInfo[] memory infos = calculator.getOperatorInfos(defaultOperatorSet); - - assertEq(infos.length, 2, "Should have 2 operator infos"); - - // Check operator1 - assertEq(infos[0].pubkey.X, bn254G1Key1.X, "Operator1 pubkey X mismatch"); - assertEq(infos[0].pubkey.Y, bn254G1Key1.Y, "Operator1 pubkey Y mismatch"); - assertEq(infos[0].weights[0], 100, "Operator1 weight mismatch"); - - // Check operator2 - assertEq(infos[1].pubkey.X, bn254G1Key2.X, "Operator2 pubkey X mismatch"); - assertEq(infos[1].pubkey.Y, bn254G1Key2.Y, "Operator2 pubkey Y mismatch"); - assertEq(infos[1].weights[0], 200, "Operator2 weight mismatch"); - } - - function test_multipleWeightTypes() public { - // Register operator - _registerOperatorKey(operator1, defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - - // Set operators and weights with multiple types - address[] memory operators = new address[](1); - operators[0] = operator1; - - uint[][] memory weights = new uint[][](1); - uint[] memory multiWeights = new uint[](3); - multiWeights[0] = 100; - multiWeights[1] = 200; - multiWeights[2] = 300; - weights[0] = multiWeights; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorInfo[] memory infos = calculator.getOperatorInfos(defaultOperatorSet); - - assertEq(infos.length, 1, "Should have 1 operator info"); - assertEq(infos[0].weights.length, 3, "Should have 3 weight types"); - assertEq(infos[0].weights[0], 100, "Weight[0] mismatch"); - assertEq(infos[0].weights[1], 200, "Weight[1] mismatch"); - assertEq(infos[0].weights[2], 300, "Weight[2] mismatch"); - } - - function testFuzz_getOperatorInfos(uint8 numOperators) public { - numOperators = uint8(bound(numOperators, 1, 5)); - - address[] memory operators = new address[](numOperators); - uint[][] memory weights = new uint[][](numOperators); - - // Generate operators and weights - for (uint i = 0; i < numOperators; i++) { - operators[i] = address(uint160(i + 100)); - weights[i] = _createSingleWeightArray((i + 1) * 100)[0]; - } - - // Register some operators with valid keys - if (numOperators >= 1) _registerOperatorKey(operators[0], defaultOperatorSet, bn254G1Key1, bn254G2Key1, BN254_PRIV_KEY_1); - if (numOperators >= 3) _registerOperatorKey(operators[2], defaultOperatorSet, bn254G1Key2, bn254G2Key2, BN254_PRIV_KEY_2); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - BN254OperatorInfo[] memory infos = calculator.getOperatorInfos(defaultOperatorSet); - - assertEq(infos.length, numOperators, "Operator info count mismatch"); - - for (uint i = 0; i < numOperators; i++) { - if ((i == 0 && numOperators >= 1) || (i == 2 && numOperators >= 3)) { - // Registered operators should have weights - assertEq(infos[i].weights.length, 1, "Registered operator should have weights"); - assertEq(infos[i].weights[0], (i + 1) * 100, "Weight value mismatch"); - assertTrue(infos[i].pubkey.X != 0 || infos[i].pubkey.Y != 0, "Registered operator should have pubkey"); - } else { - // Unregistered operators should have empty weights - assertEq(infos[i].weights.length, 0, "Unregistered operator should have empty weights"); - assertEq(infos[i].pubkey.X, 0, "Unregistered operator pubkey X should be 0"); - assertEq(infos[i].pubkey.Y, 0, "Unregistered operator pubkey Y should be 0"); - } - } - } -} diff --git a/src/test/unit/ECDSATableCalculatorBaseUnit.t.sol b/src/test/unit/ECDSATableCalculatorBaseUnit.t.sol deleted file mode 100644 index 934cd7b4a5..0000000000 --- a/src/test/unit/ECDSATableCalculatorBaseUnit.t.sol +++ /dev/null @@ -1,742 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.27; - -import "forge-std/Test.sol"; -import "src/contracts/multichain/ECDSATableCalculatorBase.sol"; -import "src/contracts/permissions/KeyRegistrar.sol"; -import "src/contracts/interfaces/IKeyRegistrar.sol"; -import "src/contracts/interfaces/IOperatorTableCalculator.sol"; -import "src/contracts/interfaces/IECDSATableCalculator.sol"; -import "src/contracts/libraries/OperatorSetLib.sol"; -import "src/contracts/libraries/SlashingLib.sol"; -import "src/test/utils/EigenLayerMultichainUnitTestSetup.sol"; -import "src/test/mocks/AllocationManagerMock.sol"; -import "src/test/utils/Random.sol"; - -// Mock implementation for testing abstract contract -contract ECDSATableCalculatorBaseHarness is ECDSATableCalculatorBase { - // Storage for mock weights - mapping(bytes32 => address[]) internal _mockOperators; - mapping(bytes32 => uint[][]) internal _mockWeights; - - constructor(IKeyRegistrar _keyRegistrar) ECDSATableCalculatorBase(_keyRegistrar) {} - - function setMockOperatorWeights(OperatorSet calldata operatorSet, address[] memory operators, uint[][] memory weights) external { - bytes32 key = operatorSet.key(); - _mockOperators[key] = operators; - _mockWeights[key] = weights; - } - - function _getOperatorWeights(OperatorSet calldata operatorSet) - internal - view - override - returns (address[] memory operators, uint[][] memory weights) - { - bytes32 key = operatorSet.key(); - operators = _mockOperators[key]; - weights = _mockWeights[key]; - } -} - -/** - * @title ECDSATableCalculatorBaseUnitTests - * @notice Base contract for all ECDSATableCalculatorBase unit tests - */ -contract ECDSATableCalculatorBaseUnitTests is EigenLayerMultichainUnitTestSetup, IECDSATableCalculatorTypes, IKeyRegistrarTypes { - using OperatorSetLib for OperatorSet; - - // Test contracts - ECDSATableCalculatorBaseHarness public calculator; - - // Test addresses - address public avs1 = address(0x1); - address public avs2 = address(0x2); - address public operator1 = address(0x3); - address public operator2 = address(0x4); - address public operator3 = address(0x5); - - // Test operator sets - OperatorSet defaultOperatorSet; - OperatorSet alternativeOperatorSet; - - // ECDSA test keys (private keys for signature generation) - uint constant ECDSA_PRIV_KEY_1 = 0x1234567890123456789012345678901234567890123456789012345678901234; - uint constant ECDSA_PRIV_KEY_2 = 0x9876543210987654321098765432109876543210987654321098765432109876; - uint constant ECDSA_PRIV_KEY_3 = 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890; - - // ECDSA addresses (public keys) - address public ecdsaAddress1; - address public ecdsaAddress2; - address public ecdsaAddress3; - - // ECDSA key data (20-byte addresses) - bytes public ecdsaKey1; - bytes public ecdsaKey2; - bytes public ecdsaKey3; - - function setUp() public virtual override { - EigenLayerMultichainUnitTestSetup.setUp(); - - // Deploy calculator with KeyRegistrar - calculator = new ECDSATableCalculatorBaseHarness(keyRegistrar); - - // Set up operator sets - defaultOperatorSet = OperatorSet({avs: avs1, id: 0}); - alternativeOperatorSet = OperatorSet({avs: avs2, id: 1}); - - // Set up ECDSA addresses that correspond to the private keys - ecdsaAddress1 = vm.addr(ECDSA_PRIV_KEY_1); - ecdsaAddress2 = vm.addr(ECDSA_PRIV_KEY_2); - ecdsaAddress3 = vm.addr(ECDSA_PRIV_KEY_3); - - // Set up ECDSA key data (20-byte addresses) - ecdsaKey1 = abi.encodePacked(ecdsaAddress1); - ecdsaKey2 = abi.encodePacked(ecdsaAddress2); - ecdsaKey3 = abi.encodePacked(ecdsaAddress3); - - // Configure operator sets in AllocationManager - allocationManagerMock.setAVSRegistrar(avs1, avs1); - allocationManagerMock.setAVSRegistrar(avs2, avs2); - - // Configure operator sets for ECDSA - vm.prank(avs1); - keyRegistrar.configureOperatorSet(defaultOperatorSet, IKeyRegistrarTypes.CurveType.ECDSA); - - vm.prank(avs2); - keyRegistrar.configureOperatorSet(alternativeOperatorSet, IKeyRegistrarTypes.CurveType.ECDSA); - } - - // Helper functions - function _registerOperatorKey(address operator, OperatorSet memory operatorSet, address ecdsaAddress, uint privKey) internal { - bytes memory signature = _generateECDSASignature(operator, operatorSet, ecdsaAddress, privKey); - - vm.prank(operator); - keyRegistrar.registerKey(operator, operatorSet, abi.encodePacked(ecdsaAddress), signature); - } - - function _generateECDSASignature(address operator, OperatorSet memory operatorSet, address ecdsaAddress, uint privKey) - internal - view - returns (bytes memory) - { - bytes32 messageHash = keyRegistrar.getECDSAKeyRegistrationMessageHash(operator, operatorSet, ecdsaAddress); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign(privKey, messageHash); - return abi.encodePacked(r, s, v); - } - - function _createSingleWeightArray(uint weight) internal pure returns (uint[][] memory) { - uint[][] memory weights = new uint[][](1); - weights[0] = new uint[](1); - weights[0][0] = weight; - return weights; - } - - function _createMultiWeightArray(uint[] memory weightValues) internal pure returns (uint[][] memory) { - uint[][] memory weights = new uint[][](1); - weights[0] = weightValues; - return weights; - } -} - -/** - * @title ECDSATableCalculatorBaseUnitTests_calculateOperatorTable - * @notice Unit tests for ECDSATableCalculatorBase.calculateOperatorTable - */ -contract ECDSATableCalculatorBaseUnitTests_calculateOperatorTable is ECDSATableCalculatorBaseUnitTests { - function test_noOperators() public { - // Set empty operators and weights - address[] memory operators = new address[](0); - uint[][] memory weights = new uint[][](0); - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(infos.length, 0, "Should have 0 operators"); - } - - function test_operatorsWithNoRegisteredKeys() public { - // Set operators without registering their keys - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - // When no operators have registered keys, should return empty array - assertEq(infos.length, 0, "Should have 0 operators when none are registered"); - } - - function test_allOperatorsRegistered() public { - // Register operators - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - _registerOperatorKey(operator2, defaultOperatorSet, ecdsaAddress2, ECDSA_PRIV_KEY_2); - - // Set operators and weights - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(infos.length, 2, "Should have 2 operators"); - assertEq(infos[0].pubkey, ecdsaAddress1, "Operator1 pubkey mismatch"); - assertEq(infos[0].weights[0], 100, "Operator1 weight mismatch"); - assertEq(infos[1].pubkey, ecdsaAddress2, "Operator2 pubkey mismatch"); - assertEq(infos[1].weights[0], 200, "Operator2 weight mismatch"); - } - - function test_multipleWeightTypes() public { - // Register operators - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - _registerOperatorKey(operator2, defaultOperatorSet, ecdsaAddress2, ECDSA_PRIV_KEY_2); - - // Set operators and weights with multiple types - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - uint[] memory op1Weights = new uint[](3); - op1Weights[0] = 100; - op1Weights[1] = 150; - op1Weights[2] = 50; - weights[0] = op1Weights; - - uint[] memory op2Weights = new uint[](3); - op2Weights[0] = 200; - op2Weights[1] = 250; - op2Weights[2] = 100; - weights[1] = op2Weights; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(infos.length, 2, "Should have 2 operators"); - assertEq(infos[0].weights.length, 3, "Operator1 should have 3 weight types"); - assertEq(infos[0].weights[0], 100, "Operator1 weight[0] mismatch"); - assertEq(infos[0].weights[1], 150, "Operator1 weight[1] mismatch"); - assertEq(infos[0].weights[2], 50, "Operator1 weight[2] mismatch"); - assertEq(infos[1].weights.length, 3, "Operator2 should have 3 weight types"); - assertEq(infos[1].weights[0], 200, "Operator2 weight[0] mismatch"); - assertEq(infos[1].weights[1], 250, "Operator2 weight[1] mismatch"); - assertEq(infos[1].weights[2], 100, "Operator2 weight[2] mismatch"); - } - - function test_mixedRegistrationStatus() public { - // Register only operator1 - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; // registered - operators[1] = operator2; // not registered - operators[2] = operator3; // not registered - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(infos.length, 1, "Should have 1 operator (only registered ones count)"); - assertEq(infos[0].pubkey, ecdsaAddress1, "Operator1 pubkey mismatch"); - assertEq(infos[0].weights[0], 100, "Operator1 weight mismatch"); - } - - function test_singleOperatorRegistered() public { - // Test with 1 operator, 1 registered - address newOperator = address(uint160(100)); - - address[] memory operators = new address[](1); - operators[0] = newOperator; - uint[][] memory weights = new uint[][](1); - weights[0] = _createSingleWeightArray(100)[0]; - - _registerOperatorKey(newOperator, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - assertEq(infos.length, 1, "Should have 1 operator"); - assertEq(infos[0].pubkey, ecdsaAddress1, "Operator pubkey mismatch"); - assertEq(infos[0].weights[0], 100, "Operator weight mismatch"); - } - - function test_subsetRegisteredToAVS() public { - // Register all operator keys - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - _registerOperatorKey(operator2, defaultOperatorSet, ecdsaAddress2, ECDSA_PRIV_KEY_2); - _registerOperatorKey(operator3, defaultOperatorSet, ecdsaAddress3, ECDSA_PRIV_KEY_3); // Not in actual operator set - - // Set operators and weights - address[] memory operators = new address[](2); - operators[0] = operator1; // registered - operators[1] = operator2; // registered - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(infos.length, 2, "Should have 2 operators"); - assertEq(infos[0].pubkey, ecdsaAddress1, "Operator1 pubkey mismatch"); - assertEq(infos[0].weights[0], 100, "Operator1 weight mismatch"); - assertEq(infos[1].pubkey, ecdsaAddress2, "Operator2 pubkey mismatch"); - assertEq(infos[1].weights[0], 200, "Operator2 weight mismatch"); - } - - function test_subsetRegisteredKey() public { - // Register operator1 and operator3, but not operator2 - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - _registerOperatorKey(operator3, defaultOperatorSet, ecdsaAddress3, ECDSA_PRIV_KEY_3); - - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; // registered - operators[1] = operator2; // not registered - operators[2] = operator3; // registered - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; // This weight won't be included - weights[2] = _createSingleWeightArray(300)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - assertEq(infos.length, 2, "Should have 2 operators (only registered ones)"); - assertEq(infos[0].pubkey, ecdsaAddress1, "Operator1 pubkey mismatch"); - assertEq(infos[0].weights[0], 100, "Operator1 weight mismatch"); - assertEq(infos[1].pubkey, ecdsaAddress3, "Operator3 pubkey mismatch"); - assertEq(infos[1].weights[0], 300, "Operator3 weight mismatch"); - } - - function test_emptyOperatorSetReturnsEmptyArray() public { - // Test with operators that exist but none registered - address[] memory operators = new address[](3); - operators[0] = operator1; - operators[1] = operator2; - operators[2] = operator3; - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - // Don't register any operators - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - // Verify empty array when no operators are registered - assertEq(infos.length, 0, "Should have 0 operators when none are registered"); - } - - function testFuzz_calculateOperatorTable(Randomness r, uint8 numOperators, uint8 numRegistered) public rand(r) { - numOperators = uint8(r.Uint256() % 10 + 1); // 1-10 operators - numRegistered = uint8(r.Uint256() % (numOperators + 1)); // 0 to numOperators registered - - address[] memory operators = new address[](numOperators); - uint[][] memory weights = new uint[][](numOperators); - - // Generate random operators and weights - for (uint i = 0; i < numOperators; i++) { - operators[i] = address(uint160(r.Uint256())); - weights[i] = _createSingleWeightArray(r.Uint256() % 1000 + 1)[0]; - } - - // Register random subset of operators - uint[] memory registeredIndices = new uint[](numRegistered); - for (uint i = 0; i < numRegistered; i++) { - uint idx = r.Uint256() % numOperators; - // Ensure unique indices - bool unique = true; - for (uint j = 0; j < i; j++) { - if (registeredIndices[j] == idx) { - unique = false; - break; - } - } - if (unique) { - registeredIndices[i] = idx; - address ecdsaAddr = vm.addr(uint(keccak256(abi.encode(operators[idx], i)))); - _registerOperatorKey(operators[idx], defaultOperatorSet, ecdsaAddr, uint(keccak256(abi.encode(operators[idx], i)))); - } - } - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - ECDSAOperatorInfo[] memory infos = calculator.calculateOperatorTable(defaultOperatorSet); - - // Count actual registered operators - uint actualRegistered = 0; - for (uint i = 0; i < numOperators; i++) { - if (keyRegistrar.isRegistered(defaultOperatorSet, operators[i])) actualRegistered++; - } - - assertEq(infos.length, actualRegistered, "Should have correct number of registered operators"); - } -} - -/** - * @title ECDSATableCalculatorBaseUnitTests_calculateOperatorTableBytes - * @notice Unit tests for ECDSATableCalculatorBase.calculateOperatorTableBytes - */ -contract ECDSATableCalculatorBaseUnitTests_calculateOperatorTableBytes is ECDSATableCalculatorBaseUnitTests { - function test_encodesCorrectly() public { - // Register operator - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](1); - operators[0] = operator1; - uint[][] memory weights = _createSingleWeightArray(100); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - bytes memory tableBytes = calculator.calculateOperatorTableBytes(defaultOperatorSet); - - // Decode and verify - ECDSAOperatorInfo[] memory decodedInfos = abi.decode(tableBytes, (ECDSAOperatorInfo[])); - - assertEq(decodedInfos.length, 1, "Should have 1 operator"); - assertEq(decodedInfos[0].weights[0], 100, "Total weight should be 100"); - assertEq(decodedInfos[0].pubkey, ecdsaAddress1, "Pubkey mismatch"); - } - - function test_multipleOperatorsEncodedCorrectly() public { - // Register multiple operators - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - _registerOperatorKey(operator2, defaultOperatorSet, ecdsaAddress2, ECDSA_PRIV_KEY_2); - _registerOperatorKey(operator3, defaultOperatorSet, ecdsaAddress3, ECDSA_PRIV_KEY_3); - - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; - operators[1] = operator2; - operators[2] = operator3; - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - bytes memory tableBytes = calculator.calculateOperatorTableBytes(defaultOperatorSet); - - // Decode and verify - ECDSAOperatorInfo[] memory decodedInfos = abi.decode(tableBytes, (ECDSAOperatorInfo[])); - - assertEq(decodedInfos.length, 3, "Should have 3 operators"); - assertEq(decodedInfos[0].pubkey, ecdsaAddress1, "Operator1 pubkey mismatch"); - assertEq(decodedInfos[0].weights[0], 100, "Operator1 weight mismatch"); - assertEq(decodedInfos[1].pubkey, ecdsaAddress2, "Operator2 pubkey mismatch"); - assertEq(decodedInfos[1].weights[0], 200, "Operator2 weight mismatch"); - assertEq(decodedInfos[2].pubkey, ecdsaAddress3, "Operator3 pubkey mismatch"); - assertEq(decodedInfos[2].weights[0], 300, "Operator3 weight mismatch"); - } - - function test_emptyOperatorSetEncodesEmptyArray() public { - // Don't register any operators - address[] memory operators = new address[](0); - uint[][] memory weights = new uint[][](0); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - bytes memory tableBytes = calculator.calculateOperatorTableBytes(defaultOperatorSet); - - // Decode and verify - ECDSAOperatorInfo[] memory decodedInfos = abi.decode(tableBytes, (ECDSAOperatorInfo[])); - - assertEq(decodedInfos.length, 0, "Should encode empty array"); - } - - function testFuzz_encodesCorrectly(Randomness r, uint weight) public rand(r) { - weight = r.Uint256() % 1e18 + 1; // 1 to 1e18 - - // Register operator - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - - // Set operators and weights - address[] memory operators = new address[](1); - operators[0] = operator1; - uint[][] memory weights = _createSingleWeightArray(weight); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - bytes memory tableBytes = calculator.calculateOperatorTableBytes(defaultOperatorSet); - - // Decode and verify - ECDSAOperatorInfo[] memory decodedInfos = abi.decode(tableBytes, (ECDSAOperatorInfo[])); - - assertEq(decodedInfos[0].weights[0], weight, "Weight mismatch"); - } - - function testFuzz_multipleWeightTypesEncoded(Randomness r, uint8 numWeightTypes) public rand(r) { - numWeightTypes = uint8(r.Uint256() % 5 + 1); // 1-5 weight types - - // Register operator - _registerOperatorKey(operator1, defaultOperatorSet, ecdsaAddress1, ECDSA_PRIV_KEY_1); - - // Create random weights - uint[] memory weightValues = new uint[](numWeightTypes); - for (uint i = 0; i < numWeightTypes; i++) { - weightValues[i] = r.Uint256() % 1000 + 1; - } - - address[] memory operators = new address[](1); - operators[0] = operator1; - uint[][] memory weights = new uint[][](1); - weights[0] = weightValues; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - bytes memory tableBytes = calculator.calculateOperatorTableBytes(defaultOperatorSet); - - // Decode and verify - ECDSAOperatorInfo[] memory decodedInfos = abi.decode(tableBytes, (ECDSAOperatorInfo[])); - - assertEq(decodedInfos.length, 1, "Should have 1 operator"); - assertEq(decodedInfos[0].weights.length, numWeightTypes, "Weight types mismatch"); - - for (uint i = 0; i < numWeightTypes; i++) { - assertEq(decodedInfos[0].weights[i], weightValues[i], "Weight value mismatch"); - } - } -} - -/** - * @title ECDSATableCalculatorBaseUnitTests_getOperatorWeights - * @notice Unit tests for ECDSATableCalculatorBase.getOperatorWeights - */ -contract ECDSATableCalculatorBaseUnitTests_getOperatorWeights is ECDSATableCalculatorBaseUnitTests { - function test_returnsImplementationResult() public { - // Set mock weights - address[] memory expectedOperators = new address[](2); - expectedOperators[0] = operator1; - expectedOperators[1] = operator2; - - uint[][] memory expectedWeights = new uint[][](2); - expectedWeights[0] = _createSingleWeightArray(100)[0]; - expectedWeights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, expectedOperators, expectedWeights); - - (address[] memory operators, uint[][] memory weights) = calculator.getOperatorWeights(defaultOperatorSet); - - assertEq(operators.length, expectedOperators.length, "Operators length mismatch"); - assertEq(weights.length, expectedWeights.length, "Weights length mismatch"); - - for (uint i = 0; i < operators.length; i++) { - assertEq(operators[i], expectedOperators[i], "Operator address mismatch"); - assertEq(weights[i][0], expectedWeights[i][0], "Weight value mismatch"); - } - } - - function test_emptyOperatorSet() public { - // Set empty operators and weights - address[] memory expectedOperators = new address[](0); - uint[][] memory expectedWeights = new uint[][](0); - - calculator.setMockOperatorWeights(defaultOperatorSet, expectedOperators, expectedWeights); - - (address[] memory operators, uint[][] memory weights) = calculator.getOperatorWeights(defaultOperatorSet); - - assertEq(operators.length, 0, "Should return empty operators array"); - assertEq(weights.length, 0, "Should return empty weights array"); - } - - function test_alternativeOperatorSet() public { - // Set weights for alternative operator set - address[] memory expectedOperators = new address[](1); - expectedOperators[0] = operator3; - - uint[][] memory expectedWeights = new uint[][](1); - expectedWeights[0] = _createSingleWeightArray(500)[0]; - - calculator.setMockOperatorWeights(alternativeOperatorSet, expectedOperators, expectedWeights); - - (address[] memory operators, uint[][] memory weights) = calculator.getOperatorWeights(alternativeOperatorSet); - - assertEq(operators.length, 1, "Operators length mismatch"); - assertEq(operators[0], operator3, "Operator address mismatch"); - assertEq(weights[0][0], 500, "Weight value mismatch"); - } - - function testFuzz_returnsImplementationResult(Randomness r, uint8 numOperators) public rand(r) { - numOperators = uint8(r.Uint256() % 20); // 0-19 operators - - address[] memory expectedOperators = new address[](numOperators); - uint[][] memory expectedWeights = new uint[][](numOperators); - - for (uint i = 0; i < numOperators; i++) { - expectedOperators[i] = address(uint160(r.Uint256())); - expectedWeights[i] = _createSingleWeightArray(r.Uint256() % 1000 + 1)[0]; - } - - calculator.setMockOperatorWeights(defaultOperatorSet, expectedOperators, expectedWeights); - - (address[] memory operators, uint[][] memory weights) = calculator.getOperatorWeights(defaultOperatorSet); - - assertEq(operators.length, numOperators, "Operators length mismatch"); - assertEq(weights.length, numOperators, "Weights length mismatch"); - - for (uint i = 0; i < numOperators; i++) { - assertEq(operators[i], expectedOperators[i], "Operator address mismatch"); - assertEq(weights[i][0], expectedWeights[i][0], "Weight value mismatch"); - } - } -} - -/** - * @title ECDSATableCalculatorBaseUnitTests_getOperatorWeight - * @notice Unit tests for ECDSATableCalculatorBase.getOperatorWeight - */ -contract ECDSATableCalculatorBaseUnitTests_getOperatorWeight is ECDSATableCalculatorBaseUnitTests { - function test_operatorExists() public { - // Set operators and weights - address[] memory operators = new address[](3); - operators[0] = operator1; - operators[1] = operator2; - operators[2] = operator3; - - uint[][] memory weights = new uint[][](3); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - weights[2] = _createSingleWeightArray(300)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator1), 100, "Operator1 weight mismatch"); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator2), 200, "Operator2 weight mismatch"); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator3), 300, "Operator3 weight mismatch"); - } - - function test_operatorDoesNotExist() public { - // Set operators and weights - address[] memory operators = new address[](2); - operators[0] = operator1; - operators[1] = operator2; - - uint[][] memory weights = new uint[][](2); - weights[0] = _createSingleWeightArray(100)[0]; - weights[1] = _createSingleWeightArray(200)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator3), 0, "Non-existent operator should return 0"); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, address(0xdead)), 0, "Random address should return 0"); - } - - function test_emptyOperatorSet() public { - // Set empty operators and weights - address[] memory operators = new address[](0); - uint[][] memory weights = new uint[][](0); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator1), 0, "Should return 0 for empty set"); - } - - function test_zeroWeight() public { - // Set operator with zero weight - address[] memory operators = new address[](1); - operators[0] = operator1; - - uint[][] memory weights = new uint[][](1); - weights[0] = _createSingleWeightArray(0)[0]; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator1), 0, "Should return 0 for zero weight"); - } - - function test_multipleWeightTypes() public { - // Set operator with multiple weight types - address[] memory operators = new address[](1); - operators[0] = operator1; - - uint[][] memory weights = new uint[][](1); - uint[] memory multiWeights = new uint[](3); - multiWeights[0] = 100; - multiWeights[1] = 200; - multiWeights[2] = 300; - weights[0] = multiWeights; - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - // getOperatorWeight returns first weight type - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator1), 100, "Should return first weight type"); - } - - function testFuzz_getOperatorWeight(Randomness r, address operator, uint weight) public rand(r) { - weight = r.Uint256() % 1e18; // 0 to 1e18 - - // Set single operator - address[] memory operators = new address[](1); - operators[0] = operator; - - uint[][] memory weights = _createSingleWeightArray(weight); - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operator), weight, "Weight mismatch"); - - // Different operator should return 0 - address differentOperator = address(uint160(uint(uint160(operator)) + 1)); - assertEq(calculator.getOperatorWeight(defaultOperatorSet, differentOperator), 0, "Different operator should return 0"); - } - - function testFuzz_multipleOperators(Randomness r, uint8 numOperators) public rand(r) { - numOperators = uint8(r.Uint256() % 10 + 1); // 1-10 operators - - address[] memory operators = new address[](numOperators); - uint[][] memory weights = new uint[][](numOperators); - uint[] memory expectedWeights = new uint[](numOperators); - - for (uint i = 0; i < numOperators; i++) { - operators[i] = address(uint160(r.Uint256())); - expectedWeights[i] = r.Uint256() % 1000 + 1; - weights[i] = _createSingleWeightArray(expectedWeights[i])[0]; - } - - calculator.setMockOperatorWeights(defaultOperatorSet, operators, weights); - - // Verify each operator's weight - for (uint i = 0; i < numOperators; i++) { - assertEq(calculator.getOperatorWeight(defaultOperatorSet, operators[i]), expectedWeights[i], "Weight mismatch"); - } - - // Non-existent operator should return 0 - address nonExistent = address(uint160(r.Uint256())); - bool exists = false; - for (uint i = 0; i < numOperators; i++) { - if (operators[i] == nonExistent) { - exists = true; - break; - } - } - if (!exists) assertEq(calculator.getOperatorWeight(defaultOperatorSet, nonExistent), 0, "Non-existent operator should return 0"); - } -}