From 72a20c2fefdc34a6e1474677602351543af826d3 Mon Sep 17 00:00:00 2001 From: John Adler Date: Wed, 22 Jun 2022 11:13:22 -0400 Subject: [PATCH] Use old validator set nonce instead of latest nonce. (#121) * Use old validator set nonce instead of latest nonce. * Update go wrapper. --- src/QuantumGravityBridge.sol | 7 ++-- src/test/QuantumGravityBridge.t.sol | 4 ++- wrappers/QuantumGravityBridge.sol/wrapper.go | 36 ++++++++++---------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/QuantumGravityBridge.sol b/src/QuantumGravityBridge.sol index 9b0f0a4f..9effe1c5 100644 --- a/src/QuantumGravityBridge.sol +++ b/src/QuantumGravityBridge.sol @@ -243,12 +243,15 @@ contract QuantumGravityBridge is IDAOracle { /// /// The validator set hash that is signed over is domain separated as per /// `domainSeparateValidatorSetHash`. - /// @param _newValidatorSetHash The hash of the new validator set. /// @param _newNonce The new event nonce. + /// @param _oldNonce The nonce of the latest update to the validator set. + /// @param _newPowerThreshold At least this much power must have signed. + /// @param _newValidatorSetHash The hash of the new validator set. /// @param _currentValidatorSet The current validator set. /// @param _sigs Signatures. function updateValidatorSet( uint256 _newNonce, + uint256 _oldNonce, uint256 _newPowerThreshold, bytes32 _newValidatorSetHash, Validator[] calldata _currentValidatorSet, @@ -272,7 +275,7 @@ contract QuantumGravityBridge is IDAOracle { // Check that the supplied current validator set matches the saved checkpoint. bytes32 currentValidatorSetHash = computeValidatorSetHash(_currentValidatorSet); if ( - domainSeparateValidatorSetHash(BRIDGE_ID, currentNonce, currentPowerThreshold, currentValidatorSetHash) != + domainSeparateValidatorSetHash(BRIDGE_ID, _oldNonce, currentPowerThreshold, currentValidatorSetHash) != state_lastValidatorSetCheckpoint ) { revert SuppliedValidatorSetInvalid(); diff --git a/src/test/QuantumGravityBridge.t.sol b/src/test/QuantumGravityBridge.t.sol index b9043309..ea543854 100644 --- a/src/test/QuantumGravityBridge.t.sol +++ b/src/test/QuantumGravityBridge.t.sol @@ -47,6 +47,8 @@ contract RelayerTest is DSTest { } function testUpdateValidatorSet() public { + uint256 initialVelsetNonce = 0; + // Save the old test validator set before we add to it. Validator[] memory oldVS = new Validator[](1); oldVS[0] = Validator(cheats.addr(testPriv1), votingPower); @@ -64,7 +66,7 @@ contract RelayerTest is DSTest { (uint8 v, bytes32 r, bytes32 s) = cheats.sign(testPriv1, digest_eip191); sigs[0] = Signature(v, r, s); - bridge.updateValidatorSet(newNonce, newPowerThreshold, newVSHash, oldVS, sigs); + bridge.updateValidatorSet(newNonce, initialVelsetNonce, newPowerThreshold, newVSHash, oldVS, sigs); assertEq(bridge.state_eventNonce(), newNonce); assertEq(bridge.state_powerThreshold(), newPowerThreshold); diff --git a/wrappers/QuantumGravityBridge.sol/wrapper.go b/wrappers/QuantumGravityBridge.sol/wrapper.go index f27e2669..c07e2c9d 100644 --- a/wrappers/QuantumGravityBridge.sol/wrapper.go +++ b/wrappers/QuantumGravityBridge.sol/wrapper.go @@ -57,7 +57,7 @@ type Validator struct { // BinaryMerkleTreeMetaData contains all meta data concerning the BinaryMerkleTree contract. var BinaryMerkleTreeMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e8197a942a023ffcd4628e5d6846bba5bda970775103af3c39314ab3fef231864736f6c634300080d0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122098f27f05b7380e7c42bfe42ac165239b01f2d2ebcd7fd9dcf47a5b2d2645d03364736f6c634300080f0033", } // BinaryMerkleTreeABI is the input ABI used to generate the binding from. @@ -230,7 +230,7 @@ func (_BinaryMerkleTree *BinaryMerkleTreeTransactorRaw) Transact(opts *bind.Tran // ConstantsMetaData contains all meta data concerning the Constants contract. var ConstantsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a9239acbf68ca844787307a55250f1802d06ccbb7825c423768928ed6ec10ab64736f6c634300080d0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091baf0bdbe84731c6f2e7af6540d7ef708350a644d4739d5bd140218532aabcf64736f6c634300080f0033", } // ConstantsABI is the input ABI used to generate the binding from. @@ -403,7 +403,7 @@ func (_Constants *ConstantsTransactorRaw) Transact(opts *bind.TransactOpts, meth // ECDSAMetaData contains all meta data concerning the ECDSA contract. var ECDSAMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7e74eeb868f863a6c65bcb79a1af8a776fbb7f1dc0f3343dba5c990f9a7d86d64736f6c634300080d0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e1394c7a6a983f058b66b2aae8d3c41bbd685c107783073f873fd2c5d97e3edd64736f6c634300080f0033", } // ECDSAABI is the input ABI used to generate the binding from. @@ -764,7 +764,7 @@ func (_IDAOracle *IDAOracleCallerSession) VerifyAttestation(_tupleRootNonce *big // QuantumGravityBridgeMetaData contains all meta data concerning the QuantumGravityBridge contract. var QuantumGravityBridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_bridge_id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_powerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_validatorSetHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientVotingPower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataRootTupleRootNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidValidatorSetNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MalformedCurrentValidatorSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SuppliedValidatorSetInvalid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataRootTupleRoot\",\"type\":\"bytes32\"}],\"name\":\"DataRootTupleRootEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"powerThreshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"validatorSetHash\",\"type\":\"bytes32\"}],\"name\":\"ValidatorSetUpdatedEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"state_dataRootTupleRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state_eventNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state_lastValidatorSetCheckpoint\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state_powerThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validatorSetNonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_dataRootTupleRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"power\",\"type\":\"uint256\"}],\"internalType\":\"structValidator[]\",\"name\":\"_currentValidatorSet\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structSignature[]\",\"name\":\"_sigs\",\"type\":\"tuple[]\"}],\"name\":\"submitDataRootTupleRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newPowerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_newValidatorSetHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"power\",\"type\":\"uint256\"}],\"internalType\":\"structValidator[]\",\"name\":\"_currentValidatorSet\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structSignature[]\",\"name\":\"_sigs\",\"type\":\"tuple[]\"}],\"name\":\"updateValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tupleRootNonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structDataRootTuple\",\"name\":\"_tuple\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"sideNodes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numLeaves\",\"type\":\"uint256\"}],\"internalType\":\"structBinaryMerkleProof\",\"name\":\"_proof\",\"type\":\"tuple\"}],\"name\":\"verifyAttestation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_bridge_id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_powerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_validatorSetHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientVotingPower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataRootTupleRootNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidValidatorSetNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MalformedCurrentValidatorSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SuppliedValidatorSetInvalid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataRootTupleRoot\",\"type\":\"bytes32\"}],\"name\":\"DataRootTupleRootEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"powerThreshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"validatorSetHash\",\"type\":\"bytes32\"}],\"name\":\"ValidatorSetUpdatedEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"state_dataRootTupleRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state_eventNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state_lastValidatorSetCheckpoint\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state_powerThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validatorSetNonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_dataRootTupleRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"power\",\"type\":\"uint256\"}],\"internalType\":\"structValidator[]\",\"name\":\"_currentValidatorSet\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structSignature[]\",\"name\":\"_sigs\",\"type\":\"tuple[]\"}],\"name\":\"submitDataRootTupleRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_oldNonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newPowerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_newValidatorSetHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"power\",\"type\":\"uint256\"}],\"internalType\":\"structValidator[]\",\"name\":\"_currentValidatorSet\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structSignature[]\",\"name\":\"_sigs\",\"type\":\"tuple[]\"}],\"name\":\"updateValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tupleRootNonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structDataRootTuple\",\"name\":\"_tuple\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"sideNodes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numLeaves\",\"type\":\"uint256\"}],\"internalType\":\"structBinaryMerkleProof\",\"name\":\"_proof\",\"type\":\"tuple\"}],\"name\":\"verifyAttestation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", Sigs: map[string]string{ "af4482af": "BRIDGE_ID()", "817f985b": "state_dataRootTupleRoots(uint256)", @@ -772,10 +772,10 @@ var QuantumGravityBridgeMetaData = &bind.MetaData{ "5433218c": "state_lastValidatorSetCheckpoint()", "e5a2b5d2": "state_powerThreshold()", "e23eb326": "submitDataRootTupleRoot(uint256,uint256,bytes32,(address,uint256)[],(uint8,bytes32,bytes32)[])", - "4693c0df": "updateValidatorSet(uint256,uint256,bytes32,(address,uint256)[],(uint8,bytes32,bytes32)[])", + "05d85c13": "updateValidatorSet(uint256,uint256,uint256,bytes32,(address,uint256)[],(uint8,bytes32,bytes32)[])", "1f3302a9": "verifyAttestation(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))", }, - Bin: "0x60a060405234801561001057600080fd5b506040516113f23803806113f283398101604081905261002f916100d3565b60808481526040805160208082018890526918da1958dadc1bda5b9d60b21b828401526060820187905292810185905260a08082018590528251808303909101815260c08201808452815191909401206002879055600081905560018690559285905260e08101849052905185917fe55fb3cbbfe29b13c7f8a35ef23127e7df9ab88df16bac166ad254a20f02414c91908190036101000190a25050505050610109565b600080600080608085870312156100e957600080fd5b505082516020840151604085015160609095015191969095509092509050565b6080516112b26101406000396000818161010601528181610217015281816102630152818161035a01526103a501526112b26000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063af4482af1161005b578063af4482af14610101578063cdade86614610128578063e23eb32614610131578063e5a2b5d21461014457600080fd5b80631f3302a91461008d5780634693c0df146100b55780635433218c146100ca578063817f985b146100e1575b600080fd5b6100a061009b366004610e37565b61014d565b60405190151581526020015b60405180910390f35b6100c86100c3366004610fa5565b6101af565b005b6100d360005481565b6040519081526020016100ac565b6100d36100ef366004611063565b60036020526000908152604090205481565b6100d37f000000000000000000000000000000000000000000000000000000000000000081565b6100d360025481565b6100c861013f366004610fa5565b6102f2565b6100d360015481565b6000600254841115610161575060006101a8565b60008481526003602090815260408083205481518751818501529287015183830152815180840383018152606090930190915291906101a39083908690610463565b925050505b9392505050565b60025460018054906101c2908390611092565b89146101e1576040516368a35ffd60e11b815260040160405180910390fd5b8483146102015760405163c6617b7b60e01b815260040160405180910390fd5b600061020d87876106d3565b905060005461023e7f0000000000000000000000000000000000000000000000000000000000000000858585610707565b1461025c57604051630bbdaec960e11b815260040160405180910390fd5b600061028a7f00000000000000000000000000000000000000000000000000000000000000008c8c8c610707565b905061029a888888888588610758565b600081905560018a905560028b9055604080518b8152602081018b90528c917fe55fb3cbbfe29b13c7f8a35ef23127e7df9ab88df16bac166ad254a20f02414c91015b60405180910390a25050505050505050505050565b6002546001805490610305908390611092565b89146103245760405163e869766d60e01b815260040160405180910390fd5b8483146103445760405163c6617b7b60e01b815260040160405180910390fd5b600061035087876106d3565b90506000546103817f00000000000000000000000000000000000000000000000000000000000000008b8585610707565b1461039f57604051630bbdaec960e11b815260040160405180910390fd5b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091526f0e8e4c2dce6c2c6e8d2dedc84c2e8c6d60831b82840152606082018d905260808083018c90528351808403909101815260a09092019092528051910120610419888888888588610758565b60028b905560008b815260036020526040908190208a9055518b907f6614d037bde4905e31ca5ff05de61964c267f28b0320ed49e59f7d99752e1c4f906102dd908c815260200190565b600060018360400151116104865782515115610481575060006101a8565b6104a8565b6104988360200151846040015161085d565b835151146104a8575060006101a8565b82604001518360200151106104bf575060006101a8565b60006104ca836108e3565b8451519091506000036104f65783604001516001036104ec57841490506101a8565b60009150506101a8565b60208401516001905b60208601516000906001841b906105179082906110aa565b61052191906110cc565b90506000600161053381861b84611092565b61053d91906110eb565b905087604001518110610551575050610617565b91508161055f6001856110eb565b88515111610575576000955050505050506101a8565b6105806001856110eb565b6001901b82896020015161059491906110eb565b10156105d15787516105ca9086906105ad6001886110eb565b815181106105bd576105bd611102565b6020026020010151610958565b9450610603565b8751610600906105e26001876110eb565b815181106105f2576105f2611102565b602002602001015186610958565b94505b61060e600185611092565b935050506104ff565b6001866040015161062891906110eb565b8114610670576106396001836110eb565b8651511161064d57600093505050506101a8565b85516106609084906105ad6001866110eb565b925061066d600183611092565b91505b85515161067e6001846110eb565b10156106c75785516106b3906106956001856110eb565b815181106106a5576106a5611102565b602002602001015184610958565b92506106c0600183611092565b9150610670565b50509093149392505050565b600082826040516020016106e8929190611134565b6040516020818303038152906040528051906020012090505b92915050565b604080516020808201969096526918da1958dadc1bda5b9d60b21b818301526060810194909452608084019290925260a0808401919091528151808403909101815260c09092019052805191012090565b6000805b868110156108325761078486868381811061077957610779611102565b9050606002016109d6565b610820576107d188888381811061079d5761079d611102565b6107b3926020604090920201908101915061118b565b858888858181106107c6576107c6611102565b905060600201610a0a565b6107ee57604051638baa579f60e01b815260040160405180910390fd5b87878281811061080057610800611102565b90506040020160200135826108159190611092565b915082821015610832575b8061082a816111a6565b91505061075c565b50818110156108545760405163cabeb65560e01b815260040160405180910390fd5b50505050505050565b600061086882610aa4565b610874906101006110eb565b905060006108836001836110eb565b6001901b905060018161089691906110eb565b84116108a25750610701565b806001036108b4576001915050610701565b6108d06108c182866110eb565b6108cb83866110eb565b61085d565b6108db906001611092565b915050610701565b60006002600060f81b836040516020016108fe9291906111fa565b60408051601f19818403018152908290526109189161121e565b602060405180830381855afa158015610935573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610701919061122a565b604051600160f81b6020820152602181018390526041810182905260009060029060610160408051601f19818403018152908290526109969161121e565b602060405180830381855afa1580156109b3573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906101a8919061122a565b600060208201351580156109ec57506040820135155b80156107015750610a006020830183611243565b60ff161592915050565b600080610a64846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050610a8681610a776020860186611243565b85602001358660400135610ad1565b6001600160a01b0316856001600160a01b0316149150509392505050565b60005b81816001901b1015610ac557610abe600182611092565b9050610aa7565b610701816101006110eb565b6000806000610ae287878787610af9565b91509150610aef81610be6565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b305750600090506003610bdd565b8460ff16601b14158015610b4857508460ff16601c14155b15610b595750600090506004610bdd565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610bad573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd657600060019250925050610bdd565b9150600090505b94509492505050565b6000816004811115610bfa57610bfa611266565b03610c025750565b6001816004811115610c1657610c16611266565b03610c685760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064015b60405180910390fd5b6002816004811115610c7c57610c7c611266565b03610cc95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610c5f565b6003816004811115610cdd57610cdd611266565b03610d355760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610c5f565b6004816004811115610d4957610d49611266565b03610da15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610c5f565b50565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610ddd57610ddd610da4565b60405290565b6040516060810167ffffffffffffffff81118282101715610ddd57610ddd610da4565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e2f57610e2f610da4565b604052919050565b60008060008385036080811215610e4d57600080fd5b8435935060206040601f1983011215610e6557600080fd5b610e6d610dba565b86820135815260408701358282015293506060860135915067ffffffffffffffff80831115610e9b57600080fd5b9186019160608389031215610eaf57600080fd5b610eb7610de3565b833582811115610ec657600080fd5b8401601f81018a13610ed757600080fd5b803583811115610ee957610ee9610da4565b8060051b9350610efa858501610e06565b818152938201850193858101908c861115610f1457600080fd5b928601925b85841015610f3257833582529286019290860190610f19565b80855250505050828401358382015260408401356040820152809450505050509250925092565b60008083601f840112610f6b57600080fd5b50813567ffffffffffffffff811115610f8357600080fd5b602083019150836020606083028501011115610f9e57600080fd5b9250929050565b600080600080600080600060a0888a031215610fc057600080fd5b873596506020880135955060408801359450606088013567ffffffffffffffff80821115610fed57600080fd5b818a0191508a601f83011261100157600080fd5b81358181111561101057600080fd5b8b60208260061b850101111561102557600080fd5b6020830196508095505060808a013591508082111561104357600080fd5b506110508a828b01610f59565b989b979a50959850939692959293505050565b60006020828403121561107557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156110a5576110a561107c565b500190565b6000826110c757634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156110e6576110e661107c565b500290565b6000828210156110fd576110fd61107c565b500390565b634e487b7160e01b600052603260045260246000fd5b80356001600160a01b038116811461112f57600080fd5b919050565b6020808252818101839052600090604080840186845b8781101561117e576001600160a01b0361116383611118565b1683528185013585840152918301919083019060010161114a565b5090979650505050505050565b60006020828403121561119d57600080fd5b6101a882611118565b6000600182016111b8576111b861107c565b5060010190565b6000815160005b818110156111e057602081850181015186830152016111c6565b818111156111ef576000828601525b509290920192915050565b6001600160f81b031983168152600061121660018301846111bf565b949350505050565b60006101a882846111bf565b60006020828403121561123c57600080fd5b5051919050565b60006020828403121561125557600080fd5b813560ff811681146101a857600080fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220175d2f1bb102113e76afcaa0dee9c26fb198b425c379df246ff37efbe1465b7364736f6c634300080d0033", + Bin: "0x60a060405234801561001057600080fd5b506040516114b13803806114b183398101604081905261002f916100d3565b60808481526040805160208082018890526918da1958dadc1bda5b9d60b21b828401526060820187905292810185905260a08082018590528251808303909101815260c08201808452815191909401206002879055600081905560018690559285905260e08101849052905185917fe55fb3cbbfe29b13c7f8a35ef23127e7df9ab88df16bac166ad254a20f02414c91908190036101000190a25050505050610109565b600080600080608085870312156100e957600080fd5b505082516020840151604085015160609095015191969095509092509050565b60805161137161014060003960008181610106015281816101b5015281816102010152818161035a01526103a501526113716000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063af4482af1161005b578063af4482af14610101578063cdade86614610128578063e23eb32614610131578063e5a2b5d21461014457600080fd5b806305d85c131461008d5780631f3302a9146100a25780635433218c146100ca578063817f985b146100e1575b600080fd5b6100a061009b366004610e4a565b61014d565b005b6100b56100b0366004610f73565b610290565b60405190151581526020015b60405180910390f35b6100d360005481565b6040519081526020016100c1565b6100d36100ef366004611095565b60036020526000908152604090205481565b6100d37f000000000000000000000000000000000000000000000000000000000000000081565b6100d360025481565b6100a061013f3660046110ae565b6102f2565b6100d360015481565b6002546001805490610160908390611151565b8a1461017f576040516368a35ffd60e11b815260040160405180910390fd5b84831461019f5760405163c6617b7b60e01b815260040160405180910390fd5b60006101ab8787610478565b90506000546101dc7f00000000000000000000000000000000000000000000000000000000000000008c85856104ac565b146101fa57604051630bbdaec960e11b815260040160405180910390fd5b60006102287f00000000000000000000000000000000000000000000000000000000000000008d8c8c6104ac565b90506102388888888885886104fd565b600081905560018a905560028c9055604080518b8152602081018b90528d917fe55fb3cbbfe29b13c7f8a35ef23127e7df9ab88df16bac166ad254a20f02414c910160405180910390a2505050505050505050505050565b60006002548411156102a4575060006102eb565b60008481526003602090815260408083205481518751818501529287015183830152815180840383018152606090930190915291906102e69083908690610602565b925050505b9392505050565b6002546001805490610305908390611151565b89146103245760405163e869766d60e01b815260040160405180910390fd5b8483146103445760405163c6617b7b60e01b815260040160405180910390fd5b60006103508787610478565b90506000546103817f00000000000000000000000000000000000000000000000000000000000000008b85856104ac565b1461039f57604051630bbdaec960e11b815260040160405180910390fd5b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091526f0e8e4c2dce6c2c6e8d2dedc84c2e8c6d60831b82840152606082018d905260808083018c90528351808403909101815260a090920190925280519101206104198888888885886104fd565b60028b905560008b815260036020526040908190208a9055518b907f6614d037bde4905e31ca5ff05de61964c267f28b0320ed49e59f7d99752e1c4f90610463908c815260200190565b60405180910390a25050505050505050505050565b6000828260405160200161048d929190611185565b6040516020818303038152906040528051906020012090505b92915050565b604080516020808201969096526918da1958dadc1bda5b9d60b21b818301526060810194909452608084019290925260a0808401919091528151808403909101815260c09092019052805191012090565b6000805b868110156105d75761052986868381811061051e5761051e6111dc565b905060600201610872565b6105c557610576888883818110610542576105426111dc565b61055892602060409092020190810191506111f2565b8588888581811061056b5761056b6111dc565b9050606002016108a6565b61059357604051638baa579f60e01b815260040160405180910390fd5b8787828181106105a5576105a56111dc565b90506040020160200135826105ba9190611151565b9150828210156105d7575b806105cf8161120d565b915050610501565b50818110156105f95760405163cabeb65560e01b815260040160405180910390fd5b50505050505050565b600060018360400151116106255782515115610620575060006102eb565b610647565b61063783602001518460400151610940565b83515114610647575060006102eb565b826040015183602001511061065e575060006102eb565b6000610669836109c6565b84515190915060000361069557836040015160010361068b57841490506102eb565b60009150506102eb565b60208401516001905b60208601516000906001841b906106b6908290611226565b6106c09190611248565b9050600060016106d281861b84611151565b6106dc9190611267565b9050876040015181106106f05750506107b6565b9150816106fe600185611267565b88515111610714576000955050505050506102eb565b61071f600185611267565b6001901b8289602001516107339190611267565b101561077057875161076990869061074c600188611267565b8151811061075c5761075c6111dc565b6020026020010151610a3b565b94506107a2565b875161079f90610781600187611267565b81518110610791576107916111dc565b602002602001015186610a3b565b94505b6107ad600185611151565b9350505061069e565b600186604001516107c79190611267565b811461080f576107d8600183611267565b865151116107ec57600093505050506102eb565b85516107ff90849061074c600186611267565b925061080c600183611151565b91505b85515161081d600184611267565b101561086657855161085290610834600185611267565b81518110610844576108446111dc565b602002602001015184610a3b565b925061085f600183611151565b915061080f565b50509093149392505050565b6000602082013515801561088857506040820135155b80156104a6575061089c602083018361127e565b60ff161592915050565b600080610900846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b905061092281610913602086018661127e565b85602001358660400135610ab9565b6001600160a01b0316856001600160a01b0316149150509392505050565b600061094b82610ae1565b61095790610100611267565b90506000610966600183611267565b6001901b90506001816109799190611267565b841161098557506104a6565b806001036109975760019150506104a6565b6109b36109a48286611267565b6109ae8386611267565b610940565b6109be906001611151565b9150506104a6565b60006002600060f81b836040516020016109e19291906112dc565b60408051601f19818403018152908290526109fb91611300565b602060405180830381855afa158015610a18573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104a6919061130c565b604051600160f81b6020820152602181018390526041810182905260009060029060610160408051601f1981840301815290829052610a7991611300565b602060405180830381855afa158015610a96573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906102eb919061130c565b6000806000610aca87878787610b0e565b91509150610ad781610bfb565b5095945050505050565b60005b81816001901b1015610b0257610afb600182611151565b9050610ae4565b6104a681610100611267565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b455750600090506003610bf2565b8460ff16601b14158015610b5d57508460ff16601c14155b15610b6e5750600090506004610bf2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610bc2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610beb57600060019250925050610bf2565b9150600090505b94509492505050565b6000816004811115610c0f57610c0f611325565b03610c175750565b6001816004811115610c2b57610c2b611325565b03610c7d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064015b60405180910390fd5b6002816004811115610c9157610c91611325565b03610cde5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610c74565b6003816004811115610cf257610cf2611325565b03610d4a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610c74565b6004816004811115610d5e57610d5e611325565b03610db65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610c74565b50565b60008083601f840112610dcb57600080fd5b50813567ffffffffffffffff811115610de357600080fd5b6020830191508360208260061b8501011115610dfe57600080fd5b9250929050565b60008083601f840112610e1757600080fd5b50813567ffffffffffffffff811115610e2f57600080fd5b602083019150836020606083028501011115610dfe57600080fd5b60008060008060008060008060c0898b031215610e6657600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115610e9a57600080fd5b610ea68c838d01610db9565b909650945060a08b0135915080821115610ebf57600080fd5b50610ecc8b828c01610e05565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f1957610f19610ee0565b60405290565b6040516060810167ffffffffffffffff81118282101715610f1957610f19610ee0565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f6b57610f6b610ee0565b604052919050565b60008060008385036080811215610f8957600080fd5b8435935060206040601f1983011215610fa157600080fd5b610fa9610ef6565b86820135815260408701358282015293506060860135915067ffffffffffffffff80831115610fd757600080fd5b9186019160608389031215610feb57600080fd5b610ff3610f1f565b83358281111561100257600080fd5b8401601f81018a1361101357600080fd5b80358381111561102557611025610ee0565b8060051b9350611036858501610f42565b818152938201850193858101908c86111561105057600080fd5b928601925b8584101561106e57833582529286019290860190611055565b80855250505050828401358382015260408401356040820152809450505050509250925092565b6000602082840312156110a757600080fd5b5035919050565b600080600080600080600060a0888a0312156110c957600080fd5b873596506020880135955060408801359450606088013567ffffffffffffffff808211156110f657600080fd5b6111028b838c01610db9565b909650945060808a013591508082111561111b57600080fd5b506111288a828b01610e05565b989b979a50959850939692959293505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156111645761116461113b565b500190565b80356001600160a01b038116811461118057600080fd5b919050565b6020808252818101839052600090604080840186845b878110156111cf576001600160a01b036111b483611169565b1683528185013585840152918301919083019060010161119b565b5090979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561120457600080fd5b6102eb82611169565b60006001820161121f5761121f61113b565b5060010190565b60008261124357634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156112625761126261113b565b500290565b6000828210156112795761127961113b565b500390565b60006020828403121561129057600080fd5b813560ff811681146102eb57600080fd5b6000815160005b818110156112c257602081850181015186830152016112a8565b818111156112d1576000828601525b509290920192915050565b6001600160f81b03198316815260006112f860018301846112a1565b949350505050565b60006102eb82846112a1565b60006020828403121561131e57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fdfea26469706673582212206b5e3778a6da95f3d627cf5858fcfafa79b96f5be45d6da09d72de8cc305265864736f6c634300080f0033", } // QuantumGravityBridgeABI is the input ABI used to generate the binding from. @@ -1156,25 +1156,25 @@ func (_QuantumGravityBridge *QuantumGravityBridgeTransactorSession) SubmitDataRo return _QuantumGravityBridge.Contract.SubmitDataRootTupleRoot(&_QuantumGravityBridge.TransactOpts, _newNonce, _validatorSetNonce, _dataRootTupleRoot, _currentValidatorSet, _sigs) } -// UpdateValidatorSet is a paid mutator transaction binding the contract method 0x4693c0df. +// UpdateValidatorSet is a paid mutator transaction binding the contract method 0x05d85c13. // -// Solidity: function updateValidatorSet(uint256 _newNonce, uint256 _newPowerThreshold, bytes32 _newValidatorSetHash, (address,uint256)[] _currentValidatorSet, (uint8,bytes32,bytes32)[] _sigs) returns() -func (_QuantumGravityBridge *QuantumGravityBridgeTransactor) UpdateValidatorSet(opts *bind.TransactOpts, _newNonce *big.Int, _newPowerThreshold *big.Int, _newValidatorSetHash [32]byte, _currentValidatorSet []Validator, _sigs []Signature) (*types.Transaction, error) { - return _QuantumGravityBridge.contract.Transact(opts, "updateValidatorSet", _newNonce, _newPowerThreshold, _newValidatorSetHash, _currentValidatorSet, _sigs) +// Solidity: function updateValidatorSet(uint256 _newNonce, uint256 _oldNonce, uint256 _newPowerThreshold, bytes32 _newValidatorSetHash, (address,uint256)[] _currentValidatorSet, (uint8,bytes32,bytes32)[] _sigs) returns() +func (_QuantumGravityBridge *QuantumGravityBridgeTransactor) UpdateValidatorSet(opts *bind.TransactOpts, _newNonce *big.Int, _oldNonce *big.Int, _newPowerThreshold *big.Int, _newValidatorSetHash [32]byte, _currentValidatorSet []Validator, _sigs []Signature) (*types.Transaction, error) { + return _QuantumGravityBridge.contract.Transact(opts, "updateValidatorSet", _newNonce, _oldNonce, _newPowerThreshold, _newValidatorSetHash, _currentValidatorSet, _sigs) } -// UpdateValidatorSet is a paid mutator transaction binding the contract method 0x4693c0df. +// UpdateValidatorSet is a paid mutator transaction binding the contract method 0x05d85c13. // -// Solidity: function updateValidatorSet(uint256 _newNonce, uint256 _newPowerThreshold, bytes32 _newValidatorSetHash, (address,uint256)[] _currentValidatorSet, (uint8,bytes32,bytes32)[] _sigs) returns() -func (_QuantumGravityBridge *QuantumGravityBridgeSession) UpdateValidatorSet(_newNonce *big.Int, _newPowerThreshold *big.Int, _newValidatorSetHash [32]byte, _currentValidatorSet []Validator, _sigs []Signature) (*types.Transaction, error) { - return _QuantumGravityBridge.Contract.UpdateValidatorSet(&_QuantumGravityBridge.TransactOpts, _newNonce, _newPowerThreshold, _newValidatorSetHash, _currentValidatorSet, _sigs) +// Solidity: function updateValidatorSet(uint256 _newNonce, uint256 _oldNonce, uint256 _newPowerThreshold, bytes32 _newValidatorSetHash, (address,uint256)[] _currentValidatorSet, (uint8,bytes32,bytes32)[] _sigs) returns() +func (_QuantumGravityBridge *QuantumGravityBridgeSession) UpdateValidatorSet(_newNonce *big.Int, _oldNonce *big.Int, _newPowerThreshold *big.Int, _newValidatorSetHash [32]byte, _currentValidatorSet []Validator, _sigs []Signature) (*types.Transaction, error) { + return _QuantumGravityBridge.Contract.UpdateValidatorSet(&_QuantumGravityBridge.TransactOpts, _newNonce, _oldNonce, _newPowerThreshold, _newValidatorSetHash, _currentValidatorSet, _sigs) } -// UpdateValidatorSet is a paid mutator transaction binding the contract method 0x4693c0df. +// UpdateValidatorSet is a paid mutator transaction binding the contract method 0x05d85c13. // -// Solidity: function updateValidatorSet(uint256 _newNonce, uint256 _newPowerThreshold, bytes32 _newValidatorSetHash, (address,uint256)[] _currentValidatorSet, (uint8,bytes32,bytes32)[] _sigs) returns() -func (_QuantumGravityBridge *QuantumGravityBridgeTransactorSession) UpdateValidatorSet(_newNonce *big.Int, _newPowerThreshold *big.Int, _newValidatorSetHash [32]byte, _currentValidatorSet []Validator, _sigs []Signature) (*types.Transaction, error) { - return _QuantumGravityBridge.Contract.UpdateValidatorSet(&_QuantumGravityBridge.TransactOpts, _newNonce, _newPowerThreshold, _newValidatorSetHash, _currentValidatorSet, _sigs) +// Solidity: function updateValidatorSet(uint256 _newNonce, uint256 _oldNonce, uint256 _newPowerThreshold, bytes32 _newValidatorSetHash, (address,uint256)[] _currentValidatorSet, (uint8,bytes32,bytes32)[] _sigs) returns() +func (_QuantumGravityBridge *QuantumGravityBridgeTransactorSession) UpdateValidatorSet(_newNonce *big.Int, _oldNonce *big.Int, _newPowerThreshold *big.Int, _newValidatorSetHash [32]byte, _currentValidatorSet []Validator, _sigs []Signature) (*types.Transaction, error) { + return _QuantumGravityBridge.Contract.UpdateValidatorSet(&_QuantumGravityBridge.TransactOpts, _newNonce, _oldNonce, _newPowerThreshold, _newValidatorSetHash, _currentValidatorSet, _sigs) } // QuantumGravityBridgeDataRootTupleRootEventIterator is returned from FilterDataRootTupleRootEvent and is used to iterate over the raw logs and unpacked data for DataRootTupleRootEvent events raised by the QuantumGravityBridge contract.