From 6aa7d59e8620674319af1e0fcfc6c9e22fd56462 Mon Sep 17 00:00:00 2001 From: Ian Shim <100327837+ian-shim@users.noreply.github.com> Date: Thu, 21 Nov 2024 12:15:13 -0800 Subject: [PATCH] [v2] Offchain integration with v2 onchain interfaces (#921) --- .../bindings/EigenDAServiceManager/binding.go | 260 +++++++++- .../bindings/IEigenDARelayRegistry/binding.go | 449 ++++++++++++++++++ .../IEigenDAServiceManager/binding.go | 213 +++++++-- contracts/bindings/MockRollup/binding.go | 48 +- contracts/compile.sh | 2 +- core/eth/writer.go | 2 +- core/serialization.go | 2 +- core/serialization_test.go | 2 +- inabox/tests/integration_test.go | 16 +- retriever/eth/chain_client.go | 6 +- retriever/eth/chain_client_test.go | 2 +- retriever/mock/chain_client.go | 4 +- retriever/server_test.go | 2 +- tools/traffic/workers/blob_reader_test.go | 9 +- 14 files changed, 922 insertions(+), 95 deletions(-) create mode 100644 contracts/bindings/IEigenDARelayRegistry/binding.go diff --git a/contracts/bindings/EigenDAServiceManager/binding.go b/contracts/bindings/EigenDAServiceManager/binding.go index 19f8b4be4..e2af11f65 100644 --- a/contracts/bindings/EigenDAServiceManager/binding.go +++ b/contracts/bindings/EigenDAServiceManager/binding.go @@ -41,6 +41,14 @@ type BN254G2Point struct { Y [2]*big.Int } +// BatchHeader is an auto generated low-level Go binding around an user-defined struct. +type BatchHeader struct { + BlobHeadersRoot [32]byte + QuorumNumbers []byte + SignedStakeForQuorums []byte + ReferenceBlockNumber uint32 +} + // IBLSSignatureCheckerNonSignerStakesAndSignature is an auto generated low-level Go binding around an user-defined struct. type IBLSSignatureCheckerNonSignerStakesAndSignature struct { NonSignerQuorumBitmapIndices []uint32 @@ -59,14 +67,6 @@ type IBLSSignatureCheckerQuorumStakeTotals struct { TotalStakeForQuorum []*big.Int } -// IEigenDAServiceManagerBatchHeader is an auto generated low-level Go binding around an user-defined struct. -type IEigenDAServiceManagerBatchHeader struct { - BlobHeadersRoot [32]byte - QuorumNumbers []byte - SignedStakeForQuorums []byte - ReferenceBlockNumber uint32 -} - // IRewardsCoordinatorRewardsSubmission is an auto generated low-level Go binding around an user-defined struct. type IRewardsCoordinatorRewardsSubmission struct { StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier @@ -89,10 +89,23 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { Expiry *big.Int } +// SecurityThresholds is an auto generated low-level Go binding around an user-defined struct. +type SecurityThresholds struct { + ConfirmationThreshold uint8 + AdversaryThreshold uint8 +} + +// VersionedBlobParams is an auto generated low-level Go binding around an user-defined struct. +type VersionedBlobParams struct { + MaxNumOperators uint32 + NumChunks uint32 + CodingRate uint8 +} + // ContractEigenDAServiceManagerMetaData contains all meta data concerning the ContractEigenDAServiceManager contract. var ContractEigenDAServiceManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"__avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"__rewardsCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRewardsCoordinator\"},{\"name\":\"__registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"__stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STORE_DURATION_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"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\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"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\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_batchConfirmers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_rewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBatchConfirmer\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"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\":\"quorumAdversaryThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumConfirmationThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumNumbersRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsInitiator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setBatchConfirmer\",\"inputs\":[{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsInitiator\",\"inputs\":[{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"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\":\"sigma\",\"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\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerStatusChanged\",\"inputs\":[{\"name\":\"batchConfirmer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsInitiatorUpdated\",\"inputs\":[{\"name\":\"prevRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"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}]", - Bin: "0x6101806040523480156200001257600080fd5b5060405162005880380380620058808339810160408190526200003591620002e5565b6001600160a01b0380851660805280841660a05280831660c052811660e0528184848284620000636200020a565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e791906200034d565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016691906200034d565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e891906200034d565b6001600160a01b03166101605250620002006200020a565b5050505062000374565b603254610100900460ff1615620002775760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620002ca576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002e257600080fd5b50565b60008060008060808587031215620002fc57600080fd5b84516200030981620002cc565b60208601519094506200031c81620002cc565b60408601519093506200032f81620002cc565b60608601519092506200034281620002cc565b939692955090935050565b6000602082840312156200036057600080fd5b81516200036d81620002cc565b9392505050565b60805160a05160c05160e051610100516101205161014051610160516153fe620004826000396000818161056d015261179c01526000818161036c015261197e0152600081816103be01528181611b540152611d1601526000818161040b01528181610eb801528181611467015281816115ff0152611839015260008181610bd001528181610d2b01528181610dc20152818161298701528181612b0a0152612ba90152600081816109fb01528181610a8a01528181610b0a015281816126eb015281816127af015281816128c50152612a65015260008181612fd90152818161309501526131810152600081816103e20152818161273f0152818161280b015261288a01526153fe6000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c80637794965a11610146578063df5cf723116100c3578063ef02445811610087578063ef024458146105ea578063f1220983146105f2578063f2fde38b14610605578063fabc1cbc14610618578063fc299dee1461062b578063fce36c7d1461063e57600080fd5b8063df5cf72314610568578063e15234ff1461058f578063e481af9d146105af578063eaefd27d146105b7578063eccbbfc9146105ca57600080fd5b8063a364f4da1161010a578063a364f4da146104f0578063a5b7890a14610503578063a98fb35514610526578063b98d090814610539578063bafa91071461054657600080fd5b80637794965a146104775780638687feae1461048a578063886f1195146104b95780638da5cb5b146104cc5780639926ee7d146104dd57600080fd5b80635df45946116101d45780636d14a987116101985780636d14a987146104065780636efb46361461042d578063715018a61461044e57806372d18e8d14610456578063775bbcb51461046457600080fd5b80635df45946146103675780635e033476146103a65780635e8b3f2d146103b057806368304835146103b95780636b3aa72e146103e057600080fd5b8063416c7e5e1161021b578063416c7e5e146102e25780634972134a146102f5578063595c6a671461031a5780635ac86ab7146103225780635c975abb1461035557600080fd5b806310d67a2f14610258578063136439dd1461026d578063171f1d5b1461028057806333cfb7b7146102af5780633bc28c8c146102cf575b600080fd5b61026b6102663660046141be565b610651565b005b61026b61027b3660046141db565b61070d565b61029361028e366004614345565b61084c565b6040805192151583529015156020830152015b60405180910390f35b6102c26102bd3660046141be565b6109d6565b6040516102a691906143a1565b61026b6102dd3660046141be565b610ea5565b61026b6102f03660046143fc565b610eb6565b6000546103059063ffffffff1681565b60405163ffffffff90911681526020016102a6565b61026b610fed565b610345610330366004614428565b60fc54600160ff9092169190911b9081161490565b60405190151581526020016102a6565b60fc545b6040519081526020016102a6565b61038e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a6565b610305620189c081565b61030561012c81565b61038e7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000061038e565b61038e7f000000000000000000000000000000000000000000000000000000000000000081565b61044061043b3660046146fb565b6110b4565b6040516102a69291906147ee565b61026b611fcb565b60005463ffffffff16610305565b61026b610472366004614837565b611fdf565b61026b610485366004614912565b612148565b6104ac6040518060400160405280600381526020016221212160e81b81525081565b6040516102a691906149ca565b60fb5461038e906001600160a01b031681565b6065546001600160a01b031661038e565b61026b6104eb366004614a54565b6126e0565b61026b6104fe3660046141be565b6127a4565b6103456105113660046141be565b60026020526000908152604090205460ff1681565b61026b610534366004614aff565b61286b565b60c9546103459060ff1681565b6104ac6040518060400160405280600381526020016237373760e81b81525081565b61038e7f000000000000000000000000000000000000000000000000000000000000000081565b6104ac604051806040016040528060028152602001600160f01b81525081565b6102c26128bf565b6103056105c5366004614b4f565b612c88565b6103596105d8366004614b4f565b60016020526000908152604090205481565b610359606481565b61026b6106003660046141be565b612caa565b61026b6106133660046141be565b612cbb565b61026b6106263660046141db565b612d31565b60975461038e906001600160a01b031681565b61026b61064c366004614b6a565b612e8d565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c89190614bde565b6001600160a01b0316336001600160a01b0316146107015760405162461bcd60e51b81526004016106f890614bfb565b60405180910390fd5b61070a816131b8565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190614c45565b6107955760405162461bcd60e51b81526004016106f890614c62565b60fc548181161461080e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106f8565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061089457610894614caa565b60200201518951600160200201518a602001516000600281106108b9576108b9614caa565b60200201518b602001516001600281106108d5576108d5614caa565b602090810291909101518c518d8301516040516109329a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6109559190614cc0565b90506109c861096e61096788846132af565b8690613346565b6109766133da565b6109be6109af856109a9604080518082018252600080825260209182015281518083019092526001825260029082015290565b906132af565b6109b88c61349a565b90613346565b886201d4c061352a565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a669190614ce2565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af59190614cfb565b90506001600160c01b0381161580610b8f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190614d24565b60ff16155b15610bab57505060408051600081526020810190915292915050565b6000610bbf826001600160c01b031661374e565b90506000805b8251811015610c95577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f5848381518110610c0f57610c0f614caa565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c779190614ce2565b610c819083614d57565b915080610c8d81614d6f565b915050610bc5565b506000816001600160401b03811115610cb057610cb06141f4565b604051908082528060200260200182016040528015610cd9578160200160208202803683370190505b5090506000805b8451811015610e98576000858281518110610cfd57610cfd614caa565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d969190614ce2565b905060005b81811015610e82576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e349190614d9f565b60000151868681518110610e4a57610e4a614caa565b6001600160a01b039092166020928302919091019091015284610e6c81614d6f565b9550508080610e7a90614d6f565b915050610d9b565b5050508080610e9090614d6f565b915050610ce0565b5090979650505050505050565b610ead613810565b61070a8161386a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190614bde565b6001600160a01b0316336001600160a01b031614610fe45760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4016106f8565b61070a816138d3565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110599190614c45565b6110755760405162461bcd60e51b81526004016106f890614c62565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b604080518082019091526060808252602082015260008461112b5760405162461bcd60e51b815260206004820152603760248201526000805160206153a983398151915260448201527f7265733a20656d7074792071756f72756d20696e70757400000000000000000060648201526084016106f8565b60408301515185148015611143575060a08301515185145b8015611153575060c08301515185145b8015611163575060e08301515185145b6111cd5760405162461bcd60e51b815260206004820152604160248201526000805160206153a983398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a4016106f8565b825151602084015151146112455760405162461bcd60e51b8152602060048201526044602482018190526000805160206153a9833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016106f8565b4363ffffffff168463ffffffff16106112b45760405162461bcd60e51b815260206004820152603c60248201526000805160206153a983398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b0000000060648201526084016106f8565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156112f5576112f56141f4565b60405190808252806020026020018201604052801561131e578160200160208202803683370190505b506020820152866001600160401b0381111561133c5761133c6141f4565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115611399576113996141f4565b6040519080825280602002602001820160405280156113c2578160200160208202803683370190505b5081526020860151516001600160401b038111156113e2576113e26141f4565b60405190808252806020026020018201604052801561140b578160200160208202803683370190505b50816020018190525060006114dd8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190614d24565b61391b565b905060005b876020015151811015611778576115278860200151828151811061150857611508614caa565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061153d5761153d614caa565b602090810291909101015280156115fd57602083015161155e600183614de0565b8151811061156e5761156e614caa565b602002602001015160001c8360200151828151811061158f5761158f614caa565b602002602001015160001c116115fd576040805162461bcd60e51b81526020600482015260248101919091526000805160206153a983398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f7274656460648201526084016106f8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec63518460200151838151811061164257611642614caa565b60200260200101518b8b60000151858151811061166157611661614caa565b60200260200101516040518463ffffffff1660e01b815260040161169e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df9190614cfb565b6001600160c01b0316836000015182815181106116fe576116fe614caa565b602002602001018181525050611764610967611738848660000151858151811061172a5761172a614caa565b6020026020010151166139ac565b8a60200151848151811061174e5761174e614caa565b60200260200101516139d790919063ffffffff16565b94508061177081614d6f565b9150506114e2565b505061178383613abb565b60c95490935060ff1660008161179a57600061181c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181c9190614ce2565b905060005b8a811015611e9a57821561197c578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f8681811061187857611878614caa565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614ce2565b6118e69190614d57565b1161197c5760405162461bcd60e51b815260206004820152606660248201526000805160206153a983398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c4016106f8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d848181106119bd576119bd614caa565b9050013560f81c60f81b60f81c8c8c60a0015185815181106119e1576119e1614caa565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a619190614df7565b6001600160401b031916611a848a60400151838151811061150857611508614caa565b67ffffffffffffffff191614611b205760405162461bcd60e51b815260206004820152606160248201526000805160206153a983398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c4016106f8565b611b5089604001518281518110611b3957611b39614caa565b60200260200101518761334690919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110611b9357611b93614caa565b9050013560f81c60f81b60f81c8c8c60c001518581518110611bb757611bb7614caa565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c379190614e22565b85602001518281518110611c4d57611c4d614caa565b6001600160601b03909216602092830291909101820152850151805182908110611c7957611c79614caa565b602002602001015185600001518281518110611c9757611c97614caa565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015611e8557611d0f86600001518281518110611ce157611ce1614caa565b60200260200101518f8f86818110611cfb57611cfb614caa565b600192013560f81c9290921c811614919050565b15611e73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f86818110611d5557611d55614caa565b9050013560f81c60f81b60f81c8e89602001518581518110611d7957611d79614caa565b60200260200101518f60e001518881518110611d9757611d97614caa565b60200260200101518781518110611db057611db0614caa565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e389190614e22565b8751805185908110611e4c57611e4c614caa565b60200260200101818151611e609190614e3f565b6001600160601b03169052506001909101905b80611e7d81614d6f565b915050611cbb565b50508080611e9290614d6f565b915050611821565b505050600080611eb48c868a606001518b6080015161084c565b9150915081611f255760405162461bcd60e51b815260206004820152604360248201526000805160206153a983398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a4016106f8565b80611f865760405162461bcd60e51b815260206004820152603960248201526000805160206153a983398151915260448201527f7265733a207369676e617475726520697320696e76616c69640000000000000060648201526084016106f8565b50506000878260200151604051602001611fa1929190614e67565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611fd3613810565b611fdd6000613b56565b565b603254610100900460ff1615808015611fff5750603254600160ff909116105b806120195750303b158015612019575060325460ff166001145b61207c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106f8565b6032805460ff19166001179055801561209f576032805461ff0019166101001790555b6120a98686613ba8565b6120b284613b56565b6120bb8261386a565b60005b83518110156120f9576120e98482815181106120dc576120dc614caa565b6020026020010151613c92565b6120f281614d6f565b90506120be565b508015612140576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60fc54600090600190811614156121a15760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e646578206973207061757365640000000000000060448201526064016106f8565b3360009081526002602052604090205460ff166122155760405162461bcd60e51b815260206004820152602c60248201527f6f6e6c794261746368436f6e6669726d65723a206e6f742066726f6d2062617460448201526b31b41031b7b73334b936b2b960a11b60648201526084016106f8565b3233146122925760405162461bcd60e51b8152602060048201526051602482015260008051602061538983398151915260448201527f63683a2068656164657220616e64206e6f6e7369676e65722064617461206d75606482015270737420626520696e2063616c6c6461746160781b608482015260a4016106f8565b436122a36080850160608601614b4f565b63ffffffff16106123225760405162461bcd60e51b815260206004820152604f602482015260008051602061538983398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d6260648201526e657220697320696e2066757475726560881b608482015260a4016106f8565b63ffffffff431661012c61233c6080860160608701614b4f565b6123469190614eaf565b63ffffffff1610156123cc5760405162461bcd60e51b8152602060048201526055602482015260008051602061538983398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d62606482015274195c881a5cc81d1bdbc819985c881a5b881c185cdd605a1b608482015260a4016106f8565b6123d96040840184614ed7565b90506123e86020850185614ed7565b9050146124805760405162461bcd60e51b8152602060048201526066602482015260008051602061538983398151915260448201527f63683a2071756f72756d4e756d6265727320616e64207369676e65645374616b60648201527f65466f7251756f72756d73206d757374206265206f66207468652073616d65206084820152650d8cadccee8d60d31b60a482015260c4016106f8565b600061249361248e85614f24565b613cf5565b90506000806124bf836124a96020890189614ed7565b6124b960808b0160608c01614b4f565b896110b4565b9150915060005b6124d36040880188614ed7565b9050811015612615576124e96040880188614ed7565b828181106124f9576124f9614caa565b9050013560f81c60f81b60f81c60ff168360200151828151811061251f5761251f614caa565b60200260200101516125319190614fc4565b6001600160601b031660648460000151838151811061255257612552614caa565b60200260200101516001600160601b031661256d9190614ff3565b10156126035760405162461bcd60e51b81526020600482015260646024820181905260008051602061538983398151915260448301527f63683a207369676e61746f7269657320646f206e6f74206f776e206174206c65908201527f617374207468726573686f6c642070657263656e74616765206f6620612071756084820152636f72756d60e01b60a482015260c4016106f8565b8061260d81614d6f565b9150506124c6565b506000805463ffffffff169061262a88613d70565b6040805160208082018490528183018790524360e01b6001600160e01b0319166060830152825160448184030181526064830180855281519183019190912063ffffffff881660008181526001909452928590205552905191925086917fc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a9181900360840190a26126bc826001614eaf565b6000805463ffffffff191663ffffffff929092169190911790555050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127285760405162461bcd60e51b81526004016106f890615012565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90612776908590859060040161508a565b600060405180830381600087803b15801561279057600080fd5b505af1158015612140573d6000803e3d6000fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127ec5760405162461bcd60e51b81526004016106f890615012565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b15801561285057600080fd5b505af1158015612864573d6000803e3d6000fd5b5050505050565b612873613810565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906128369084906004016149ca565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129459190614d24565b60ff1690508061296357505060408051600081526020810190915290565b6000805b82811015612a1857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156129d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fa9190614ce2565b612a049083614d57565b915080612a1081614d6f565b915050612967565b506000816001600160401b03811115612a3357612a336141f4565b604051908082528060200260200182016040528015612a5c578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae59190614d24565b60ff16811015612c7e57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7d9190614ce2565b905060005b81811015612c69576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1b9190614d9f565b60000151858581518110612c3157612c31614caa565b6001600160a01b039092166020928302919091019091015283612c5381614d6f565b9450508080612c6190614d6f565b915050612b82565b50508080612c7690614d6f565b915050612a63565b5090949350505050565b600061012c612c9a620189c084614eaf565b612ca49190614eaf565b92915050565b612cb2613810565b61070a81613c92565b612cc3613810565b6001600160a01b038116612d285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f8565b61070a81613b56565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da89190614bde565b6001600160a01b0316336001600160a01b031614612dd85760405162461bcd60e51b81526004016106f890614bfb565b60fc5419811960fc54191614612e565760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106f8565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610841565b612e95613d83565b60005b8181101561316957828282818110612eb257612eb2614caa565b9050602002810190612ec491906150d5565b612ed59060408101906020016141be565b6001600160a01b03166323b872dd3330868686818110612ef757612ef7614caa565b9050602002810190612f0991906150d5565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015612f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f849190614c45565b506000838383818110612f9957612f99614caa565b9050602002810190612fab91906150d5565b612fbc9060408101906020016141be565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561302a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304e9190614ce2565b905083838381811061306257613062614caa565b905060200281019061307491906150d5565b6130859060408101906020016141be565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106130c7576130c7614caa565b90506020028101906130d991906150d5565b604001356130e79190614d57565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015613132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131569190614c45565b50508061316290614d6f565b9050612e98565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d906127769085908590600401615150565b6001600160a01b0381166132465760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106f8565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526132cb6140cf565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156132fe57613300565bfe5b508061333e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016106f8565b505092915050565b60408051808201909152600080825260208201526133626140ed565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156132fe57508061333e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016106f8565b6133e261410b565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806134ca60008051602061536983398151915286614cc0565b90505b6134d681613e18565b9093509150600080516020615369833981519152828309831415613510576040805180820190915290815260208101919091529392505050565b6000805160206153698339815191526001820890506134cd565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061355c614130565b60005b6002811015613721576000613575826006614ff3565b905084826002811061358957613589614caa565b6020020151518361359b836000614d57565b600c81106135ab576135ab614caa565b60200201528482600281106135c2576135c2614caa565b602002015160200151838260016135d99190614d57565b600c81106135e9576135e9614caa565b602002015283826002811061360057613600614caa565b6020020151515183613613836002614d57565b600c811061362357613623614caa565b602002015283826002811061363a5761363a614caa565b6020020151516001602002015183613653836003614d57565b600c811061366357613663614caa565b602002015283826002811061367a5761367a614caa565b60200201516020015160006002811061369557613695614caa565b6020020151836136a6836004614d57565b600c81106136b6576136b6614caa565b60200201528382600281106136cd576136cd614caa565b6020020151602001516001600281106136e8576136e8614caa565b6020020151836136f9836005614d57565b600c811061370957613709614caa565b6020020152508061371981614d6f565b91505061355f565b5061372a61414f565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606060008061375c846139ac565b61ffff166001600160401b03811115613777576137776141f4565b6040519080825280601f01601f1916602001820160405280156137a1576020820181803683370190505b5090506000805b8251821080156137b9575061010081105b15612c7e576001811b935085841615613800578060f81b8383815181106137e2576137e2614caa565b60200101906001600160f81b031916908160001a9053508160010191505b61380981614d6f565b90506137a8565b6065546001600160a01b03163314611fdd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f8565b609754604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b60c9805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc906020015b60405180910390a150565b60008061392784613e9a565b9050808360ff166001901b116139a55760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016106f8565b9392505050565b6000805b8215612ca4576139c1600184614de0565b90921691806139cf8161525d565b9150506139b0565b60408051808201909152600080825260208201526102008261ffff1610613a335760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b60448201526064016106f8565b8161ffff1660011415613a47575081612ca4565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613ab057600161ffff871660ff83161c81161415613a9357613a908484613346565b93505b613a9d8384613346565b92506201fffe600192831b169101613a63565b509195945050505050565b60408051808201909152600080825260208201528151158015613ae057506020820151155b15613afe575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206153698339815191528460200151613b319190614cc0565b613b4990600080516020615369833981519152614de0565b905292915050565b919050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fb546001600160a01b0316158015613bc957506001600160a01b03821615155b613c4b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106f8565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613c8e826131b8565b5050565b6001600160a01b038116600081815260026020908152604091829020805460ff8082161560ff1990921682179092558351948552161515908301527f5c3265f5fb462ef4930fe47beaa183647c97f19ba545b761f41bc8cd4621d4149101613910565b6000613d3282604080518082019091526000808252602082015250604080518082019091528151815260609091015163ffffffff16602082015290565b6040805182516020808301919091529092015163ffffffff16908201526060015b604051602081830303815290604052805190602001209050919050565b600081604051602001613d5391906152ed565b6097546001600160a01b03163314611fdd5760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a4016106f8565b60008080600080516020615369833981519152600360008051602061536983398151915286600080516020615369833981519152888909090890506000613e8e827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615369833981519152614027565b91959194509092505050565b600061010082511115613f235760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016106f8565b8151613f3157506000919050565b60008083600081518110613f4757613f47614caa565b0160200151600160f89190911c81901b92505b845181101561401e57848181518110613f7557613f75614caa565b0160200151600160f89190911c1b915082821161400a5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016106f8565b9181179161401781614d6f565b9050613f5a565b50909392505050565b60008061403261414f565b61403a61416d565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156132fe5750826140c45760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016106f8565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061411e61418b565b815260200161412b61418b565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b038116811461070a57600080fd5b6000602082840312156141d057600080fd5b81356139a5816141a9565b6000602082840312156141ed57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561422c5761422c6141f4565b60405290565b60405161010081016001600160401b038111828210171561422c5761422c6141f4565b604051601f8201601f191681016001600160401b038111828210171561427d5761427d6141f4565b604052919050565b60006040828403121561429757600080fd5b61429f61420a565b9050813581526020820135602082015292915050565b600082601f8301126142c657600080fd5b6142ce61420a565b8060408401858111156142e057600080fd5b845b818110156142fa5780358452602093840193016142e2565b509095945050505050565b60006080828403121561431757600080fd5b61431f61420a565b905061432b83836142b5565b815261433a83604084016142b5565b602082015292915050565b600080600080610120858703121561435c57600080fd5b8435935061436d8660208701614285565b925061437c8660608701614305565b915061438b8660e08701614285565b905092959194509250565b8035613b51816141a9565b6020808252825182820181905260009190848201906040850190845b818110156143e25783516001600160a01b0316835292840192918401916001016143bd565b50909695505050505050565b801515811461070a57600080fd5b60006020828403121561440e57600080fd5b81356139a5816143ee565b60ff8116811461070a57600080fd5b60006020828403121561443a57600080fd5b81356139a581614419565b803563ffffffff81168114613b5157600080fd5b60006001600160401b03821115614472576144726141f4565b5060051b60200190565b600082601f83011261448d57600080fd5b813560206144a261449d83614459565b614255565b82815260059290921b840181019181810190868411156144c157600080fd5b8286015b848110156144e3576144d681614445565b83529183019183016144c5565b509695505050505050565b600082601f8301126144ff57600080fd5b8135602061450f61449d83614459565b82815260069290921b8401810191818101908684111561452e57600080fd5b8286015b848110156144e3576145448882614285565b835291830191604001614532565b600082601f83011261456357600080fd5b8135602061457361449d83614459565b82815260059290921b8401810191818101908684111561459257600080fd5b8286015b848110156144e35780356001600160401b038111156145b55760008081fd5b6145c38986838b010161447c565b845250918301918301614596565b600061018082840312156145e457600080fd5b6145ec614232565b905081356001600160401b038082111561460557600080fd5b6146118583860161447c565b8352602084013591508082111561462757600080fd5b614633858386016144ee565b6020840152604084013591508082111561464c57600080fd5b614658858386016144ee565b604084015261466a8560608601614305565b606084015261467c8560e08601614285565b608084015261012084013591508082111561469657600080fd5b6146a28583860161447c565b60a08401526101408401359150808211156146bc57600080fd5b6146c88583860161447c565b60c08401526101608401359150808211156146e257600080fd5b506146ef84828501614552565b60e08301525092915050565b60008060008060006080868803121561471357600080fd5b8535945060208601356001600160401b038082111561473157600080fd5b818801915088601f83011261474557600080fd5b81358181111561475457600080fd5b89602082850101111561476657600080fd5b602083019650945061477a60408901614445565b9350606088013591508082111561479057600080fd5b5061479d888289016145d1565b9150509295509295909350565b600081518084526020808501945080840160005b838110156147e35781516001600160601b0316875295820195908201906001016147be565b509495945050505050565b604081526000835160408084015261480960808401826147aa565b90506020850151603f1984830301606085015261482682826147aa565b925050508260208301529392505050565b600080600080600060a0868803121561484f57600080fd5b853561485a816141a9565b945060208681013594506040870135614872816141a9565b935060608701356001600160401b0381111561488d57600080fd5b8701601f8101891361489e57600080fd5b80356148ac61449d82614459565b81815260059190911b8201830190838101908b8311156148cb57600080fd5b928401925b828410156148f25783356148e3816141a9565b825292840192908401906148d0565b809650505050505061490660808701614396565b90509295509295909350565b6000806040838503121561492557600080fd5b82356001600160401b038082111561493c57600080fd5b908401906080828703121561495057600080fd5b9092506020840135908082111561496657600080fd5b50614973858286016145d1565b9150509250929050565b6000815180845260005b818110156149a357602081850181015186830182015201614987565b818111156149b5576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006139a5602083018461497d565b60006001600160401b038311156149f6576149f66141f4565b614a09601f8401601f1916602001614255565b9050828152838383011115614a1d57600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a4557600080fd5b6139a5838335602085016149dd565b60008060408385031215614a6757600080fd5b8235614a72816141a9565b915060208301356001600160401b0380821115614a8e57600080fd5b9084019060608287031215614aa257600080fd5b604051606081018181108382111715614abd57614abd6141f4565b604052823582811115614acf57600080fd5b614adb88828601614a34565b82525060208301356020820152604083013560408201528093505050509250929050565b600060208284031215614b1157600080fd5b81356001600160401b03811115614b2757600080fd5b8201601f81018413614b3857600080fd5b614b47848235602084016149dd565b949350505050565b600060208284031215614b6157600080fd5b6139a582614445565b60008060208385031215614b7d57600080fd5b82356001600160401b0380821115614b9457600080fd5b818501915085601f830112614ba857600080fd5b813581811115614bb757600080fd5b8660208260051b8501011115614bcc57600080fd5b60209290920196919550909350505050565b600060208284031215614bf057600080fd5b81516139a5816141a9565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215614c5757600080fd5b81516139a5816143ee565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600082614cdd57634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215614cf457600080fd5b5051919050565b600060208284031215614d0d57600080fd5b81516001600160c01b03811681146139a557600080fd5b600060208284031215614d3657600080fd5b81516139a581614419565b634e487b7160e01b600052601160045260246000fd5b60008219821115614d6a57614d6a614d41565b500190565b6000600019821415614d8357614d83614d41565b5060010190565b6001600160601b038116811461070a57600080fd5b600060408284031215614db157600080fd5b614db961420a565b8251614dc4816141a9565b81526020830151614dd481614d8a565b60208201529392505050565b600082821015614df257614df2614d41565b500390565b600060208284031215614e0957600080fd5b815167ffffffffffffffff19811681146139a557600080fd5b600060208284031215614e3457600080fd5b81516139a581614d8a565b60006001600160601b0383811690831681811015614e5f57614e5f614d41565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015614ea257815185529382019390820190600101614e86565b5092979650505050505050565b600063ffffffff808316818516808303821115614ece57614ece614d41565b01949350505050565b6000808335601e19843603018112614eee57600080fd5b8301803591506001600160401b03821115614f0857600080fd5b602001915036819003821315614f1d57600080fd5b9250929050565b600060808236031215614f3657600080fd5b604051608081016001600160401b038282108183111715614f5957614f596141f4565b81604052843583526020850135915080821115614f7557600080fd5b614f8136838701614a34565b60208401526040850135915080821115614f9a57600080fd5b50614fa736828601614a34565b604083015250614fb960608401614445565b606082015292915050565b60006001600160601b0380831681851681830481118215151615614fea57614fea614d41565b02949350505050565b600081600019048311821515161561500d5761500d614d41565b500290565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b03831681526040602082015260008251606060408401526150b460a084018261497d565b90506020840151606084015260408401516080840152809150509392505050565b60008235609e198336030181126150eb57600080fd5b9190910192915050565b8183526000602080850194508260005b858110156147e3578135615118816141a9565b6001600160a01b031687528183013561513081614d8a565b6001600160601b0316878401526040968701969190910190600101615105565b60208082528181018390526000906040808401600586901b8501820187855b8881101561524f57878303603f190184528135368b9003609e1901811261519557600080fd5b8a0160a0813536839003601e190181126151ae57600080fd5b820180356001600160401b038111156151c657600080fd5b8060061b36038413156151d857600080fd5b8287526151ea838801828c85016150f5565b925050506151f9888301614396565b6001600160a01b0316888601528187013587860152606061521b818401614445565b63ffffffff16908601526080615232838201614445565b63ffffffff1695019490945250928501929085019060010161516f565b509098975050505050505050565b600061ffff8083168181141561527557615275614d41565b6001019392505050565b6000808335601e1984360301811261529657600080fd5b83016020810192503590506001600160401b038111156152b557600080fd5b803603831315614f1d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152813560208201526000615307602084018461527f565b6080604085015261531c60a0850182846152c4565b91505061532c604085018561527f565b848303601f190160608601526153438382846152c4565b9250505063ffffffff61535860608601614445565b166080840152809150509291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47456967656e4441536572766963654d616e616765722e636f6e6669726d426174424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220452ee19b9955609d39c81a585dc4955e586c3598344c79cd5cc27124aeab6de964736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"__avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"__rewardsCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRewardsCoordinator\"},{\"name\":\"__registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"__stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"__eigenDAThresholdRegistry\",\"type\":\"address\",\"internalType\":\"contractIEigenDAThresholdRegistry\"},{\"name\":\"__eigenDARelayRegistry\",\"type\":\"address\",\"internalType\":\"contractIEigenDARelayRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STORE_DURATION_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"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\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structBatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"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\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eigenDARelayRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDARelayRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAThresholdRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAThresholdRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlobParams\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structVersionedBlobParams\",\"components\":[{\"name\":\"maxNumOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numChunks\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"codingRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDefaultSecurityThresholdsV2\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getIsQuorumRequired\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumAdversaryThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumConfirmationThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_batchConfirmers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_rewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBatchConfirmer\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"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\":\"quorumAdversaryThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumConfirmationThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumNumbersRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsInitiator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setBatchConfirmer\",\"inputs\":[{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsInitiator\",\"inputs\":[{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"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\":\"sigma\",\"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\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerStatusChanged\",\"inputs\":[{\"name\":\"batchConfirmer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsInitiatorUpdated\",\"inputs\":[{\"name\":\"prevRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"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}]", + Bin: "0x6101c06040523480156200001257600080fd5b5060405162005dc438038062005dc48339810160408190526200003591620002f5565b6001600160a01b0380831660805280821660a05280871660c05280861660e052808516610100528316610120528386868286620000716200021a565b50505050806001600160a01b0316610140816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f5919062000389565b6001600160a01b0316610160816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000174919062000389565b6001600160a01b0316610180816001600160a01b031681525050610160516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f6919062000389565b6001600160a01b03166101a052506200020e6200021a565b505050505050620003b0565b603254610100900460ff1615620002875760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620002da576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002f257600080fd5b50565b60008060008060008060c087890312156200030f57600080fd5b86516200031c81620002dc565b60208801519096506200032f81620002dc565b60408801519095506200034281620002dc565b60608801519094506200035581620002dc565b60808801519093506200036881620002dc565b60a08801519092506200037b81620002dc565b809150509295509295509295565b6000602082840312156200039c57600080fd5b8151620003a981620002dc565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516158cd620004f7600039600081816106520152611aa90152600081816104340152611c8b01526000818161048601528181611e6101526120230152600081816104d3015281816111c5015281816117740152818161190c0152611b46015260008181610edd01528181611038015281816110cf01528181612c9401528181612e170152612eb6015260008181610d0801528181610d9701528181610e17015281816129f801528181612abc01528181612bd20152612d720152600081816133cc0152818161348801526135740152600081816104aa01528181612a4c01528181612b180152612b970152600061052301526000818161073b015281816107b101528181610a4001528181610c7801528181612fcc015261301901526158cd6000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80637794965a11610167578063e481af9d116100ce578063f122098311610087578063f122098314610710578063f2fde38b14610723578063f8c6681414610736578063fabc1cbc1461075d578063fc299dee14610770578063fce36c7d1461078357600080fd5b8063e481af9d14610691578063eaefd27d14610699578063eccbbfc9146106ac578063ee6c3bcf146106cc578063ef024458146106df578063ef635529146106e757600080fd5b8063a5b7890a11610120578063a5b7890a146105eb578063a98fb3551461060e578063b98d090814610621578063bafa91071461062e578063df5cf7231461064d578063e15234ff1461067457600080fd5b80637794965a146105665780638687feae14610579578063886f1195146105a15780638da5cb5b146105b45780639926ee7d146105c5578063a364f4da146105d857600080fd5b80635c975abb1161020b5780636d14a987116101c45780636d14a987146104ce5780636efb4636146104f5578063715018a614610516578063722764431461051e57806372d18e8d14610545578063775bbcb51461055357600080fd5b80635c975abb1461041d5780635df459461461042f5780635e0334761461046e5780635e8b3f2d1461047857806368304835146104815780636b3aa72e146104a857600080fd5b806333cfb7b71161025d57806333cfb7b7146103875780633bc28c8c146103a7578063416c7e5e146103ba5780634972134a146103cd578063595c6a67146103f25780635ac86ab7146103fa57600080fd5b8063048886d2146102a557806310d67a2f146102cd578063136439dd146102e25780631429c7c2146102f5578063171f1d5b1461031a5780632ecfe72b14610344575b600080fd5b6102b86102b33660046145ab565b610796565b60405190151581526020015b60405180910390f35b6102e06102db3660046145dd565b61082a565b005b6102e06102f03660046145fa565b6108e6565b6103086103033660046145ab565b610a25565b60405160ff90911681526020016102c4565b61032d610328366004614764565b610ab4565b6040805192151583529015156020830152016102c4565b6103576103523660046147b5565b610c3e565b60408051825163ffffffff9081168252602080850151909116908201529181015160ff16908201526060016102c4565b61039a6103953660046145dd565b610ce3565b6040516102c491906147e4565b6102e06103b53660046145dd565b6111b2565b6102e06103c836600461483f565b6111c3565b6000546103dd9063ffffffff1681565b60405163ffffffff90911681526020016102c4565b6102e06112fa565b6102b86104083660046145ab565b60fc54600160ff9092169190911b9081161490565b60fc545b6040519081526020016102c4565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c4565b6103dd620189c081565b6103dd61012c81565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b7f0000000000000000000000000000000000000000000000000000000000000000610456565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b610508610503366004614b1d565b6113c1565b6040516102c4929190614c10565b6102e06122d8565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b60005463ffffffff166103dd565b6102e0610561366004614c59565b6122ec565b6102e0610574366004614d34565b612455565b60408051808201909152600381526221212160e81b60208201525b6040516102c49190614dec565b60fb54610456906001600160a01b031681565b6065546001600160a01b0316610456565b6102e06105d3366004614e76565b6129ed565b6102e06105e63660046145dd565b612ab1565b6102b86105f93660046145dd565b60026020526000908152604090205460ff1681565b6102e061061c366004614f21565b612b78565b60c9546102b89060ff1681565b60408051808201909152600381526237373760e81b6020820152610594565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b6040805180820190915260028152600160f01b6020820152610594565b61039a612bcc565b6103dd6106a7366004614f71565b612f95565b6104216106ba366004614f71565b60016020526000908152604090205481565b6103086106da3660046145ab565b612fb1565b610421606481565b6106ef613003565b60408051825160ff90811682526020938401511692810192909252016102c4565b6102e061071e3660046145dd565b61309d565b6102e06107313660046145dd565b6130ae565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b6102e061076b3660046145fa565b613124565b609754610456906001600160a01b031681565b6102e0610791366004614f8e565b613280565b604051630244436960e11b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063048886d290602401602060405180830381865afa158015610800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108249190615002565b92915050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a1919061501f565b6001600160a01b0316336001600160a01b0316146108da5760405162461bcd60e51b81526004016108d19061503c565b60405180910390fd5b6108e3816135ab565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561092e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109529190615002565b61096e5760405162461bcd60e51b81526004016108d190615086565b60fc54818116146109e75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108d1565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b604051630a14e3e160e11b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631429c7c2906024015b602060405180830381865afa158015610a90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082491906150ce565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610afc57610afc6150eb565b60200201518951600160200201518a60200151600060028110610b2157610b216150eb565b60200201518b60200151600160028110610b3d57610b3d6150eb565b602090810291909101518c518d830151604051610b9a9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610bbd9190615101565b9050610c30610bd6610bcf88846136a2565b8690613739565b610bde6137cd565b610c26610c1785610c11604080518082018252600080825260209182015281518083019092526001825260029082015290565b906136a2565b610c208c61388d565b90613739565b886201d4c061391d565b909890975095505050505050565b60408051606081018252600080825260208201819052818301529051632ecfe72b60e01b815261ffff831660048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632ecfe72b90602401606060405180830381865afa158015610cbf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108249190615123565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d739190615194565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0291906151ad565b90506001600160c01b0381161580610e9c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9791906150ce565b60ff16155b15610eb857505060408051600081526020810190915292915050565b6000610ecc826001600160c01b0316613b41565b90506000805b8251811015610fa2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f5848381518110610f1c57610f1c6150eb565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190615194565b610f8e90836151ec565b915080610f9a81615204565b915050610ed2565b506000816001600160401b03811115610fbd57610fbd614613565b604051908082528060200260200182016040528015610fe6578160200160208202803683370190505b5090506000805b84518110156111a557600085828151811061100a5761100a6150eb565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa15801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a39190615194565b905060005b8181101561118f576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa15801561111d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111419190615234565b60000151868681518110611157576111576150eb565b6001600160a01b03909216602092830291909101909101528461117981615204565b955050808061118790615204565b9150506110a8565b505050808061119d90615204565b915050610fed565b5090979650505050505050565b6111ba613c03565b6108e381613c5d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611221573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611245919061501f565b6001600160a01b0316336001600160a01b0316146112f15760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4016108d1565b6108e381613cc6565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190615002565b6113825760405162461bcd60e51b81526004016108d190615086565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60408051808201909152606080825260208201526000846114385760405162461bcd60e51b8152602060048201526037602482015260008051602061587883398151915260448201527f7265733a20656d7074792071756f72756d20696e70757400000000000000000060648201526084016108d1565b60408301515185148015611450575060a08301515185145b8015611460575060c08301515185145b8015611470575060e08301515185145b6114da5760405162461bcd60e51b8152602060048201526041602482015260008051602061587883398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a4016108d1565b825151602084015151146115525760405162461bcd60e51b815260206004820152604460248201819052600080516020615878833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108d1565b4363ffffffff168463ffffffff16106115c15760405162461bcd60e51b815260206004820152603c602482015260008051602061587883398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b0000000060648201526084016108d1565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b0381111561160257611602614613565b60405190808252806020026020018201604052801561162b578160200160208202803683370190505b506020820152866001600160401b0381111561164957611649614613565b604051908082528060200260200182016040528015611672578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156116a6576116a6614613565b6040519080825280602002602001820160405280156116cf578160200160208202803683370190505b5081526020860151516001600160401b038111156116ef576116ef614613565b604051908082528060200260200182016040528015611718578160200160208202803683370190505b50816020018190525060006117ea8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156117c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e591906150ce565b613d0e565b905060005b876020015151811015611a855761183488602001518281518110611815576118156150eb565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061184a5761184a6150eb565b6020908102919091010152801561190a57602083015161186b600183615275565b8151811061187b5761187b6150eb565b602002602001015160001c8360200151828151811061189c5761189c6150eb565b602002602001015160001c1161190a576040805162461bcd60e51b815260206004820152602481019190915260008051602061587883398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f7274656460648201526084016108d1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec63518460200151838151811061194f5761194f6150eb565b60200260200101518b8b60000151858151811061196e5761196e6150eb565b60200260200101516040518463ffffffff1660e01b81526004016119ab9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ec91906151ad565b6001600160c01b031683600001518281518110611a0b57611a0b6150eb565b602002602001018181525050611a71610bcf611a458486600001518581518110611a3757611a376150eb565b602002602001015116613d9f565b8a602001518481518110611a5b57611a5b6150eb565b6020026020010151613dca90919063ffffffff16565b945080611a7d81615204565b9150506117ef565b5050611a9083613eae565b60c95490935060ff16600081611aa7576000611b29565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b299190615194565b905060005b8a8110156121a7578215611c89578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110611b8557611b856150eb565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015611bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be99190615194565b611bf391906151ec565b11611c895760405162461bcd60e51b8152602060048201526066602482015260008051602061587883398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c4016108d1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110611cca57611cca6150eb565b9050013560f81c60f81b60f81c8c8c60a001518581518110611cee57611cee6150eb565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6e919061528c565b6001600160401b031916611d918a604001518381518110611815576118156150eb565b67ffffffffffffffff191614611e2d5760405162461bcd60e51b8152602060048201526061602482015260008051602061587883398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c4016108d1565b611e5d89604001518281518110611e4657611e466150eb565b60200260200101518761373990919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110611ea057611ea06150eb565b9050013560f81c60f81b60f81c8c8c60c001518581518110611ec457611ec46150eb565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4491906152b7565b85602001518281518110611f5a57611f5a6150eb565b6001600160601b03909216602092830291909101820152850151805182908110611f8657611f866150eb565b602002602001015185600001518281518110611fa457611fa46150eb565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156121925761201c86600001518281518110611fee57611fee6150eb565b60200260200101518f8f86818110612008576120086150eb565b600192013560f81c9290921c811614919050565b15612180577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f86818110612062576120626150eb565b9050013560f81c60f81b60f81c8e89602001518581518110612086576120866150eb565b60200260200101518f60e0015188815181106120a4576120a46150eb565b602002602001015187815181106120bd576120bd6150eb565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214591906152b7565b8751805185908110612159576121596150eb565b6020026020010181815161216d91906152d4565b6001600160601b03169052506001909101905b8061218a81615204565b915050611fc8565b5050808061219f90615204565b915050611b2e565b5050506000806121c18c868a606001518b60800151610ab4565b91509150816122325760405162461bcd60e51b8152602060048201526043602482015260008051602061587883398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a4016108d1565b806122935760405162461bcd60e51b8152602060048201526039602482015260008051602061587883398151915260448201527f7265733a207369676e617475726520697320696e76616c69640000000000000060648201526084016108d1565b505060008782602001516040516020016122ae9291906152fc565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6122e0613c03565b6122ea6000613f49565b565b603254610100900460ff161580801561230c5750603254600160ff909116105b806123265750303b158015612326575060325460ff166001145b6123895760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108d1565b6032805460ff1916600117905580156123ac576032805461ff0019166101001790555b6123b68686613f9b565b6123bf84613f49565b6123c882613c5d565b60005b8351811015612406576123f68482815181106123e9576123e96150eb565b6020026020010151614085565b6123ff81615204565b90506123cb565b50801561244d576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60fc54600090600190811614156124ae5760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e646578206973207061757365640000000000000060448201526064016108d1565b3360009081526002602052604090205460ff166125225760405162461bcd60e51b815260206004820152602c60248201527f6f6e6c794261746368436f6e6669726d65723a206e6f742066726f6d2062617460448201526b31b41031b7b73334b936b2b960a11b60648201526084016108d1565b32331461259f5760405162461bcd60e51b8152602060048201526051602482015260008051602061585883398151915260448201527f63683a2068656164657220616e64206e6f6e7369676e65722064617461206d75606482015270737420626520696e2063616c6c6461746160781b608482015260a4016108d1565b436125b06080850160608601614f71565b63ffffffff161061262f5760405162461bcd60e51b815260206004820152604f602482015260008051602061585883398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d6260648201526e657220697320696e2066757475726560881b608482015260a4016108d1565b63ffffffff431661012c6126496080860160608701614f71565b6126539190615344565b63ffffffff1610156126d95760405162461bcd60e51b8152602060048201526055602482015260008051602061585883398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d62606482015274195c881a5cc81d1bdbc819985c881a5b881c185cdd605a1b608482015260a4016108d1565b6126e6604084018461536c565b90506126f5602085018561536c565b90501461278d5760405162461bcd60e51b8152602060048201526066602482015260008051602061585883398151915260448201527f63683a2071756f72756d4e756d6265727320616e64207369676e65645374616b60648201527f65466f7251756f72756d73206d757374206265206f66207468652073616d65206084820152650d8cadccee8d60d31b60a482015260c4016108d1565b60006127a061279b856153b9565b6140e8565b90506000806127cc836127b6602089018961536c565b6127c660808b0160608c01614f71565b896113c1565b9150915060005b6127e0604088018861536c565b9050811015612922576127f6604088018861536c565b82818110612806576128066150eb565b9050013560f81c60f81b60f81c60ff168360200151828151811061282c5761282c6150eb565b602002602001015161283e919061545b565b6001600160601b031660648460000151838151811061285f5761285f6150eb565b60200260200101516001600160601b031661287a919061548a565b10156129105760405162461bcd60e51b81526020600482015260646024820181905260008051602061585883398151915260448301527f63683a207369676e61746f7269657320646f206e6f74206f776e206174206c65908201527f617374207468726573686f6c642070657263656e74616765206f6620612071756084820152636f72756d60e01b60a482015260c4016108d1565b8061291a81615204565b9150506127d3565b506000805463ffffffff169061293788614163565b6040805160208082018490528183018790524360e01b6001600160e01b0319166060830152825160448184030181526064830180855281519183019190912063ffffffff881660008181526001909452928590205552905191925086917fc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a9181900360840190a26129c9826001615344565b6000805463ffffffff191663ffffffff929092169190911790555050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612a355760405162461bcd60e51b81526004016108d1906154a9565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90612a839085908590600401615521565b600060405180830381600087803b158015612a9d57600080fd5b505af115801561244d573d6000803e3d6000fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612af95760405162461bcd60e51b81526004016108d1906154a9565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015612b5d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b5050505050565b612b80613c03565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590612b43908490600401614dec565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5291906150ce565b60ff16905080612c7057505060408051600081526020810190915290565b6000805b82811015612d2557604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d079190615194565b612d1190836151ec565b915080612d1d81615204565b915050612c74565b506000816001600160401b03811115612d4057612d40614613565b604051908082528060200260200182016040528015612d69578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df291906150ce565b60ff16811015612f8b57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8a9190615194565b905060005b81811015612f76576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f289190615234565b60000151858581518110612f3e57612f3e6150eb565b6001600160a01b039092166020928302919091019091015283612f6081615204565b9450508080612f6e90615204565b915050612e8f565b50508080612f8390615204565b915050612d70565b5090949350505050565b600061012c612fa7620189c084615344565b6108249190615344565b60405163ee6c3bcf60e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ee6c3bcf90602401610a73565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef6355296040518163ffffffff1660e01b81526004016040805180830381865afa158015613074573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613098919061556c565b905090565b6130a5613c03565b6108e381614085565b6130b6613c03565b6001600160a01b03811661311b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d1565b6108e381613f49565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319b919061501f565b6001600160a01b0316336001600160a01b0316146131cb5760405162461bcd60e51b81526004016108d19061503c565b60fc5419811960fc541916146132495760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108d1565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a1a565b613288614176565b60005b8181101561355c578282828181106132a5576132a56150eb565b90506020028101906132b791906155a1565b6132c89060408101906020016145dd565b6001600160a01b03166323b872dd33308686868181106132ea576132ea6150eb565b90506020028101906132fc91906155a1565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015613353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133779190615002565b50600083838381811061338c5761338c6150eb565b905060200281019061339e91906155a1565b6133af9060408101906020016145dd565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561341d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134419190615194565b9050838383818110613455576134556150eb565b905060200281019061346791906155a1565b6134789060408101906020016145dd565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106134ba576134ba6150eb565b90506020028101906134cc91906155a1565b604001356134da91906151ec565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015613525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135499190615002565b50508061355590615204565b905061328b565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90612a83908590859060040161561c565b6001600160a01b0381166136395760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108d1565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526136be6144c2565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156136f1576136f3565bfe5b50806137315760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016108d1565b505092915050565b60408051808201909152600080825260208201526137556144e0565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156136f15750806137315760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016108d1565b6137d56144fe565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806138bd60008051602061583883398151915286615101565b90505b6138c98161420b565b9093509150600080516020615838833981519152828309831415613903576040805180820190915290815260208101919091529392505050565b6000805160206158388339815191526001820890506138c0565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061394f614523565b60005b6002811015613b1457600061396882600661548a565b905084826002811061397c5761397c6150eb565b6020020151518361398e8360006151ec565b600c811061399e5761399e6150eb565b60200201528482600281106139b5576139b56150eb565b602002015160200151838260016139cc91906151ec565b600c81106139dc576139dc6150eb565b60200201528382600281106139f3576139f36150eb565b6020020151515183613a068360026151ec565b600c8110613a1657613a166150eb565b6020020152838260028110613a2d57613a2d6150eb565b6020020151516001602002015183613a468360036151ec565b600c8110613a5657613a566150eb565b6020020152838260028110613a6d57613a6d6150eb565b602002015160200151600060028110613a8857613a886150eb565b602002015183613a998360046151ec565b600c8110613aa957613aa96150eb565b6020020152838260028110613ac057613ac06150eb565b602002015160200151600160028110613adb57613adb6150eb565b602002015183613aec8360056151ec565b600c8110613afc57613afc6150eb565b60200201525080613b0c81615204565b915050613952565b50613b1d614542565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6060600080613b4f84613d9f565b61ffff166001600160401b03811115613b6a57613b6a614613565b6040519080825280601f01601f191660200182016040528015613b94576020820181803683370190505b5090506000805b825182108015613bac575061010081105b15612f8b576001811b935085841615613bf3578060f81b838381518110613bd557613bd56150eb565b60200101906001600160f81b031916908160001a9053508160010191505b613bfc81615204565b9050613b9b565b6065546001600160a01b031633146122ea5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d1565b609754604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b60c9805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc906020015b60405180910390a150565b600080613d1a8461428d565b9050808360ff166001901b11613d985760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108d1565b9392505050565b6000805b821561082457613db4600184615275565b9092169180613dc281615729565b915050613da3565b60408051808201909152600080825260208201526102008261ffff1610613e265760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b60448201526064016108d1565b8161ffff1660011415613e3a575081610824565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613ea357600161ffff871660ff83161c81161415613e8657613e838484613739565b93505b613e908384613739565b92506201fffe600192831b169101613e56565b509195945050505050565b60408051808201909152600080825260208201528151158015613ed357506020820151155b15613ef1575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206158388339815191528460200151613f249190615101565b613f3c90600080516020615838833981519152615275565b905292915050565b919050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fb546001600160a01b0316158015613fbc57506001600160a01b03821615155b61403e5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108d1565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2614081826135ab565b5050565b6001600160a01b038116600081815260026020908152604091829020805460ff8082161560ff1990921682179092558351948552161515908301527f5c3265f5fb462ef4930fe47beaa183647c97f19ba545b761f41bc8cd4621d4149101613d03565b600061412582604080518082019091526000808252602082015250604080518082019091528151815260609091015163ffffffff16602082015290565b6040805182516020808301919091529092015163ffffffff16908201526060015b604051602081830303815290604052805190602001209050919050565b60008160405160200161414691906157b9565b6097546001600160a01b031633146122ea5760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a4016108d1565b60008080600080516020615838833981519152600360008051602061583883398151915286600080516020615838833981519152888909090890506000614281827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260008051602061583883398151915261441a565b91959194509092505050565b6000610100825111156143165760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108d1565b815161432457506000919050565b6000808360008151811061433a5761433a6150eb565b0160200151600160f89190911c81901b92505b845181101561441157848181518110614368576143686150eb565b0160200151600160f89190911c1b91508282116143fd5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108d1565b9181179161440a81615204565b905061434d565b50909392505050565b600080614425614542565b61442d614560565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156136f15750826144b75760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108d1565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061451161457e565b815260200161451e61457e565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60ff811681146108e357600080fd5b6000602082840312156145bd57600080fd5b8135613d988161459c565b6001600160a01b03811681146108e357600080fd5b6000602082840312156145ef57600080fd5b8135613d98816145c8565b60006020828403121561460c57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561464b5761464b614613565b60405290565b60405161010081016001600160401b038111828210171561464b5761464b614613565b604051601f8201601f191681016001600160401b038111828210171561469c5761469c614613565b604052919050565b6000604082840312156146b657600080fd5b6146be614629565b9050813581526020820135602082015292915050565b600082601f8301126146e557600080fd5b6146ed614629565b8060408401858111156146ff57600080fd5b845b81811015614719578035845260209384019301614701565b509095945050505050565b60006080828403121561473657600080fd5b61473e614629565b905061474a83836146d4565b815261475983604084016146d4565b602082015292915050565b600080600080610120858703121561477b57600080fd5b8435935061478c86602087016146a4565b925061479b8660608701614724565b91506147aa8660e087016146a4565b905092959194509250565b6000602082840312156147c757600080fd5b813561ffff81168114613d9857600080fd5b8035613f44816145c8565b6020808252825182820181905260009190848201906040850190845b818110156148255783516001600160a01b031683529284019291840191600101614800565b50909695505050505050565b80151581146108e357600080fd5b60006020828403121561485157600080fd5b8135613d9881614831565b63ffffffff811681146108e357600080fd5b8035613f448161485c565b60006001600160401b0382111561489257614892614613565b5060051b60200190565b600082601f8301126148ad57600080fd5b813560206148c26148bd83614879565b614674565b82815260059290921b840181019181810190868411156148e157600080fd5b8286015b848110156149055780356148f88161485c565b83529183019183016148e5565b509695505050505050565b600082601f83011261492157600080fd5b813560206149316148bd83614879565b82815260069290921b8401810191818101908684111561495057600080fd5b8286015b848110156149055761496688826146a4565b835291830191604001614954565b600082601f83011261498557600080fd5b813560206149956148bd83614879565b82815260059290921b840181019181810190868411156149b457600080fd5b8286015b848110156149055780356001600160401b038111156149d75760008081fd5b6149e58986838b010161489c565b8452509183019183016149b8565b60006101808284031215614a0657600080fd5b614a0e614651565b905081356001600160401b0380821115614a2757600080fd5b614a338583860161489c565b83526020840135915080821115614a4957600080fd5b614a5585838601614910565b60208401526040840135915080821115614a6e57600080fd5b614a7a85838601614910565b6040840152614a8c8560608601614724565b6060840152614a9e8560e086016146a4565b6080840152610120840135915080821115614ab857600080fd5b614ac48583860161489c565b60a0840152610140840135915080821115614ade57600080fd5b614aea8583860161489c565b60c0840152610160840135915080821115614b0457600080fd5b50614b1184828501614974565b60e08301525092915050565b600080600080600060808688031215614b3557600080fd5b8535945060208601356001600160401b0380821115614b5357600080fd5b818801915088601f830112614b6757600080fd5b813581811115614b7657600080fd5b896020828501011115614b8857600080fd5b6020830196509450614b9c6040890161486e565b93506060880135915080821115614bb257600080fd5b50614bbf888289016149f3565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614c055781516001600160601b031687529582019590820190600101614be0565b509495945050505050565b6040815260008351604080840152614c2b6080840182614bcc565b90506020850151603f19848303016060850152614c488282614bcc565b925050508260208301529392505050565b600080600080600060a08688031215614c7157600080fd5b8535614c7c816145c8565b945060208681013594506040870135614c94816145c8565b935060608701356001600160401b03811115614caf57600080fd5b8701601f81018913614cc057600080fd5b8035614cce6148bd82614879565b81815260059190911b8201830190838101908b831115614ced57600080fd5b928401925b82841015614d14578335614d05816145c8565b82529284019290840190614cf2565b8096505050505050614d28608087016147d9565b90509295509295909350565b60008060408385031215614d4757600080fd5b82356001600160401b0380821115614d5e57600080fd5b9084019060808287031215614d7257600080fd5b90925060208401359080821115614d8857600080fd5b50614d95858286016149f3565b9150509250929050565b6000815180845260005b81811015614dc557602081850181015186830182015201614da9565b81811115614dd7576000602083870101525b50601f01601f19169290920160200192915050565b602081526000613d986020830184614d9f565b60006001600160401b03831115614e1857614e18614613565b614e2b601f8401601f1916602001614674565b9050828152838383011115614e3f57600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e6757600080fd5b613d9883833560208501614dff565b60008060408385031215614e8957600080fd5b8235614e94816145c8565b915060208301356001600160401b0380821115614eb057600080fd5b9084019060608287031215614ec457600080fd5b604051606081018181108382111715614edf57614edf614613565b604052823582811115614ef157600080fd5b614efd88828601614e56565b82525060208301356020820152604083013560408201528093505050509250929050565b600060208284031215614f3357600080fd5b81356001600160401b03811115614f4957600080fd5b8201601f81018413614f5a57600080fd5b614f6984823560208401614dff565b949350505050565b600060208284031215614f8357600080fd5b8135613d988161485c565b60008060208385031215614fa157600080fd5b82356001600160401b0380821115614fb857600080fd5b818501915085601f830112614fcc57600080fd5b813581811115614fdb57600080fd5b8660208260051b8501011115614ff057600080fd5b60209290920196919550909350505050565b60006020828403121561501457600080fd5b8151613d9881614831565b60006020828403121561503157600080fd5b8151613d98816145c8565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000602082840312156150e057600080fd5b8151613d988161459c565b634e487b7160e01b600052603260045260246000fd5b60008261511e57634e487b7160e01b600052601260045260246000fd5b500690565b60006060828403121561513557600080fd5b604051606081018181106001600160401b038211171561515757615157614613565b60405282516151658161485c565b815260208301516151758161485c565b602082015260408301516151888161459c565b60408201529392505050565b6000602082840312156151a657600080fd5b5051919050565b6000602082840312156151bf57600080fd5b81516001600160c01b0381168114613d9857600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156151ff576151ff6151d6565b500190565b6000600019821415615218576152186151d6565b5060010190565b6001600160601b03811681146108e357600080fd5b60006040828403121561524657600080fd5b61524e614629565b8251615259816145c8565b815260208301516152698161521f565b60208201529392505050565b600082821015615287576152876151d6565b500390565b60006020828403121561529e57600080fd5b815167ffffffffffffffff1981168114613d9857600080fd5b6000602082840312156152c957600080fd5b8151613d988161521f565b60006001600160601b03838116908316818110156152f4576152f46151d6565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156153375781518552938201939082019060010161531b565b5092979650505050505050565b600063ffffffff808316818516808303821115615363576153636151d6565b01949350505050565b6000808335601e1984360301811261538357600080fd5b8301803591506001600160401b0382111561539d57600080fd5b6020019150368190038213156153b257600080fd5b9250929050565b6000608082360312156153cb57600080fd5b604051608081016001600160401b0382821081831117156153ee576153ee614613565b8160405284358352602085013591508082111561540a57600080fd5b61541636838701614e56565b6020840152604085013591508082111561542f57600080fd5b5061543c36828601614e56565b60408301525060608301356154508161485c565b606082015292915050565b60006001600160601b0380831681851681830481118215151615615481576154816151d6565b02949350505050565b60008160001904831182151516156154a4576154a46151d6565b500290565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b038316815260406020820152600082516060604084015261554b60a0840182614d9f565b90506020840151606084015260408401516080840152809150509392505050565b60006040828403121561557e57600080fd5b615586614629565b82516155918161459c565b815260208301516152698161459c565b60008235609e198336030181126155b757600080fd5b9190910192915050565b8183526000602080850194508260005b85811015614c055781356155e4816145c8565b6001600160a01b03168752818301356155fc8161521f565b6001600160601b03168784015260409687019691909101906001016155d1565b60208082528181018390526000906040808401600586901b8501820187855b8881101561571b57878303603f190184528135368b9003609e1901811261566157600080fd5b8a0160a0813536839003601e1901811261567a57600080fd5b820180356001600160401b0381111561569257600080fd5b8060061b36038413156156a457600080fd5b8287526156b6838801828c85016155c1565b925050506156c58883016147d9565b6001600160a01b031688860152818701358786015260606156e781840161486e565b63ffffffff169086015260806156fe83820161486e565b63ffffffff1695019490945250928501929085019060010161563b565b509098975050505050505050565b600061ffff80831681811415615741576157416151d6565b6001019392505050565b6000808335601e1984360301811261576257600080fd5b83016020810192503590506001600160401b0381111561578157600080fd5b8036038313156153b257600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006157d3602084018461574b565b608060408501526157e860a085018284615790565b9150506157f8604085018561574b565b848303601f1901606086015261580f838284615790565b9250505060608401356158218161485c565b63ffffffff16608093909301929092525091905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47456967656e4441536572766963654d616e616765722e636f6e6669726d426174424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122022b793b54d30654647995b796aab4ad6fb84e318c90d8daa14f38eb714197db664736f6c634300080c0033", } // ContractEigenDAServiceManagerABI is the input ABI used to generate the binding from. @@ -104,7 +117,7 @@ var ContractEigenDAServiceManagerABI = ContractEigenDAServiceManagerMetaData.ABI var ContractEigenDAServiceManagerBin = ContractEigenDAServiceManagerMetaData.Bin // DeployContractEigenDAServiceManager deploys a new Ethereum contract, binding an instance of ContractEigenDAServiceManager to it. -func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, __avsDirectory common.Address, __rewardsCoordinator common.Address, __registryCoordinator common.Address, __stakeRegistry common.Address) (common.Address, *types.Transaction, *ContractEigenDAServiceManager, error) { +func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, __avsDirectory common.Address, __rewardsCoordinator common.Address, __registryCoordinator common.Address, __stakeRegistry common.Address, __eigenDAThresholdRegistry common.Address, __eigenDARelayRegistry common.Address) (common.Address, *types.Transaction, *ContractEigenDAServiceManager, error) { parsed, err := ContractEigenDAServiceManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -113,7 +126,7 @@ func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.C return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenDAServiceManagerBin), backend, __avsDirectory, __rewardsCoordinator, __registryCoordinator, __stakeRegistry) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenDAServiceManagerBin), backend, __avsDirectory, __rewardsCoordinator, __registryCoordinator, __stakeRegistry, __eigenDAThresholdRegistry, __eigenDARelayRegistry) if err != nil { return common.Address{}, nil, nil, err } @@ -542,6 +555,161 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession return _ContractEigenDAServiceManager.Contract.Delegation(&_ContractEigenDAServiceManager.CallOpts) } +// EigenDARelayRegistry is a free data retrieval call binding the contract method 0x72276443. +// +// Solidity: function eigenDARelayRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) EigenDARelayRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "eigenDARelayRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenDARelayRegistry is a free data retrieval call binding the contract method 0x72276443. +// +// Solidity: function eigenDARelayRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) EigenDARelayRegistry() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.EigenDARelayRegistry(&_ContractEigenDAServiceManager.CallOpts) +} + +// EigenDARelayRegistry is a free data retrieval call binding the contract method 0x72276443. +// +// Solidity: function eigenDARelayRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) EigenDARelayRegistry() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.EigenDARelayRegistry(&_ContractEigenDAServiceManager.CallOpts) +} + +// EigenDAThresholdRegistry is a free data retrieval call binding the contract method 0xf8c66814. +// +// Solidity: function eigenDAThresholdRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) EigenDAThresholdRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "eigenDAThresholdRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenDAThresholdRegistry is a free data retrieval call binding the contract method 0xf8c66814. +// +// Solidity: function eigenDAThresholdRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) EigenDAThresholdRegistry() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.EigenDAThresholdRegistry(&_ContractEigenDAServiceManager.CallOpts) +} + +// EigenDAThresholdRegistry is a free data retrieval call binding the contract method 0xf8c66814. +// +// Solidity: function eigenDAThresholdRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) EigenDAThresholdRegistry() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.EigenDAThresholdRegistry(&_ContractEigenDAServiceManager.CallOpts) +} + +// GetBlobParams is a free data retrieval call binding the contract method 0x2ecfe72b. +// +// Solidity: function getBlobParams(uint16 version) view returns((uint32,uint32,uint8)) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) GetBlobParams(opts *bind.CallOpts, version uint16) (VersionedBlobParams, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "getBlobParams", version) + + if err != nil { + return *new(VersionedBlobParams), err + } + + out0 := *abi.ConvertType(out[0], new(VersionedBlobParams)).(*VersionedBlobParams) + + return out0, err + +} + +// GetBlobParams is a free data retrieval call binding the contract method 0x2ecfe72b. +// +// Solidity: function getBlobParams(uint16 version) view returns((uint32,uint32,uint8)) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) GetBlobParams(version uint16) (VersionedBlobParams, error) { + return _ContractEigenDAServiceManager.Contract.GetBlobParams(&_ContractEigenDAServiceManager.CallOpts, version) +} + +// GetBlobParams is a free data retrieval call binding the contract method 0x2ecfe72b. +// +// Solidity: function getBlobParams(uint16 version) view returns((uint32,uint32,uint8)) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) GetBlobParams(version uint16) (VersionedBlobParams, error) { + return _ContractEigenDAServiceManager.Contract.GetBlobParams(&_ContractEigenDAServiceManager.CallOpts, version) +} + +// GetDefaultSecurityThresholdsV2 is a free data retrieval call binding the contract method 0xef635529. +// +// Solidity: function getDefaultSecurityThresholdsV2() view returns((uint8,uint8)) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) GetDefaultSecurityThresholdsV2(opts *bind.CallOpts) (SecurityThresholds, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "getDefaultSecurityThresholdsV2") + + if err != nil { + return *new(SecurityThresholds), err + } + + out0 := *abi.ConvertType(out[0], new(SecurityThresholds)).(*SecurityThresholds) + + return out0, err + +} + +// GetDefaultSecurityThresholdsV2 is a free data retrieval call binding the contract method 0xef635529. +// +// Solidity: function getDefaultSecurityThresholdsV2() view returns((uint8,uint8)) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) GetDefaultSecurityThresholdsV2() (SecurityThresholds, error) { + return _ContractEigenDAServiceManager.Contract.GetDefaultSecurityThresholdsV2(&_ContractEigenDAServiceManager.CallOpts) +} + +// GetDefaultSecurityThresholdsV2 is a free data retrieval call binding the contract method 0xef635529. +// +// Solidity: function getDefaultSecurityThresholdsV2() view returns((uint8,uint8)) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) GetDefaultSecurityThresholdsV2() (SecurityThresholds, error) { + return _ContractEigenDAServiceManager.Contract.GetDefaultSecurityThresholdsV2(&_ContractEigenDAServiceManager.CallOpts) +} + +// GetIsQuorumRequired is a free data retrieval call binding the contract method 0x048886d2. +// +// Solidity: function getIsQuorumRequired(uint8 quorumNumber) view returns(bool) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) GetIsQuorumRequired(opts *bind.CallOpts, quorumNumber uint8) (bool, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "getIsQuorumRequired", quorumNumber) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// GetIsQuorumRequired is a free data retrieval call binding the contract method 0x048886d2. +// +// Solidity: function getIsQuorumRequired(uint8 quorumNumber) view returns(bool) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) GetIsQuorumRequired(quorumNumber uint8) (bool, error) { + return _ContractEigenDAServiceManager.Contract.GetIsQuorumRequired(&_ContractEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetIsQuorumRequired is a free data retrieval call binding the contract method 0x048886d2. +// +// Solidity: function getIsQuorumRequired(uint8 quorumNumber) view returns(bool) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) GetIsQuorumRequired(quorumNumber uint8) (bool, error) { + return _ContractEigenDAServiceManager.Contract.GetIsQuorumRequired(&_ContractEigenDAServiceManager.CallOpts, quorumNumber) +} + // GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. // // Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) @@ -573,6 +741,68 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession return _ContractEigenDAServiceManager.Contract.GetOperatorRestakedStrategies(&_ContractEigenDAServiceManager.CallOpts, operator) } +// GetQuorumAdversaryThresholdPercentage is a free data retrieval call binding the contract method 0xee6c3bcf. +// +// Solidity: function getQuorumAdversaryThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) GetQuorumAdversaryThresholdPercentage(opts *bind.CallOpts, quorumNumber uint8) (uint8, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "getQuorumAdversaryThresholdPercentage", quorumNumber) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetQuorumAdversaryThresholdPercentage is a free data retrieval call binding the contract method 0xee6c3bcf. +// +// Solidity: function getQuorumAdversaryThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) GetQuorumAdversaryThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractEigenDAServiceManager.Contract.GetQuorumAdversaryThresholdPercentage(&_ContractEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetQuorumAdversaryThresholdPercentage is a free data retrieval call binding the contract method 0xee6c3bcf. +// +// Solidity: function getQuorumAdversaryThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) GetQuorumAdversaryThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractEigenDAServiceManager.Contract.GetQuorumAdversaryThresholdPercentage(&_ContractEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetQuorumConfirmationThresholdPercentage is a free data retrieval call binding the contract method 0x1429c7c2. +// +// Solidity: function getQuorumConfirmationThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) GetQuorumConfirmationThresholdPercentage(opts *bind.CallOpts, quorumNumber uint8) (uint8, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "getQuorumConfirmationThresholdPercentage", quorumNumber) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetQuorumConfirmationThresholdPercentage is a free data retrieval call binding the contract method 0x1429c7c2. +// +// Solidity: function getQuorumConfirmationThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) GetQuorumConfirmationThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractEigenDAServiceManager.Contract.GetQuorumConfirmationThresholdPercentage(&_ContractEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetQuorumConfirmationThresholdPercentage is a free data retrieval call binding the contract method 0x1429c7c2. +// +// Solidity: function getQuorumConfirmationThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) GetQuorumConfirmationThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractEigenDAServiceManager.Contract.GetQuorumConfirmationThresholdPercentage(&_ContractEigenDAServiceManager.CallOpts, quorumNumber) +} + // GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. // // Solidity: function getRestakeableStrategies() view returns(address[]) @@ -1086,21 +1316,21 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession // ConfirmBatch is a paid mutator transaction binding the contract method 0x7794965a. // // Solidity: function confirmBatch((bytes32,bytes,bytes,uint32) batchHeader, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) ConfirmBatch(opts *bind.TransactOpts, batchHeader IEigenDAServiceManagerBatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) ConfirmBatch(opts *bind.TransactOpts, batchHeader BatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { return _ContractEigenDAServiceManager.contract.Transact(opts, "confirmBatch", batchHeader, nonSignerStakesAndSignature) } // ConfirmBatch is a paid mutator transaction binding the contract method 0x7794965a. // // Solidity: function confirmBatch((bytes32,bytes,bytes,uint32) batchHeader, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) ConfirmBatch(batchHeader IEigenDAServiceManagerBatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) ConfirmBatch(batchHeader BatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { return _ContractEigenDAServiceManager.Contract.ConfirmBatch(&_ContractEigenDAServiceManager.TransactOpts, batchHeader, nonSignerStakesAndSignature) } // ConfirmBatch is a paid mutator transaction binding the contract method 0x7794965a. // // Solidity: function confirmBatch((bytes32,bytes,bytes,uint32) batchHeader, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) ConfirmBatch(batchHeader IEigenDAServiceManagerBatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) ConfirmBatch(batchHeader BatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { return _ContractEigenDAServiceManager.Contract.ConfirmBatch(&_ContractEigenDAServiceManager.TransactOpts, batchHeader, nonSignerStakesAndSignature) } diff --git a/contracts/bindings/IEigenDARelayRegistry/binding.go b/contracts/bindings/IEigenDARelayRegistry/binding.go new file mode 100644 index 000000000..941f6d00c --- /dev/null +++ b/contracts/bindings/IEigenDARelayRegistry/binding.go @@ -0,0 +1,449 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contractIEigenDARelayRegistry + +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 +) + +// ContractIEigenDARelayRegistryMetaData contains all meta data concerning the ContractIEigenDARelayRegistry contract. +var ContractIEigenDARelayRegistryMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"getRelayAddress\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRelayId\",\"inputs\":[{\"name\":\"relay\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRelayURL\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setRelayURL\",\"inputs\":[{\"name\":\"relay\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"relayURL\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"RelayAdded\",\"inputs\":[{\"name\":\"relay\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"relayURL\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false}]", +} + +// ContractIEigenDARelayRegistryABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractIEigenDARelayRegistryMetaData.ABI instead. +var ContractIEigenDARelayRegistryABI = ContractIEigenDARelayRegistryMetaData.ABI + +// ContractIEigenDARelayRegistry is an auto generated Go binding around an Ethereum contract. +type ContractIEigenDARelayRegistry struct { + ContractIEigenDARelayRegistryCaller // Read-only binding to the contract + ContractIEigenDARelayRegistryTransactor // Write-only binding to the contract + ContractIEigenDARelayRegistryFilterer // Log filterer for contract events +} + +// ContractIEigenDARelayRegistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractIEigenDARelayRegistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractIEigenDARelayRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractIEigenDARelayRegistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractIEigenDARelayRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractIEigenDARelayRegistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractIEigenDARelayRegistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractIEigenDARelayRegistrySession struct { + Contract *ContractIEigenDARelayRegistry // 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 +} + +// ContractIEigenDARelayRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractIEigenDARelayRegistryCallerSession struct { + Contract *ContractIEigenDARelayRegistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractIEigenDARelayRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractIEigenDARelayRegistryTransactorSession struct { + Contract *ContractIEigenDARelayRegistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractIEigenDARelayRegistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractIEigenDARelayRegistryRaw struct { + Contract *ContractIEigenDARelayRegistry // Generic contract binding to access the raw methods on +} + +// ContractIEigenDARelayRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractIEigenDARelayRegistryCallerRaw struct { + Contract *ContractIEigenDARelayRegistryCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractIEigenDARelayRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractIEigenDARelayRegistryTransactorRaw struct { + Contract *ContractIEigenDARelayRegistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractIEigenDARelayRegistry creates a new instance of ContractIEigenDARelayRegistry, bound to a specific deployed contract. +func NewContractIEigenDARelayRegistry(address common.Address, backend bind.ContractBackend) (*ContractIEigenDARelayRegistry, error) { + contract, err := bindContractIEigenDARelayRegistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractIEigenDARelayRegistry{ContractIEigenDARelayRegistryCaller: ContractIEigenDARelayRegistryCaller{contract: contract}, ContractIEigenDARelayRegistryTransactor: ContractIEigenDARelayRegistryTransactor{contract: contract}, ContractIEigenDARelayRegistryFilterer: ContractIEigenDARelayRegistryFilterer{contract: contract}}, nil +} + +// NewContractIEigenDARelayRegistryCaller creates a new read-only instance of ContractIEigenDARelayRegistry, bound to a specific deployed contract. +func NewContractIEigenDARelayRegistryCaller(address common.Address, caller bind.ContractCaller) (*ContractIEigenDARelayRegistryCaller, error) { + contract, err := bindContractIEigenDARelayRegistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractIEigenDARelayRegistryCaller{contract: contract}, nil +} + +// NewContractIEigenDARelayRegistryTransactor creates a new write-only instance of ContractIEigenDARelayRegistry, bound to a specific deployed contract. +func NewContractIEigenDARelayRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractIEigenDARelayRegistryTransactor, error) { + contract, err := bindContractIEigenDARelayRegistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractIEigenDARelayRegistryTransactor{contract: contract}, nil +} + +// NewContractIEigenDARelayRegistryFilterer creates a new log filterer instance of ContractIEigenDARelayRegistry, bound to a specific deployed contract. +func NewContractIEigenDARelayRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractIEigenDARelayRegistryFilterer, error) { + contract, err := bindContractIEigenDARelayRegistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractIEigenDARelayRegistryFilterer{contract: contract}, nil +} + +// bindContractIEigenDARelayRegistry binds a generic wrapper to an already deployed contract. +func bindContractIEigenDARelayRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractIEigenDARelayRegistryMetaData.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 (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractIEigenDARelayRegistry.Contract.ContractIEigenDARelayRegistryCaller.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 (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractIEigenDARelayRegistry.Contract.ContractIEigenDARelayRegistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractIEigenDARelayRegistry.Contract.ContractIEigenDARelayRegistryTransactor.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 (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractIEigenDARelayRegistry.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 (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractIEigenDARelayRegistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractIEigenDARelayRegistry.Contract.contract.Transact(opts, method, params...) +} + +// GetRelayAddress is a free data retrieval call binding the contract method 0x8050a899. +// +// Solidity: function getRelayAddress(uint32 id) view returns(address) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryCaller) GetRelayAddress(opts *bind.CallOpts, id uint32) (common.Address, error) { + var out []interface{} + err := _ContractIEigenDARelayRegistry.contract.Call(opts, &out, "getRelayAddress", id) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetRelayAddress is a free data retrieval call binding the contract method 0x8050a899. +// +// Solidity: function getRelayAddress(uint32 id) view returns(address) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistrySession) GetRelayAddress(id uint32) (common.Address, error) { + return _ContractIEigenDARelayRegistry.Contract.GetRelayAddress(&_ContractIEigenDARelayRegistry.CallOpts, id) +} + +// GetRelayAddress is a free data retrieval call binding the contract method 0x8050a899. +// +// Solidity: function getRelayAddress(uint32 id) view returns(address) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryCallerSession) GetRelayAddress(id uint32) (common.Address, error) { + return _ContractIEigenDARelayRegistry.Contract.GetRelayAddress(&_ContractIEigenDARelayRegistry.CallOpts, id) +} + +// GetRelayId is a free data retrieval call binding the contract method 0x371e5d99. +// +// Solidity: function getRelayId(address relay) view returns(uint32) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryCaller) GetRelayId(opts *bind.CallOpts, relay common.Address) (uint32, error) { + var out []interface{} + err := _ContractIEigenDARelayRegistry.contract.Call(opts, &out, "getRelayId", relay) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// GetRelayId is a free data retrieval call binding the contract method 0x371e5d99. +// +// Solidity: function getRelayId(address relay) view returns(uint32) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistrySession) GetRelayId(relay common.Address) (uint32, error) { + return _ContractIEigenDARelayRegistry.Contract.GetRelayId(&_ContractIEigenDARelayRegistry.CallOpts, relay) +} + +// GetRelayId is a free data retrieval call binding the contract method 0x371e5d99. +// +// Solidity: function getRelayId(address relay) view returns(uint32) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryCallerSession) GetRelayId(relay common.Address) (uint32, error) { + return _ContractIEigenDARelayRegistry.Contract.GetRelayId(&_ContractIEigenDARelayRegistry.CallOpts, relay) +} + +// GetRelayURL is a free data retrieval call binding the contract method 0x8898cf74. +// +// Solidity: function getRelayURL(uint32 id) view returns(string) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryCaller) GetRelayURL(opts *bind.CallOpts, id uint32) (string, error) { + var out []interface{} + err := _ContractIEigenDARelayRegistry.contract.Call(opts, &out, "getRelayURL", id) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// GetRelayURL is a free data retrieval call binding the contract method 0x8898cf74. +// +// Solidity: function getRelayURL(uint32 id) view returns(string) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistrySession) GetRelayURL(id uint32) (string, error) { + return _ContractIEigenDARelayRegistry.Contract.GetRelayURL(&_ContractIEigenDARelayRegistry.CallOpts, id) +} + +// GetRelayURL is a free data retrieval call binding the contract method 0x8898cf74. +// +// Solidity: function getRelayURL(uint32 id) view returns(string) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryCallerSession) GetRelayURL(id uint32) (string, error) { + return _ContractIEigenDARelayRegistry.Contract.GetRelayURL(&_ContractIEigenDARelayRegistry.CallOpts, id) +} + +// SetRelayURL is a paid mutator transaction binding the contract method 0xbb8a5345. +// +// Solidity: function setRelayURL(address relay, uint32 id, string relayURL) returns() +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryTransactor) SetRelayURL(opts *bind.TransactOpts, relay common.Address, id uint32, relayURL string) (*types.Transaction, error) { + return _ContractIEigenDARelayRegistry.contract.Transact(opts, "setRelayURL", relay, id, relayURL) +} + +// SetRelayURL is a paid mutator transaction binding the contract method 0xbb8a5345. +// +// Solidity: function setRelayURL(address relay, uint32 id, string relayURL) returns() +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistrySession) SetRelayURL(relay common.Address, id uint32, relayURL string) (*types.Transaction, error) { + return _ContractIEigenDARelayRegistry.Contract.SetRelayURL(&_ContractIEigenDARelayRegistry.TransactOpts, relay, id, relayURL) +} + +// SetRelayURL is a paid mutator transaction binding the contract method 0xbb8a5345. +// +// Solidity: function setRelayURL(address relay, uint32 id, string relayURL) returns() +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryTransactorSession) SetRelayURL(relay common.Address, id uint32, relayURL string) (*types.Transaction, error) { + return _ContractIEigenDARelayRegistry.Contract.SetRelayURL(&_ContractIEigenDARelayRegistry.TransactOpts, relay, id, relayURL) +} + +// ContractIEigenDARelayRegistryRelayAddedIterator is returned from FilterRelayAdded and is used to iterate over the raw logs and unpacked data for RelayAdded events raised by the ContractIEigenDARelayRegistry contract. +type ContractIEigenDARelayRegistryRelayAddedIterator struct { + Event *ContractIEigenDARelayRegistryRelayAdded // 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 *ContractIEigenDARelayRegistryRelayAddedIterator) 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(ContractIEigenDARelayRegistryRelayAdded) + 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(ContractIEigenDARelayRegistryRelayAdded) + 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 *ContractIEigenDARelayRegistryRelayAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIEigenDARelayRegistryRelayAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIEigenDARelayRegistryRelayAdded represents a RelayAdded event raised by the ContractIEigenDARelayRegistry contract. +type ContractIEigenDARelayRegistryRelayAdded struct { + Relay common.Address + Id uint32 + RelayURL string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRelayAdded is a free log retrieval operation binding the contract event 0x01c289e409d41a712a615bf286126433da55c193bbe64fc8e77af5f1ff13db99. +// +// Solidity: event RelayAdded(address indexed relay, uint32 indexed id, string relayURL) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryFilterer) FilterRelayAdded(opts *bind.FilterOpts, relay []common.Address, id []uint32) (*ContractIEigenDARelayRegistryRelayAddedIterator, error) { + + var relayRule []interface{} + for _, relayItem := range relay { + relayRule = append(relayRule, relayItem) + } + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _ContractIEigenDARelayRegistry.contract.FilterLogs(opts, "RelayAdded", relayRule, idRule) + if err != nil { + return nil, err + } + return &ContractIEigenDARelayRegistryRelayAddedIterator{contract: _ContractIEigenDARelayRegistry.contract, event: "RelayAdded", logs: logs, sub: sub}, nil +} + +// WatchRelayAdded is a free log subscription operation binding the contract event 0x01c289e409d41a712a615bf286126433da55c193bbe64fc8e77af5f1ff13db99. +// +// Solidity: event RelayAdded(address indexed relay, uint32 indexed id, string relayURL) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryFilterer) WatchRelayAdded(opts *bind.WatchOpts, sink chan<- *ContractIEigenDARelayRegistryRelayAdded, relay []common.Address, id []uint32) (event.Subscription, error) { + + var relayRule []interface{} + for _, relayItem := range relay { + relayRule = append(relayRule, relayItem) + } + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _ContractIEigenDARelayRegistry.contract.WatchLogs(opts, "RelayAdded", relayRule, idRule) + 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(ContractIEigenDARelayRegistryRelayAdded) + if err := _ContractIEigenDARelayRegistry.contract.UnpackLog(event, "RelayAdded", 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 +} + +// ParseRelayAdded is a log parse operation binding the contract event 0x01c289e409d41a712a615bf286126433da55c193bbe64fc8e77af5f1ff13db99. +// +// Solidity: event RelayAdded(address indexed relay, uint32 indexed id, string relayURL) +func (_ContractIEigenDARelayRegistry *ContractIEigenDARelayRegistryFilterer) ParseRelayAdded(log types.Log) (*ContractIEigenDARelayRegistryRelayAdded, error) { + event := new(ContractIEigenDARelayRegistryRelayAdded) + if err := _ContractIEigenDARelayRegistry.contract.UnpackLog(event, "RelayAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/IEigenDAServiceManager/binding.go b/contracts/bindings/IEigenDAServiceManager/binding.go index 24de7a503..3a79aecb6 100644 --- a/contracts/bindings/IEigenDAServiceManager/binding.go +++ b/contracts/bindings/IEigenDAServiceManager/binding.go @@ -41,6 +41,14 @@ type BN254G2Point struct { Y [2]*big.Int } +// BatchHeader is an auto generated low-level Go binding around an user-defined struct. +type BatchHeader struct { + BlobHeadersRoot [32]byte + QuorumNumbers []byte + SignedStakeForQuorums []byte + ReferenceBlockNumber uint32 +} + // IBLSSignatureCheckerNonSignerStakesAndSignature is an auto generated low-level Go binding around an user-defined struct. type IBLSSignatureCheckerNonSignerStakesAndSignature struct { NonSignerQuorumBitmapIndices []uint32 @@ -53,14 +61,6 @@ type IBLSSignatureCheckerNonSignerStakesAndSignature struct { NonSignerStakeIndices [][]uint32 } -// IEigenDAServiceManagerBatchHeader is an auto generated low-level Go binding around an user-defined struct. -type IEigenDAServiceManagerBatchHeader struct { - BlobHeadersRoot [32]byte - QuorumNumbers []byte - SignedStakeForQuorums []byte - ReferenceBlockNumber uint32 -} - // IRewardsCoordinatorRewardsSubmission is an auto generated low-level Go binding around an user-defined struct. type IRewardsCoordinatorRewardsSubmission struct { StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier @@ -83,9 +83,22 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { Expiry *big.Int } +// SecurityThresholds is an auto generated low-level Go binding around an user-defined struct. +type SecurityThresholds struct { + ConfirmationThreshold uint8 + AdversaryThreshold uint8 +} + +// VersionedBlobParams is an auto generated low-level Go binding around an user-defined struct. +type VersionedBlobParams struct { + MaxNumOperators uint32 + NumChunks uint32 + CodingRate uint8 +} + // ContractIEigenDAServiceManagerMetaData contains all meta data concerning the ContractIEigenDAServiceManager contract. var ContractIEigenDAServiceManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"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\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumAdversaryThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumConfirmationThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumNumbersRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBatchConfirmer\",\"inputs\":[{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerStatusChanged\",\"inputs\":[{\"name\":\"batchConfirmer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsInitiatorUpdated\",\"inputs\":[{\"name\":\"prevRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]", + ABI: "[{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structBatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"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\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlobParams\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structVersionedBlobParams\",\"components\":[{\"name\":\"maxNumOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numChunks\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"codingRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDefaultSecurityThresholdsV2\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getIsQuorumRequired\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumAdversaryThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumConfirmationThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumAdversaryThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumConfirmationThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumNumbersRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerStatusChanged\",\"inputs\":[{\"name\":\"batchConfirmer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsInitiatorUpdated\",\"inputs\":[{\"name\":\"prevRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]", } // ContractIEigenDAServiceManagerABI is the input ABI used to generate the binding from. @@ -327,6 +340,99 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSessi return _ContractIEigenDAServiceManager.Contract.BatchIdToBatchMetadataHash(&_ContractIEigenDAServiceManager.CallOpts, batchId) } +// GetBlobParams is a free data retrieval call binding the contract method 0x2ecfe72b. +// +// Solidity: function getBlobParams(uint16 version) view returns((uint32,uint32,uint8)) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) GetBlobParams(opts *bind.CallOpts, version uint16) (VersionedBlobParams, error) { + var out []interface{} + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "getBlobParams", version) + + if err != nil { + return *new(VersionedBlobParams), err + } + + out0 := *abi.ConvertType(out[0], new(VersionedBlobParams)).(*VersionedBlobParams) + + return out0, err + +} + +// GetBlobParams is a free data retrieval call binding the contract method 0x2ecfe72b. +// +// Solidity: function getBlobParams(uint16 version) view returns((uint32,uint32,uint8)) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) GetBlobParams(version uint16) (VersionedBlobParams, error) { + return _ContractIEigenDAServiceManager.Contract.GetBlobParams(&_ContractIEigenDAServiceManager.CallOpts, version) +} + +// GetBlobParams is a free data retrieval call binding the contract method 0x2ecfe72b. +// +// Solidity: function getBlobParams(uint16 version) view returns((uint32,uint32,uint8)) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) GetBlobParams(version uint16) (VersionedBlobParams, error) { + return _ContractIEigenDAServiceManager.Contract.GetBlobParams(&_ContractIEigenDAServiceManager.CallOpts, version) +} + +// GetDefaultSecurityThresholdsV2 is a free data retrieval call binding the contract method 0xef635529. +// +// Solidity: function getDefaultSecurityThresholdsV2() view returns((uint8,uint8)) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) GetDefaultSecurityThresholdsV2(opts *bind.CallOpts) (SecurityThresholds, error) { + var out []interface{} + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "getDefaultSecurityThresholdsV2") + + if err != nil { + return *new(SecurityThresholds), err + } + + out0 := *abi.ConvertType(out[0], new(SecurityThresholds)).(*SecurityThresholds) + + return out0, err + +} + +// GetDefaultSecurityThresholdsV2 is a free data retrieval call binding the contract method 0xef635529. +// +// Solidity: function getDefaultSecurityThresholdsV2() view returns((uint8,uint8)) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) GetDefaultSecurityThresholdsV2() (SecurityThresholds, error) { + return _ContractIEigenDAServiceManager.Contract.GetDefaultSecurityThresholdsV2(&_ContractIEigenDAServiceManager.CallOpts) +} + +// GetDefaultSecurityThresholdsV2 is a free data retrieval call binding the contract method 0xef635529. +// +// Solidity: function getDefaultSecurityThresholdsV2() view returns((uint8,uint8)) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) GetDefaultSecurityThresholdsV2() (SecurityThresholds, error) { + return _ContractIEigenDAServiceManager.Contract.GetDefaultSecurityThresholdsV2(&_ContractIEigenDAServiceManager.CallOpts) +} + +// GetIsQuorumRequired is a free data retrieval call binding the contract method 0x048886d2. +// +// Solidity: function getIsQuorumRequired(uint8 quorumNumber) view returns(bool) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) GetIsQuorumRequired(opts *bind.CallOpts, quorumNumber uint8) (bool, error) { + var out []interface{} + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "getIsQuorumRequired", quorumNumber) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// GetIsQuorumRequired is a free data retrieval call binding the contract method 0x048886d2. +// +// Solidity: function getIsQuorumRequired(uint8 quorumNumber) view returns(bool) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) GetIsQuorumRequired(quorumNumber uint8) (bool, error) { + return _ContractIEigenDAServiceManager.Contract.GetIsQuorumRequired(&_ContractIEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetIsQuorumRequired is a free data retrieval call binding the contract method 0x048886d2. +// +// Solidity: function getIsQuorumRequired(uint8 quorumNumber) view returns(bool) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) GetIsQuorumRequired(quorumNumber uint8) (bool, error) { + return _ContractIEigenDAServiceManager.Contract.GetIsQuorumRequired(&_ContractIEigenDAServiceManager.CallOpts, quorumNumber) +} + // GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. // // Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) @@ -358,6 +464,68 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSessi return _ContractIEigenDAServiceManager.Contract.GetOperatorRestakedStrategies(&_ContractIEigenDAServiceManager.CallOpts, operator) } +// GetQuorumAdversaryThresholdPercentage is a free data retrieval call binding the contract method 0xee6c3bcf. +// +// Solidity: function getQuorumAdversaryThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) GetQuorumAdversaryThresholdPercentage(opts *bind.CallOpts, quorumNumber uint8) (uint8, error) { + var out []interface{} + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "getQuorumAdversaryThresholdPercentage", quorumNumber) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetQuorumAdversaryThresholdPercentage is a free data retrieval call binding the contract method 0xee6c3bcf. +// +// Solidity: function getQuorumAdversaryThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) GetQuorumAdversaryThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractIEigenDAServiceManager.Contract.GetQuorumAdversaryThresholdPercentage(&_ContractIEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetQuorumAdversaryThresholdPercentage is a free data retrieval call binding the contract method 0xee6c3bcf. +// +// Solidity: function getQuorumAdversaryThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) GetQuorumAdversaryThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractIEigenDAServiceManager.Contract.GetQuorumAdversaryThresholdPercentage(&_ContractIEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetQuorumConfirmationThresholdPercentage is a free data retrieval call binding the contract method 0x1429c7c2. +// +// Solidity: function getQuorumConfirmationThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) GetQuorumConfirmationThresholdPercentage(opts *bind.CallOpts, quorumNumber uint8) (uint8, error) { + var out []interface{} + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "getQuorumConfirmationThresholdPercentage", quorumNumber) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetQuorumConfirmationThresholdPercentage is a free data retrieval call binding the contract method 0x1429c7c2. +// +// Solidity: function getQuorumConfirmationThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) GetQuorumConfirmationThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractIEigenDAServiceManager.Contract.GetQuorumConfirmationThresholdPercentage(&_ContractIEigenDAServiceManager.CallOpts, quorumNumber) +} + +// GetQuorumConfirmationThresholdPercentage is a free data retrieval call binding the contract method 0x1429c7c2. +// +// Solidity: function getQuorumConfirmationThresholdPercentage(uint8 quorumNumber) view returns(uint8) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) GetQuorumConfirmationThresholdPercentage(quorumNumber uint8) (uint8, error) { + return _ContractIEigenDAServiceManager.Contract.GetQuorumConfirmationThresholdPercentage(&_ContractIEigenDAServiceManager.CallOpts, quorumNumber) +} + // GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. // // Solidity: function getRestakeableStrategies() view returns(address[]) @@ -547,21 +715,21 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSessi // ConfirmBatch is a paid mutator transaction binding the contract method 0x7794965a. // // Solidity: function confirmBatch((bytes32,bytes,bytes,uint32) batchHeader, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) ConfirmBatch(opts *bind.TransactOpts, batchHeader IEigenDAServiceManagerBatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) ConfirmBatch(opts *bind.TransactOpts, batchHeader BatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { return _ContractIEigenDAServiceManager.contract.Transact(opts, "confirmBatch", batchHeader, nonSignerStakesAndSignature) } // ConfirmBatch is a paid mutator transaction binding the contract method 0x7794965a. // // Solidity: function confirmBatch((bytes32,bytes,bytes,uint32) batchHeader, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) ConfirmBatch(batchHeader IEigenDAServiceManagerBatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) ConfirmBatch(batchHeader BatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { return _ContractIEigenDAServiceManager.Contract.ConfirmBatch(&_ContractIEigenDAServiceManager.TransactOpts, batchHeader, nonSignerStakesAndSignature) } // ConfirmBatch is a paid mutator transaction binding the contract method 0x7794965a. // // Solidity: function confirmBatch((bytes32,bytes,bytes,uint32) batchHeader, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) ConfirmBatch(batchHeader IEigenDAServiceManagerBatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) ConfirmBatch(batchHeader BatchHeader, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (*types.Transaction, error) { return _ContractIEigenDAServiceManager.Contract.ConfirmBatch(&_ContractIEigenDAServiceManager.TransactOpts, batchHeader, nonSignerStakesAndSignature) } @@ -628,27 +796,6 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorS return _ContractIEigenDAServiceManager.Contract.RegisterOperatorToAVS(&_ContractIEigenDAServiceManager.TransactOpts, operator, operatorSignature) } -// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. -// -// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) SetBatchConfirmer(opts *bind.TransactOpts, _batchConfirmer common.Address) (*types.Transaction, error) { - return _ContractIEigenDAServiceManager.contract.Transact(opts, "setBatchConfirmer", _batchConfirmer) -} - -// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. -// -// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) SetBatchConfirmer(_batchConfirmer common.Address) (*types.Transaction, error) { - return _ContractIEigenDAServiceManager.Contract.SetBatchConfirmer(&_ContractIEigenDAServiceManager.TransactOpts, _batchConfirmer) -} - -// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. -// -// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) SetBatchConfirmer(_batchConfirmer common.Address) (*types.Transaction, error) { - return _ContractIEigenDAServiceManager.Contract.SetBatchConfirmer(&_ContractIEigenDAServiceManager.TransactOpts, _batchConfirmer) -} - // UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. // // Solidity: function updateAVSMetadataURI(string _metadataURI) returns() diff --git a/contracts/bindings/MockRollup/binding.go b/contracts/bindings/MockRollup/binding.go index 25bb58889..6ee0c2cba 100644 --- a/contracts/bindings/MockRollup/binding.go +++ b/contracts/bindings/MockRollup/binding.go @@ -41,39 +41,39 @@ type BN254G2Point struct { Y [2]*big.Int } -// EigenDARollupUtilsBlobVerificationProof is an auto generated low-level Go binding around an user-defined struct. -type EigenDARollupUtilsBlobVerificationProof struct { - BatchId uint32 - BlobIndex uint32 - BatchMetadata IEigenDAServiceManagerBatchMetadata - InclusionProof []byte - QuorumIndices []byte -} - -// IEigenDAServiceManagerBatchHeader is an auto generated low-level Go binding around an user-defined struct. -type IEigenDAServiceManagerBatchHeader struct { +// BatchHeader is an auto generated low-level Go binding around an user-defined struct. +type BatchHeader struct { BlobHeadersRoot [32]byte QuorumNumbers []byte SignedStakeForQuorums []byte ReferenceBlockNumber uint32 } -// IEigenDAServiceManagerBatchMetadata is an auto generated low-level Go binding around an user-defined struct. -type IEigenDAServiceManagerBatchMetadata struct { - BatchHeader IEigenDAServiceManagerBatchHeader +// BatchMetadata is an auto generated low-level Go binding around an user-defined struct. +type BatchMetadata struct { + BatchHeader BatchHeader SignatoryRecordHash [32]byte ConfirmationBlockNumber uint32 } -// IEigenDAServiceManagerBlobHeader is an auto generated low-level Go binding around an user-defined struct. -type IEigenDAServiceManagerBlobHeader struct { +// BlobHeader is an auto generated low-level Go binding around an user-defined struct. +type BlobHeader struct { Commitment BN254G1Point DataLength uint32 - QuorumBlobParams []IEigenDAServiceManagerQuorumBlobParam + QuorumBlobParams []QuorumBlobParam +} + +// BlobVerificationProof is an auto generated low-level Go binding around an user-defined struct. +type BlobVerificationProof struct { + BatchId uint32 + BlobIndex uint32 + BatchMetadata BatchMetadata + InclusionProof []byte + QuorumIndices []byte } -// IEigenDAServiceManagerQuorumBlobParam is an auto generated low-level Go binding around an user-defined struct. -type IEigenDAServiceManagerQuorumBlobParam struct { +// QuorumBlobParam is an auto generated low-level Go binding around an user-defined struct. +type QuorumBlobParam struct { QuorumNumber uint8 AdversaryThresholdPercentage uint8 ConfirmationThresholdPercentage uint8 @@ -82,8 +82,8 @@ type IEigenDAServiceManagerQuorumBlobParam struct { // ContractMockRollupMetaData contains all meta data concerning the ContractMockRollup contract. var ContractMockRollupMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_eigenDAServiceManager\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"},{\"name\":\"_tau\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeCommitment\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"point\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"challengeValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"commitments\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"confirmer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"polynomialCommitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAServiceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"postCommitment\",\"inputs\":[{\"name\":\"blobHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BlobHeader\",\"components\":[{\"name\":\"commitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumBlobParams\",\"type\":\"tuple[]\",\"internalType\":\"structIEigenDAServiceManager.QuorumBlobParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"confirmationThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chunkLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"blobVerificationProof\",\"type\":\"tuple\",\"internalType\":\"structEigenDARollupUtils.BlobVerificationProof\",\"components\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"batchMetadata\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchMetadata\",\"components\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"signatoryRecordHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"confirmationBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"inclusionProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumIndices\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tau\",\"inputs\":[],\"outputs\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", - Bin: "0x608060405234801561001057600080fd5b5060405161140e38038061140e83398101604081905261002f91610061565b600080546001600160a01b0319166001600160a01b0393909316929092179091558051600155602001516002556100ef565b600080828403606081121561007557600080fd5b83516001600160a01b038116811461008c57600080fd5b92506040601f19820112156100a057600080fd5b50604080519081016001600160401b03811182821017156100d157634e487b7160e01b600052604160045260246000fd5b60409081526020858101518352940151938101939093525092909150565b611310806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806349ce89971461005c578063b5144c73146100cf578063cfc4af55146100e4578063d2d16eb214610107578063fc30cad01461012a575b600080fd5b6100b761006a366004610aab565b6003602090815260009182526040918290208054835180850190945260018201548452600290910154918301919091526001600160a01b03811691600160a01b90910463ffffffff169083565b6040516100c693929190610ac4565b60405180910390f35b6100e26100dd366004610ded565b610155565b005b6001546002546100f2919082565b604080519283526020830191909152016100c6565b61011a610115366004610fca565b6102d3565b60405190151581526020016100c6565b60005461013d906001600160a01b031681565b6040516001600160a01b0390911681526020016100c6565b426000908152600360205260409020546001600160a01b0316156101dd5760405162461bcd60e51b815260206004820152603460248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a20436f6d6d696044820152731d1b595b9d08185b1c9958591e481c1bdcdd195960621b60648201526084015b60405180910390fd5b60005460405163219460e160e21b815273__$32f04d18c688c2c57b0347c20a77f3d6c9$__916386518384916102259186916001600160a01b03909116908690600401611158565b60006040518083038186803b15801561023d57600080fd5b505af4158015610251573d6000803e3d6000fd5b50506040805160608101825233815260208681015163ffffffff90811682840190815297518385019081524260009081526003845294909420925183549851909116600160a01b026001600160c01b03199098166001600160a01b03919091161796909617815590518051600183015590940151600290940193909355505050565b6000848152600360209081526040808320815160608101835281546001600160a01b038082168352600160a01b90910463ffffffff168286015283518085018552600184015481526002909301549483019490945291820152805190911661039b5760405162461bcd60e51b815260206004820152603560248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527410dbdb5b5a5d1b595b9d081b9bdd081c1bdcdd1959605a1b60648201526084016101d4565b806020015163ffffffff1685106104265760405162461bcd60e51b815260206004820152604360248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f506f696e74206d757374206265206c657373207468616e2064617461206c656e6064820152620cee8d60eb1b608482015260a4016101d4565b604080518082018252600154815260025460208201529082015161044f9187918691908861045b565b9150505b949350505050565b60008061049261048d604080518082018252600080825260209182015281518083019092526001825260029082015290565b6104d8565b90506104cd6104ab6104a4838a610597565b879061062e565b846104c06104b9858b610597565b889061062e565b6104c86106c2565b610782565b979650505050505050565b604080518082019091526000808252602082015281511580156104fd57506020820151155b1561051b575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516105609190611223565b61058a907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4761125b565b905292915050565b919050565b60408051808201909152600080825260208201526105b36109ef565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156105e6576105e8565bfe5b50806106265760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016101d4565b505092915050565b604080518082019091526000808252602082015261064a610a0d565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156105e65750806106265760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016101d4565b6106ca610a2b565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916107b1610a50565b60005b60028110156109765760006107ca826006611288565b90508482600281106107de576107de611272565b602002015151836107f08360006112a7565b600c811061080057610800611272565b602002015284826002811061081757610817611272565b6020020151602001518382600161082e91906112a7565b600c811061083e5761083e611272565b602002015283826002811061085557610855611272565b60200201515151836108688360026112a7565b600c811061087857610878611272565b602002015283826002811061088f5761088f611272565b60200201515160016020020151836108a88360036112a7565b600c81106108b8576108b8611272565b60200201528382600281106108cf576108cf611272565b6020020151602001516000600281106108ea576108ea611272565b6020020151836108fb8360046112a7565b600c811061090b5761090b611272565b602002015283826002811061092257610922611272565b60200201516020015160016002811061093d5761093d611272565b60200201518361094e8360056112a7565b600c811061095e5761095e611272565b6020020152508061096e816112bf565b9150506107b4565b5061097f610a6f565b60006020826101808560086107d05a03fa90508080156105e65750806109df5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016101d4565b5051151598975050505050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610a3e610a8d565b8152602001610a4b610a8d565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600060208284031215610abd57600080fd5b5035919050565b6001600160a01b038416815263ffffffff8316602082015260808101610453604083018480518252602090810151910152565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610b3057610b30610af7565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610af7565b60405160a0810167ffffffffffffffff81118282101715610b3057610b30610af7565b6040805190810167ffffffffffffffff81118282101715610b3057610b30610af7565b604051601f8201601f1916810167ffffffffffffffff81118282101715610bc857610bc8610af7565b604052919050565b803563ffffffff8116811461059257600080fd5b803560ff8116811461059257600080fd5b600082601f830112610c0657600080fd5b813567ffffffffffffffff811115610c2057610c20610af7565b610c33601f8201601f1916602001610b9f565b818152846020838601011115610c4857600080fd5b816020850160208301376000918101602001919091529392505050565b600060608284031215610c7757600080fd5b610c7f610b0d565b9050813567ffffffffffffffff80821115610c9957600080fd5b9083019060808286031215610cad57600080fd5b610cb5610b36565b82358152602083013582811115610ccb57600080fd5b610cd787828601610bf5565b602083015250604083013582811115610cef57600080fd5b610cfb87828601610bf5565b604083015250610d0d60608401610bd0565b60608201528352505060208281013590820152610d2c60408301610bd0565b604082015292915050565b600060a08284031215610d4957600080fd5b610d51610b59565b9050610d5c82610bd0565b8152610d6a60208301610bd0565b6020820152604082013567ffffffffffffffff80821115610d8a57600080fd5b610d9685838601610c65565b60408401526060840135915080821115610daf57600080fd5b610dbb85838601610bf5565b60608401526080840135915080821115610dd457600080fd5b50610de184828501610bf5565b60808301525092915050565b6000806040808486031215610e0157600080fd5b833567ffffffffffffffff80821115610e1957600080fd5b90850190818703608080821215610e2f57600080fd5b610e37610b0d565b85831215610e4457600080fd5b610e4c610b7c565b92508435835260208086013581850152838252610e6a878701610bd0565b81830152606093508386013585811115610e8357600080fd5b8087019650508a601f870112610e9857600080fd5b853585811115610eaa57610eaa610af7565b610eb8828260051b01610b9f565b81815260079190911b8701820190828101908d831115610ed757600080fd5b978301975b82891015610f435785898f031215610ef45760008081fd5b610efc610b36565b610f058a610be4565b8152610f12858b01610be4565b85820152610f218b8b01610be4565b8b820152610f30888b01610bd0565b8189015282529785019790830190610edc565b98840198909852509097508801359450505080831115610f6257600080fd5b5050610f7085828601610d37565b9150509250929050565b600082601f830112610f8b57600080fd5b610f93610b7c565b806040840185811115610fa557600080fd5b845b81811015610fbf578035845260209384019301610fa7565b509095945050505050565b60008060008084860360e0811215610fe157600080fd5b85359450602086013593506080603f1982011215610ffe57600080fd5b50611007610b7c565b6110148760408801610f7a565b81526110238760808801610f7a565b60208201529396929550929360c00135925050565b6000815180845260005b8181101561105e57602081850181015186830182015201611042565b81811115611070576000602083870101525b50601f01601f19169290920160200192915050565b600063ffffffff808351168452806020840151166020850152604083015160a060408601528051606060a08701528051610100870152602081015160806101208801526110d6610180880182611038565b9050604082015160ff19888303016101408901526110f48282611038565b91505083606083015116610160880152602083015160c08801528360408401511660e08801526060860151935086810360608801526111338185611038565b93505050506080830151848203608086015261114f8282611038565b95945050505050565b6060808252845180518383015260200151608083015260009060e0830160208088015163ffffffff80821660a088015260409150818a015160808060c08a01528582518088526101008b0191508684019750600093505b808410156111f2578751805160ff9081168452888201518116898501528782015116878401528901518516898301529686019660019390930192908201906111af565b506001600160a01b038c168a870152898103858b0152611212818c611085565b9d9c50505050505050505050505050565b60008261124057634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101561126d5761126d611245565b500390565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156112a2576112a2611245565b500290565b600082198211156112ba576112ba611245565b500190565b60006000198214156112d3576112d3611245565b506001019056fea2646970667358221220ed148c7173dd91988170fe356fbfcaa4f309e8b595bf034cf086ce0a847c2b2064736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_eigenDAServiceManager\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"},{\"name\":\"_tau\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeCommitment\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"point\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"challengeValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"commitments\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"confirmer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"polynomialCommitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAServiceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"postCommitment\",\"inputs\":[{\"name\":\"blobHeader\",\"type\":\"tuple\",\"internalType\":\"structBlobHeader\",\"components\":[{\"name\":\"commitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumBlobParams\",\"type\":\"tuple[]\",\"internalType\":\"structQuorumBlobParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"confirmationThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chunkLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"blobVerificationProof\",\"type\":\"tuple\",\"internalType\":\"structBlobVerificationProof\",\"components\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"batchMetadata\",\"type\":\"tuple\",\"internalType\":\"structBatchMetadata\",\"components\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structBatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"signatoryRecordHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"confirmationBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"inclusionProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumIndices\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tau\",\"inputs\":[],\"outputs\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162001ecc38038062001ecc833981016040819052620000349162000067565b600080546001600160a01b0319166001600160a01b039390931692909217909155805160015560200151600255620000f9565b60008082840360608112156200007c57600080fd5b83516001600160a01b03811681146200009457600080fd5b92506040601f1982011215620000a957600080fd5b50604080519081016001600160401b0381118282101715620000db57634e487b7160e01b600052604160045260246000fd5b60409081526020858101518352940151938101939093525092909150565b611dc380620001096000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806349ce89971461005c578063b5144c73146100cf578063cfc4af55146100e4578063d2d16eb214610107578063fc30cad01461012a575b600080fd5b6100b761006a36600461154e565b6003602090815260009182526040918290208054835180850190945260018201548452600290910154918301919091526001600160a01b03811691600160a01b90910463ffffffff169083565b6040516100c693929190611567565b60405180910390f35b6100e26100dd36600461189e565b610155565b005b6001546002546100f2919082565b604080519283526020830191909152016100c6565b61011a610115366004611a7b565b610270565b60405190151581526020016100c6565b60005461013d906001600160a01b031681565b6040516001600160a01b0390911681526020016100c6565b426000908152600360205260409020546001600160a01b0316156101dd5760405162461bcd60e51b815260206004820152603460248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a20436f6d6d696044820152731d1b595b9d08185b1c9958591e481c1bdcdd195960621b60648201526084015b60405180910390fd5b6000546101f59083906001600160a01b0316836103f8565b506040805160608101825233815260208381015163ffffffff90811682840190815294518385019081524260009081526003845294909420925183549551909116600160a01b026001600160c01b03199095166001600160a01b03919091161793909317815590518051600183015590910151600290910155565b6000848152600360209081526040808320815160608101835281546001600160a01b038082168352600160a01b90910463ffffffff16828601528351808501855260018401548152600290930154948301949094529182015280519091166103385760405162461bcd60e51b815260206004820152603560248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527410dbdb5b5a5d1b595b9d081b9bdd081c1bdcdd1959605a1b60648201526084016101d4565b806020015163ffffffff1685106103c35760405162461bcd60e51b815260206004820152604360248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f506f696e74206d757374206265206c657373207468616e2064617461206c656e6064820152620cee8d60eb1b608482015260a4016101d4565b60408051808201825260015481526002546020820152908201516103ec91879186919088610ab8565b9150505b949350505050565b805160405163eccbbfc960e01b815263ffffffff90911660048201526001600160a01b0383169063eccbbfc990602401602060405180830381865afa158015610445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104699190611ae9565b6104768260400151610b35565b146104fd5760405162461bcd60e51b815260206004820152604b60248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206260448201527f617463684d6574616461746120646f6573206e6f74206d617463682073746f7260648201526a6564206d6574616461746160a81b608482015260a4016101d4565b60608101516040820151515161054f919061051786610bac565b60405160200161052991815260200190565b60405160208183030381529060405280519060200120846020015163ffffffff16610bdc565b6105c15760405162461bcd60e51b815260206004820152603960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206960448201527f6e636c7573696f6e2070726f6f6620697320696e76616c69640000000000000060648201526084016101d4565b6000805b8460400151518110156109a157846040015181815181106105e8576105e8611b02565b60200260200101516000015160ff16836040015160000151602001518460800151838151811061061a5761061a611b02565b0160200151815160f89190911c90811061063657610636611b02565b016020015160f81c146106b15760405162461bcd60e51b815260206004820152603a60248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a207160448201527f756f72756d4e756d62657220646f6573206e6f74206d6174636800000000000060648201526084016101d4565b846040015181815181106106c7576106c7611b02565b60200260200101516040015160ff16856040015182815181106106ec576106ec611b02565b60200260200101516020015160ff161061077f5760405162461bcd60e51b815260206004820152604860248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206160448201527f64766572736172795468726573686f6c6450657263656e74616765206973206e6064820152671bdd081d985b1a5960c21b608482015260a4016101d4565b60006107af858760400151848151811061079b5761079b611b02565b60200260200101516000015160ff16610bf4565b905060ff811615610866578060ff16866040015183815181106107d4576107d4611b02565b60200260200101516020015160ff1610156108665760405162461bcd60e51b815260206004820152604660248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206160448201527f64766572736172795468726573686f6c6450657263656e74616765206973206e6064820152651bdd081b595d60d21b608482015260a4016101d4565b8560400151828151811061087c5761087c611b02565b60200260200101516040015160ff1684604001516000015160400151856080015184815181106108ae576108ae611b02565b0160200151815160f89190911c9081106108ca576108ca611b02565b016020015160f81c10156109585760405162461bcd60e51b815260206004820152604960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206360448201527f6f6e6669726d6174696f6e5468726573686f6c6450657263656e7461676520696064820152681cc81b9bdd081b595d60ba1b608482015260a4016101d4565b61098b838760400151848151811061097257610972611b02565b602002602001015160000151600160ff919091161b1790565b925050808061099990611b2e565b9150506105c5565b50610a1a610a13846001600160a01b031663e15234ff6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156109e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0e9190810190611b75565b610ceb565b8281161490565b610ab25760405162461bcd60e51b815260206004820152605960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a207260448201527f657175697265642071756f72756d7320617265206e6f7420612073756273657460648201527f206f662074686520636f6e6669726d65642071756f72756d7300000000000000608482015260a4016101d4565b50505050565b600080610aef610aea604080518082018252600080825260209182015281518083019092526001825260029082015290565b610e78565b9050610b2a610b08610b01838a610f37565b8790610fce565b84610b1d610b16858b610f37565b8890610fce565b610b25611062565b611122565b979650505050505050565b6000610ba68260000151604051602001610b4f9190611c18565b60408051808303601f1901815282825280516020918201208682015187840151838601929092528484015260e01b6001600160e01b0319166060840152815160448185030181526064909301909152815191012090565b92915050565b600081604051602001610bbf9190611c78565b604051602081830303815290604052805190602001209050919050565b600083610bea86858561138f565b1495945050505050565b600081836001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c5d9190810190611b75565b511115610ba657826001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cca9190810190611b75565b8281518110610cdb57610cdb611b02565b016020015160f81c905092915050565b600061010082511115610d745760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016101d4565b8151610d8257506000919050565b60008083600081518110610d9857610d98611b02565b0160200151600160f89190911c81901b92505b8451811015610e6f57848181518110610dc657610dc6611b02565b0160200151600160f89190911c1b9150828211610e5b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016101d4565b91811791610e6881611b2e565b9050610dab565b50909392505050565b60408051808201909152600080825260208201528151158015610e9d57506020820151155b15610ebb575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478460200151610f009190611d1d565b610f2a907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611d3f565b905292915050565b919050565b6040805180820190915260008082526020820152610f53611492565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015610f8657610f88565bfe5b5080610fc65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016101d4565b505092915050565b6040805180820190915260008082526020820152610fea6114b0565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015610f86575080610fc65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016101d4565b61106a6114ce565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916111516114f3565b60005b600281101561131657600061116a826006611d56565b905084826002811061117e5761117e611b02565b60200201515183611190836000611d75565b600c81106111a0576111a0611b02565b60200201528482600281106111b7576111b7611b02565b602002015160200151838260016111ce9190611d75565b600c81106111de576111de611b02565b60200201528382600281106111f5576111f5611b02565b6020020151515183611208836002611d75565b600c811061121857611218611b02565b602002015283826002811061122f5761122f611b02565b6020020151516001602002015183611248836003611d75565b600c811061125857611258611b02565b602002015283826002811061126f5761126f611b02565b60200201516020015160006002811061128a5761128a611b02565b60200201518361129b836004611d75565b600c81106112ab576112ab611b02565b60200201528382600281106112c2576112c2611b02565b6020020151602001516001600281106112dd576112dd611b02565b6020020151836112ee836005611d75565b600c81106112fe576112fe611b02565b6020020152508061130e81611b2e565b915050611154565b5061131f611512565b60006020826101808560086107d05a03fa9050808015610f8657508061137f5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016101d4565b5051151598975050505050505050565b60006020845161139f9190611d1d565b156114265760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a4016101d4565b8260205b855181116114895761143d600285611d1d565b61145e57816000528086015160205260406000209150600284049350611477565b8086015160005281602052604060002091506002840493505b611482602082611d75565b905061142a565b50949350505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806114e1611530565b81526020016114ee611530565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561156057600080fd5b5035919050565b6001600160a01b038416815263ffffffff83166020820152608081016103f0604083018480518252602090810151910152565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156115d3576115d361159a565b60405290565b6040516080810167ffffffffffffffff811182821017156115d3576115d361159a565b60405160a0810167ffffffffffffffff811182821017156115d3576115d361159a565b6040805190810167ffffffffffffffff811182821017156115d3576115d361159a565b604051601f8201601f1916810167ffffffffffffffff8111828210171561166b5761166b61159a565b604052919050565b803563ffffffff81168114610f3257600080fd5b803560ff81168114610f3257600080fd5b600067ffffffffffffffff8211156116b2576116b261159a565b50601f01601f191660200190565b600082601f8301126116d157600080fd5b81356116e46116df82611698565b611642565b8181528460208386010111156116f957600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561172857600080fd5b6117306115b0565b9050813567ffffffffffffffff8082111561174a57600080fd5b908301906080828603121561175e57600080fd5b6117666115d9565b8235815260208301358281111561177c57600080fd5b611788878286016116c0565b6020830152506040830135828111156117a057600080fd5b6117ac878286016116c0565b6040830152506117be60608401611673565b606082015283525050602082810135908201526117dd60408301611673565b604082015292915050565b600060a082840312156117fa57600080fd5b6118026115fc565b905061180d82611673565b815261181b60208301611673565b6020820152604082013567ffffffffffffffff8082111561183b57600080fd5b61184785838601611716565b6040840152606084013591508082111561186057600080fd5b61186c858386016116c0565b6060840152608084013591508082111561188557600080fd5b50611892848285016116c0565b60808301525092915050565b60008060408084860312156118b257600080fd5b833567ffffffffffffffff808211156118ca57600080fd5b908501908187036080808212156118e057600080fd5b6118e86115b0565b858312156118f557600080fd5b6118fd61161f565b9250843583526020808601358185015283825261191b878701611673565b8183015260609350838601358581111561193457600080fd5b8087019650508a601f87011261194957600080fd5b85358581111561195b5761195b61159a565b611969828260051b01611642565b81815260079190911b8701820190828101908d83111561198857600080fd5b978301975b828910156119f45785898f0312156119a55760008081fd5b6119ad6115d9565b6119b68a611687565b81526119c3858b01611687565b858201526119d28b8b01611687565b8b8201526119e1888b01611673565b818901528252978501979083019061198d565b98840198909852509097508801359450505080831115611a1357600080fd5b5050611a21858286016117e8565b9150509250929050565b600082601f830112611a3c57600080fd5b611a4461161f565b806040840185811115611a5657600080fd5b845b81811015611a70578035845260209384019301611a58565b509095945050505050565b60008060008084860360e0811215611a9257600080fd5b85359450602086013593506080603f1982011215611aaf57600080fd5b50611ab861161f565b611ac58760408801611a2b565b8152611ad48760808801611a2b565b60208201529396929550929360c00135925050565b600060208284031215611afb57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611b4257611b42611b18565b5060010190565b60005b83811015611b64578181015183820152602001611b4c565b83811115610ab25750506000910152565b600060208284031215611b8757600080fd5b815167ffffffffffffffff811115611b9e57600080fd5b8201601f81018413611baf57600080fd5b8051611bbd6116df82611698565b818152856020838501011115611bd257600080fd5b611be3826020830160208601611b49565b95945050505050565b60008151808452611c04816020860160208601611b49565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160806040840152611c3e60a0840182611bec565b90506040840151601f19848303016060850152611c5b8282611bec565b91505063ffffffff60608501511660808401528091505092915050565b60208082528251805183830152810151604083015260009060a0830181850151606063ffffffff808316828801526040925082880151608080818a015285825180885260c08b0191508884019750600093505b80841015611d0e578751805160ff90811684528a82015181168b850152888201511688840152860151851686830152968801966001939093019290820190611ccb565b509a9950505050505050505050565b600082611d3a57634e487b7160e01b600052601260045260246000fd5b500690565b600082821015611d5157611d51611b18565b500390565b6000816000190483118215151615611d7057611d70611b18565b500290565b60008219821115611d8857611d88611b18565b50019056fea2646970667358221220d77d0cf12e7cf6b1f8dcfe9af634bf1b9f2d41cb57e70c075ccadd63a667c7df64736f6c634300080c0033", } // ContractMockRollupABI is the input ABI used to generate the binding from. @@ -403,20 +403,20 @@ func (_ContractMockRollup *ContractMockRollupTransactorSession) ChallengeCommitm // PostCommitment is a paid mutator transaction binding the contract method 0xb5144c73. // // Solidity: function postCommitment(((uint256,uint256),uint32,(uint8,uint8,uint8,uint32)[]) blobHeader, (uint32,uint32,((bytes32,bytes,bytes,uint32),bytes32,uint32),bytes,bytes) blobVerificationProof) returns() -func (_ContractMockRollup *ContractMockRollupTransactor) PostCommitment(opts *bind.TransactOpts, blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDARollupUtilsBlobVerificationProof) (*types.Transaction, error) { +func (_ContractMockRollup *ContractMockRollupTransactor) PostCommitment(opts *bind.TransactOpts, blobHeader BlobHeader, blobVerificationProof BlobVerificationProof) (*types.Transaction, error) { return _ContractMockRollup.contract.Transact(opts, "postCommitment", blobHeader, blobVerificationProof) } // PostCommitment is a paid mutator transaction binding the contract method 0xb5144c73. // // Solidity: function postCommitment(((uint256,uint256),uint32,(uint8,uint8,uint8,uint32)[]) blobHeader, (uint32,uint32,((bytes32,bytes,bytes,uint32),bytes32,uint32),bytes,bytes) blobVerificationProof) returns() -func (_ContractMockRollup *ContractMockRollupSession) PostCommitment(blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDARollupUtilsBlobVerificationProof) (*types.Transaction, error) { +func (_ContractMockRollup *ContractMockRollupSession) PostCommitment(blobHeader BlobHeader, blobVerificationProof BlobVerificationProof) (*types.Transaction, error) { return _ContractMockRollup.Contract.PostCommitment(&_ContractMockRollup.TransactOpts, blobHeader, blobVerificationProof) } // PostCommitment is a paid mutator transaction binding the contract method 0xb5144c73. // // Solidity: function postCommitment(((uint256,uint256),uint32,(uint8,uint8,uint8,uint32)[]) blobHeader, (uint32,uint32,((bytes32,bytes,bytes,uint32),bytes32,uint32),bytes,bytes) blobVerificationProof) returns() -func (_ContractMockRollup *ContractMockRollupTransactorSession) PostCommitment(blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDARollupUtilsBlobVerificationProof) (*types.Transaction, error) { +func (_ContractMockRollup *ContractMockRollupTransactorSession) PostCommitment(blobHeader BlobHeader, blobVerificationProof BlobVerificationProof) (*types.Transaction, error) { return _ContractMockRollup.Contract.PostCommitment(&_ContractMockRollup.TransactOpts, blobHeader, blobVerificationProof) } diff --git a/contracts/compile.sh b/contracts/compile.sh index f758e5433..aa925b6f6 100755 --- a/contracts/compile.sh +++ b/contracts/compile.sh @@ -21,7 +21,7 @@ function create_binding { forge clean forge build -contracts="PaymentVault SocketRegistry AVSDirectory DelegationManager BitmapUtils OperatorStateRetriever RegistryCoordinator BLSApkRegistry IndexRegistry StakeRegistry BN254 EigenDAServiceManager IEigenDAServiceManager MockRollup EjectionManager" +contracts="PaymentVault SocketRegistry AVSDirectory DelegationManager BitmapUtils OperatorStateRetriever RegistryCoordinator BLSApkRegistry IndexRegistry StakeRegistry BN254 EigenDAServiceManager IEigenDAServiceManager MockRollup EjectionManager IEigenDARelayRegistry" for contract in $contracts; do create_binding ./ $contract ./bindings done diff --git a/core/eth/writer.go b/core/eth/writer.go index fdd6ff57c..d088b6871 100644 --- a/core/eth/writer.go +++ b/core/eth/writer.go @@ -272,7 +272,7 @@ func (t *Writer) BuildConfirmBatchTxn(ctx context.Context, batchHeader *core.Bat } signedStakeForQuorums := serializeSignedStakeForQuorums(quorums) - batchH := eigendasrvmg.IEigenDAServiceManagerBatchHeader{ + batchH := eigendasrvmg.BatchHeader{ BlobHeadersRoot: batchHeader.BatchRoot, QuorumNumbers: quorumNumbers, SignedStakeForQuorums: signedStakeForQuorums, diff --git a/core/serialization.go b/core/serialization.go index c9e7f7a1b..f9e40bf85 100644 --- a/core/serialization.go +++ b/core/serialization.go @@ -132,7 +132,7 @@ func (h BatchHeader) GetBatchHeaderHash() ([32]byte, error) { // HashBatchHeader returns the hash of the BatchHeader that is used to emit the BatchConfirmed event // ref: https://github.com/Layr-Labs/eigenda/blob/master/contracts/src/libraries/EigenDAHasher.sol#L57 -func HashBatchHeader(batchHeader binding.IEigenDAServiceManagerBatchHeader) ([32]byte, error) { +func HashBatchHeader(batchHeader binding.BatchHeader) ([32]byte, error) { // The order here has to match the field ordering of BatchHeader defined in IEigenDAServiceManager.sol batchHeaderType, err := abi.NewType("tuple", "", []abi.ArgumentMarshaling{ { diff --git a/core/serialization_test.go b/core/serialization_test.go index 8159f5406..090fb363f 100644 --- a/core/serialization_test.go +++ b/core/serialization_test.go @@ -40,7 +40,7 @@ func TestBatchHeaderEncoding(t *testing.T) { assert.NoError(t, err) assert.Equal(t, hexutil.Encode(hash[:]), reducedBatchHeaderHash) - onchainBatchHeader := binding.IEigenDAServiceManagerBatchHeader{ + onchainBatchHeader := binding.BatchHeader{ BlobHeadersRoot: batchRoot, QuorumNumbers: []byte{0}, SignedStakeForQuorums: []byte{100}, diff --git a/inabox/tests/integration_test.go b/inabox/tests/integration_test.go index f257d3e2b..36cedebe4 100644 --- a/inabox/tests/integration_test.go +++ b/inabox/tests/integration_test.go @@ -181,17 +181,17 @@ var _ = Describe("Inabox Integration", func() { }) }) -func blobHeaderFromProto(blobHeader *disperserpb.BlobHeader) rollupbindings.IEigenDAServiceManagerBlobHeader { - quorums := make([]rollupbindings.IEigenDAServiceManagerQuorumBlobParam, len(blobHeader.GetBlobQuorumParams())) +func blobHeaderFromProto(blobHeader *disperserpb.BlobHeader) rollupbindings.BlobHeader { + quorums := make([]rollupbindings.QuorumBlobParam, len(blobHeader.GetBlobQuorumParams())) for i, quorum := range blobHeader.GetBlobQuorumParams() { - quorums[i] = rollupbindings.IEigenDAServiceManagerQuorumBlobParam{ + quorums[i] = rollupbindings.QuorumBlobParam{ QuorumNumber: uint8(quorum.GetQuorumNumber()), AdversaryThresholdPercentage: uint8(quorum.GetAdversaryThresholdPercentage()), ConfirmationThresholdPercentage: uint8(quorum.GetConfirmationThresholdPercentage()), ChunkLength: quorum.ChunkLength, } } - return rollupbindings.IEigenDAServiceManagerBlobHeader{ + return rollupbindings.BlobHeader{ Commitment: rollupbindings.BN254G1Point{ X: new(big.Int).SetBytes(blobHeader.GetCommitment().X), Y: new(big.Int).SetBytes(blobHeader.GetCommitment().Y), @@ -201,12 +201,12 @@ func blobHeaderFromProto(blobHeader *disperserpb.BlobHeader) rollupbindings.IEig } } -func blobVerificationProofFromProto(verificationProof *disperserpb.BlobVerificationProof) rollupbindings.EigenDARollupUtilsBlobVerificationProof { +func blobVerificationProofFromProto(verificationProof *disperserpb.BlobVerificationProof) rollupbindings.BlobVerificationProof { batchMetadataProto := verificationProof.GetBatchMetadata() batchHeaderProto := verificationProof.GetBatchMetadata().GetBatchHeader() var batchRoot [32]byte copy(batchRoot[:], batchHeaderProto.GetBatchRoot()) - batchHeader := rollupbindings.IEigenDAServiceManagerBatchHeader{ + batchHeader := rollupbindings.BatchHeader{ BlobHeadersRoot: batchRoot, QuorumNumbers: batchHeaderProto.GetQuorumNumbers(), SignedStakeForQuorums: batchHeaderProto.GetQuorumSignedPercentages(), @@ -214,12 +214,12 @@ func blobVerificationProofFromProto(verificationProof *disperserpb.BlobVerificat } var sig [32]byte copy(sig[:], batchMetadataProto.GetSignatoryRecordHash()) - batchMetadata := rollupbindings.IEigenDAServiceManagerBatchMetadata{ + batchMetadata := rollupbindings.BatchMetadata{ BatchHeader: batchHeader, SignatoryRecordHash: sig, ConfirmationBlockNumber: batchMetadataProto.GetConfirmationBlockNumber(), } - return rollupbindings.EigenDARollupUtilsBlobVerificationProof{ + return rollupbindings.BlobVerificationProof{ BatchId: verificationProof.GetBatchId(), BlobIndex: verificationProof.GetBlobIndex(), BatchMetadata: batchMetadata, diff --git a/retriever/eth/chain_client.go b/retriever/eth/chain_client.go index 5660fdf9c..f0a429ea5 100644 --- a/retriever/eth/chain_client.go +++ b/retriever/eth/chain_client.go @@ -15,7 +15,7 @@ import ( ) type ChainClient interface { - FetchBatchHeader(ctx context.Context, serviceManagerAddress gcommon.Address, batchHeaderHash []byte, fromBlock *big.Int, toBlock *big.Int) (*binding.IEigenDAServiceManagerBatchHeader, error) + FetchBatchHeader(ctx context.Context, serviceManagerAddress gcommon.Address, batchHeaderHash []byte, fromBlock *big.Int, toBlock *big.Int) (*binding.BatchHeader, error) } type chainClient struct { @@ -34,7 +34,7 @@ func NewChainClient(ethClient common.EthClient, logger logging.Logger) ChainClie // It filters logs by the batch header hashes which are logged as events by the service manager contract. // From those logs, it identifies corresponding confirmBatch transaction and decodes batch header from the calldata. // It takes fromBlock and toBlock as arguments to filter logs within a specific block range. This can help with optimizing queries to the chain. nil values for fromBlock and toBlock will default to genesis block and latest block respectively. -func (c *chainClient) FetchBatchHeader(ctx context.Context, serviceManagerAddress gcommon.Address, batchHeaderHash []byte, fromBlock *big.Int, toBlock *big.Int) (*binding.IEigenDAServiceManagerBatchHeader, error) { +func (c *chainClient) FetchBatchHeader(ctx context.Context, serviceManagerAddress gcommon.Address, batchHeaderHash []byte, fromBlock *big.Int, toBlock *big.Int) (*binding.BatchHeader, error) { logs, err := c.ethClient.FilterLogs(ctx, ethereum.FilterQuery{ FromBlock: fromBlock, ToBlock: toBlock, @@ -87,5 +87,5 @@ func (c *chainClient) FetchBatchHeader(ctx context.Context, serviceManagerAddres ReferenceBlockNumber uint32 "json:\"referenceBlockNumber\"" }) - return (*binding.IEigenDAServiceManagerBatchHeader)(&batchHeaderInput), nil + return (*binding.BatchHeader)(&batchHeaderInput), nil } diff --git a/retriever/eth/chain_client_test.go b/retriever/eth/chain_client_test.go index 20df7b979..fe66e1c6c 100644 --- a/retriever/eth/chain_client_test.go +++ b/retriever/eth/chain_client_test.go @@ -48,7 +48,7 @@ func TestFetchBatchHeader(t *testing.T) { Index: 0, }, }, nil) - expectedHeader := binding.IEigenDAServiceManagerBatchHeader{ + expectedHeader := binding.BatchHeader{ BlobHeadersRoot: [32]byte{0}, QuorumNumbers: []byte{0}, SignedStakeForQuorums: []byte{100}, diff --git a/retriever/mock/chain_client.go b/retriever/mock/chain_client.go index 668b62b37..a0db1fcc6 100644 --- a/retriever/mock/chain_client.go +++ b/retriever/mock/chain_client.go @@ -20,7 +20,7 @@ func NewMockChainClient() *MockChainClient { return &MockChainClient{} } -func (c *MockChainClient) FetchBatchHeader(ctx context.Context, serviceManagerAddress gcommon.Address, batchHeaderHash []byte, fromBlock *big.Int, toBlock *big.Int) (*binding.IEigenDAServiceManagerBatchHeader, error) { +func (c *MockChainClient) FetchBatchHeader(ctx context.Context, serviceManagerAddress gcommon.Address, batchHeaderHash []byte, fromBlock *big.Int, toBlock *big.Int) (*binding.BatchHeader, error) { args := c.Called() - return args.Get(0).(*binding.IEigenDAServiceManagerBatchHeader), args.Error(1) + return args.Get(0).(*binding.BatchHeader), args.Error(1) } diff --git a/retriever/server_test.go b/retriever/server_test.go index 08fed4ebc..161e6f067 100644 --- a/retriever/server_test.go +++ b/retriever/server_test.go @@ -83,7 +83,7 @@ func newTestServer(t *testing.T) *retriever.Server { func TestRetrieveBlob(t *testing.T) { server := newTestServer(t) - chainClient.On("FetchBatchHeader").Return(&binding.IEigenDAServiceManagerBatchHeader{ + chainClient.On("FetchBatchHeader").Return(&binding.BatchHeader{ BlobHeadersRoot: batchRoot, QuorumNumbers: []byte{0}, SignedStakeForQuorums: []byte{90}, diff --git a/tools/traffic/workers/blob_reader_test.go b/tools/traffic/workers/blob_reader_test.go index 941351800..ea9d5f077 100644 --- a/tools/traffic/workers/blob_reader_test.go +++ b/tools/traffic/workers/blob_reader_test.go @@ -3,6 +3,10 @@ package workers import ( "context" "crypto/md5" + "sync" + "testing" + "time" + "github.com/Layr-Labs/eigenda/api/clients" apiMock "github.com/Layr-Labs/eigenda/api/clients/mock" "github.com/Layr-Labs/eigenda/common" @@ -15,9 +19,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "golang.org/x/exp/rand" - "sync" - "testing" - "time" ) // TestBlobReaderNoOptionalReads tests the BlobReader's basic functionality' @@ -40,7 +41,7 @@ func TestBlobReader(t *testing.T) { mock.Anything, mock.Anything, mock.Anything, - mock.Anything).Return(&binding.IEigenDAServiceManagerBatchHeader{}, nil) + mock.Anything).Return(&binding.BatchHeader{}, nil) retrievalClient := &apiMock.MockRetrievalClient{} blobReader := NewBlobReader(