From 68a50d2dfc9ce911397e4981033c959b26c01a3e Mon Sep 17 00:00:00 2001 From: Gjermund Garaba Date: Tue, 10 Dec 2024 19:24:33 +0000 Subject: [PATCH] move rust fixtures into a single file per test --- .../e2esuite/light_clients.go | 21 +- e2e/interchaintestv8/go.mod | 6 +- e2e/interchaintestv8/go.sum | 4 +- e2e/interchaintestv8/ibc_eureka_test.go | 10 +- e2e/interchaintestv8/testvalues/values.go | 2 +- e2e/interchaintestv8/types/rust_fixtures.go | 79 ++- .../ethereum-light-client/src/membership.rs | 9 +- .../src/test/commitment_proof_fixture.rs | 17 - .../src/test/fixture_types.rs | 39 ++ .../ethereum-light-client/src/test/mod.rs | 2 +- .../src/types/sync_committee.rs | 17 +- packages/ethereum-light-client/src/verify.rs | 25 +- packages/ethereum-test-utils/src/fixtures.rs | 23 + ...eCosmosCoinsToEthereumAndBack_Groth16.json | 612 ++++++++++++++++++ ...ndBack_Groth16_1_initial_client_state.json | 31 - ...ack_Groth16_2_initial_consensus_state.json | 8 - ...reumAndBack_Groth16_3_update_header_0.json | 176 ----- ...eumAndBack_Groth16_4_commitment_proof.json | 54 -- ...reumAndBack_Groth16_5_update_header_0.json | 176 ----- ...eumAndBack_Groth16_6_commitment_proof.json | 54 -- programs/cw-ics08-wasm-eth/src/contract.rs | 60 +- programs/cw-ics08-wasm-eth/src/lib.rs | 5 +- .../src/test/fixture_types.rs | 38 ++ programs/cw-ics08-wasm-eth/src/test/mod.rs | 1 + 24 files changed, 852 insertions(+), 617 deletions(-) delete mode 100644 packages/ethereum-light-client/src/test/commitment_proof_fixture.rs create mode 100644 packages/ethereum-light-client/src/test/fixture_types.rs create mode 100644 packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16.json delete mode 100644 packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_1_initial_client_state.json delete mode 100644 packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_2_initial_consensus_state.json delete mode 100644 packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_3_update_header_0.json delete mode 100644 packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_4_commitment_proof.json delete mode 100644 packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_5_update_header_0.json delete mode 100644 packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_6_commitment_proof.json create mode 100644 programs/cw-ics08-wasm-eth/src/test/fixture_types.rs create mode 100644 programs/cw-ics08-wasm-eth/src/test/mod.rs diff --git a/e2e/interchaintestv8/e2esuite/light_clients.go b/e2e/interchaintestv8/e2esuite/light_clients.go index 6e0ffbcd..92208a68 100644 --- a/e2e/interchaintestv8/e2esuite/light_clients.go +++ b/e2e/interchaintestv8/e2esuite/light_clients.go @@ -180,10 +180,11 @@ func (s *TestSuite) UpdateEthClient(ctx context.Context, ibcContractAddress stri headers = []ethereumligthclient.Header{} } - wasmClientState, _ := s.GetUnionClientState(ctx, simd, s.EthereumLightClientID) + wasmClientState, unionClientState := s.GetUnionClientState(ctx, simd, s.EthereumLightClientID) _, unionConsensusState = s.GetUnionConsensusState(ctx, simd, s.EthereumLightClientID, wasmClientState.LatestHeight) - for i, header := range headers { + var updatedHeaders []ethereumligthclient.Header + for _, header := range headers { logHeader("Updating eth light client", header) headerBz := simd.Config().EncodingConfig.Codec.MustMarshal(&header) wasmHeader := ibcwasmtypes.ClientMessage{ @@ -202,8 +203,7 @@ func (s *TestSuite) UpdateEthClient(ctx context.Context, ibcContractAddress stri s.LastEtheruemLightClientUpdate = header.ConsensusUpdate.AttestedHeader.Beacon.Slot fmt.Println("Updated eth light client to block number", s.LastEtheruemLightClientUpdate) - err = rustFixtureGenerator.GenerateRustFixture(fmt.Sprintf("update_header_%d", i), header) - s.Require().NoError(err) + updatedHeaders = append(updatedHeaders, header) time.Sleep(10 * time.Second) @@ -212,6 +212,11 @@ func (s *TestSuite) UpdateEthClient(ctx context.Context, ibcContractAddress stri break } } + rustFixtureGenerator.AddFixtureStep("updated_light_client", types.UpdateClientFixture{ + ClientState: unionClientState, + ConsensusState: unionConsensusState, + Updates: updatedHeaders, + }) s.Require().Greater(s.LastEtheruemLightClientUpdate, uint64(minimumUpdateTo)) } @@ -317,10 +322,10 @@ func (s *TestSuite) createUnionLightClient(ctx context.Context, simdRelayerUser s.Require().NoError(err) s.Require().Equal("08-wasm-0", s.EthereumLightClientID) - err = rustFixtureGenerator.GenerateRustFixture("initial_client_state", ethClientState) - s.Require().NoError(err) - err = rustFixtureGenerator.GenerateRustFixture("initial_consensus_state", ethConsensusState) - s.Require().NoError(err) + rustFixtureGenerator.AddFixtureStep("initial_state", types.InitialStateFixture{ + ClientState: ethClientState, + ConsensusState: ethConsensusState, + }) } func (s *TestSuite) createDummyLightClient(ctx context.Context, simdRelayerUser ibc.Wallet) { diff --git a/e2e/interchaintestv8/go.mod b/e2e/interchaintestv8/go.mod index bc4f5097..8f65cbf5 100644 --- a/e2e/interchaintestv8/go.mod +++ b/e2e/interchaintestv8/go.mod @@ -6,6 +6,7 @@ toolchain go1.23.2 require ( cosmossdk.io/api v0.7.6 + cosmossdk.io/collections v0.4.0 cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 cosmossdk.io/x/tx v0.13.5 @@ -19,7 +20,7 @@ require ( github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0 github.com/docker/docker v24.0.9+incompatible github.com/ethereum/go-ethereum v1.14.12 - github.com/kurtosis-tech/kurtosis/api/golang v1.4.1 + github.com/kurtosis-tech/kurtosis/api/golang v1.4.2 github.com/rs/zerolog v1.33.0 github.com/strangelove-ventures/interchaintest/v8 v8.3.0 github.com/stretchr/testify v1.10.0 @@ -35,7 +36,6 @@ require ( cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.9 // indirect cloud.google.com/go/storage v1.41.0 // indirect - cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/core v0.11.1 // indirect cosmossdk.io/depinject v1.0.0 // indirect cosmossdk.io/log v1.4.1 // indirect @@ -307,8 +307,8 @@ require ( replace github.com/cosmos/solidity-ibc-eureka/abigen => ../../abigen replace ( - github.com/cosmos/ibc-go/v9 => github.com/cosmos/ibc-go/v9 v9.0.0-20241123151201-3d84b47307b9 github.com/cosmos/ibc-go/modules/light-clients/08-wasm => github.com/cosmos/ibc-go/modules/light-clients/08-wasm v0.0.0-20241123151201-3d84b47307b9 + github.com/cosmos/ibc-go/v9 => github.com/cosmos/ibc-go/v9 v9.0.0-20241123151201-3d84b47307b9 ) replace ( diff --git a/e2e/interchaintestv8/go.sum b/e2e/interchaintestv8/go.sum index d80df083..e0fcdd6c 100644 --- a/e2e/interchaintestv8/go.sum +++ b/e2e/interchaintestv8/go.sum @@ -855,8 +855,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230818182330-1a86869414d2 h1:izciXrFyFR+ihJ7nLTOkoIX5GzBPIp8gVKlw94gIc98= github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230818182330-1a86869414d2/go.mod h1:bWSMQK3WHVTGHX9CjxPAb/LtzcmfOxID2wdzakSWQxo= -github.com/kurtosis-tech/kurtosis/api/golang v1.4.1 h1:V/T5k7t1iKgFof1cGhyLh396YKdTehUqO97AsTPDy+k= -github.com/kurtosis-tech/kurtosis/api/golang v1.4.1/go.mod h1:9T22P7Vv3j5g6sbm78DxHQ4s9C4Cj3s9JjFQ7DFyYpM= +github.com/kurtosis-tech/kurtosis/api/golang v1.4.2 h1:x9jpXBGuLTWuILVUZWZtgDYY9amhyhzRVHxDFlYEJB4= +github.com/kurtosis-tech/kurtosis/api/golang v1.4.2/go.mod h1:9T22P7Vv3j5g6sbm78DxHQ4s9C4Cj3s9JjFQ7DFyYpM= github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0-20230818184218-f4e3e773463b h1:hMoIM99QKcYQqsnK4AF7Lovi9ZD9ac6lZLZ5D/jx2x8= github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0-20230818184218-f4e3e773463b/go.mod h1:4pFdrRwDz5R+Fov2ZuTaPhAVgjA2jhGh1Izf832sX7A= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230803130419-099ee7a4e3dc h1:7IlEpSehmWcNXOFpNP24Cu5HQI3af7GCBQw//m+LnvQ= diff --git a/e2e/interchaintestv8/ibc_eureka_test.go b/e2e/interchaintestv8/ibc_eureka_test.go index 4483b4d4..cca1898a 100644 --- a/e2e/interchaintestv8/ibc_eureka_test.go +++ b/e2e/interchaintestv8/ibc_eureka_test.go @@ -88,6 +88,7 @@ func (s *IbcEurekaTestSuite) SetupSuite(ctx context.Context, proofType operator. eth, simd := s.ChainA, s.ChainB var prover string + shouldGenerateRustFixtures := false s.Require().True(s.Run("Set up environment", func() { err := os.Chdir("../..") s.Require().NoError(err) @@ -121,10 +122,12 @@ func (s *IbcEurekaTestSuite) SetupSuite(ctx context.Context, proofType operator. s.generateSolidityFixtures = true } - shouldGenerateRustFixtures := os.Getenv(testvalues.EnvKeyGenerateRustFixtures) == testvalues.EnvValueGenerateFixtures_True - s.rustFixtureGenerator = types.NewRustFixtureGenerator(s.GetTopLevelTestName(), shouldGenerateRustFixtures) + shouldGenerateRustFixtures = os.Getenv(testvalues.EnvKeyGenerateRustFixtures) == testvalues.EnvValueGenerateFixtures_True })) + // Needs to be added here so the cleanup is called after the test suite is done + s.rustFixtureGenerator = types.NewRustFixtureGenerator(&s.Suite, shouldGenerateRustFixtures) + s.Require().True(s.Run("Deploy ethereum contracts", func() { args := append([]string{ "--trust-level", testvalues.DefaultTrustLevel.String(), @@ -1214,7 +1217,7 @@ func (s *IbcEurekaTestSuite) getCommitmentProof(ctx context.Context, path []byte RevisionHeight: s.LastEtheruemLightClientUpdate, }) - err = s.rustFixtureGenerator.GenerateRustFixture("commitment_proof", &types.CommitmentProofFixture{ + s.rustFixtureGenerator.AddFixtureStep("commitment_proof", &types.CommitmentProofFixture{ Path: path, StorageProof: storageProof, ProofHeight: clienttypes.Height{ @@ -1224,7 +1227,6 @@ func (s *IbcEurekaTestSuite) getCommitmentProof(ctx context.Context, path []byte ClientState: unionClientState, ConsensusState: unionConsensusState, }) - s.Require().NoError(err) } return simd.Config().EncodingConfig.Codec.MustMarshal(&storageProof) diff --git a/e2e/interchaintestv8/testvalues/values.go b/e2e/interchaintestv8/testvalues/values.go index 99dc452d..3bcdb81d 100644 --- a/e2e/interchaintestv8/testvalues/values.go +++ b/e2e/interchaintestv8/testvalues/values.go @@ -62,7 +62,7 @@ const ( // SP1ICS07FixturesDir is the directory where the SP1ICS07 fixtures are stored. SP1ICS07FixturesDir = "test/sp1-ics07/fixtures" // RustFixturesDir is the directory where the Rust fixtures are stored. - RustFixturesDir = "packages/ethereum-test-utils/src/test/fixtures" + RustFixturesDir = "packages/ethereum-test-utils/src/fixtures" // RelayerConfigFilePath is the path to generate the relayer config file. RelayerConfigFilePath = "programs/relayer/config.json" // E2EDeployScriptPath is the path to the E2E deploy script. diff --git a/e2e/interchaintestv8/types/rust_fixtures.go b/e2e/interchaintestv8/types/rust_fixtures.go index 20f21e1e..45e0d0b9 100644 --- a/e2e/interchaintestv8/types/rust_fixtures.go +++ b/e2e/interchaintestv8/types/rust_fixtures.go @@ -4,6 +4,9 @@ import ( "encoding/json" "fmt" "os" + "strings" + + "github.com/stretchr/testify/suite" clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" @@ -11,6 +14,11 @@ import ( ethereumlightclient "github.com/srdtrk/solidity-ibc-eureka/e2e/v8/types/ethereumlightclient" ) +type InitialStateFixture struct { + ClientState ethereumlightclient.ClientState `json:"client_state"` + ConsensusState ethereumlightclient.ConsensusState `json:"consensus_state"` +} + type CommitmentProofFixture struct { Path []byte `json:"path"` StorageProof ethereumlightclient.StorageProof `json:"storage_proof"` @@ -19,43 +27,84 @@ type CommitmentProofFixture struct { ConsensusState ethereumlightclient.ConsensusState `json:"consensus_state"` } +type UpdateClientFixture struct { + ClientState ethereumlightclient.ClientState `json:"client_state"` + ConsensusState ethereumlightclient.ConsensusState `json:"consensus_state"` + Updates []ethereumlightclient.Header `json:"updates"` +} + +type Step struct { + Name string `json:"name"` + Data interface{} `json:"data"` +} + +type RustFixture struct { + Steps []Step `json:"steps"` +} + type RustFixtureGenerator struct { shouldGenerateFixture bool - prefix string - // fixtureCount is used to create a clear order of fixtures - fixtureCount uint + fixture RustFixture } // NewRustFixtureGenerator creates a new RustFixtureGenerator // If shouldGenerateFixture is false, the generator will not generate any fixtures -func NewRustFixtureGenerator(prefix string, shouldGenerateFixture bool) *RustFixtureGenerator { - return &RustFixtureGenerator{ - prefix: prefix, +func NewRustFixtureGenerator(s *suite.Suite, shouldGenerateFixture bool) *RustFixtureGenerator { + rustFixtureGenerator := &RustFixtureGenerator{ shouldGenerateFixture: shouldGenerateFixture, } + + fixtureName := getTopLevelTestName(s) + + if shouldGenerateFixture { + s.T().Cleanup(func() { + s.T().Logf("Writing fixtures for %s", fixtureName) + if err := rustFixtureGenerator.writeFixtures(fixtureName); err != nil { + s.T().Logf("Error writing fixtures: %v", err) + } + }) + } + + return rustFixtureGenerator } // GenerateRustFixture generates a fixture by json marshalling jsonMarshalble and saves it to a file -func (g *RustFixtureGenerator) GenerateRustFixture(name string, jsonMarshalble interface{}) error { +func (g *RustFixtureGenerator) AddFixtureStep(stepName string, jsonMarshalble interface{}) { + if !g.shouldGenerateFixture { + return + } + + g.fixture.Steps = append(g.fixture.Steps, Step{ + Name: stepName, + Data: jsonMarshalble, + }) +} + +func (g *RustFixtureGenerator) ShouldGenerateFixture() bool { + return g.shouldGenerateFixture +} + +func (g *RustFixtureGenerator) writeFixtures(fixtureName string) error { if !g.shouldGenerateFixture { return nil } + filePath := fmt.Sprintf("%s/%s.json", testvalues.RustFixturesDir, fixtureName) - fixturesBz, err := json.MarshalIndent(jsonMarshalble, "", " ") + fixturesBz, err := json.MarshalIndent(g.fixture, "", " ") if err != nil { return err } - g.fixtureCount++ - - fixtureName := fmt.Sprintf("%s_%d_%s", g.prefix, g.fixtureCount, name) - filePath := fmt.Sprintf("%s/%s.json", testvalues.RustFixturesDir, fixtureName) - // nolint:gosec return os.WriteFile(filePath, fixturesBz, 0o644) } -func (g *RustFixtureGenerator) ShouldGenerateFixture() bool { - return g.shouldGenerateFixture +func getTopLevelTestName(s *suite.Suite) string { + parts := strings.Split(s.T().Name(), "/") + if len(parts) >= 2 { + return parts[1] + } + + return s.T().Name() } diff --git a/packages/ethereum-light-client/src/membership.rs b/packages/ethereum-light-client/src/membership.rs index e674142a..23a19ebd 100644 --- a/packages/ethereum-light-client/src/membership.rs +++ b/packages/ethereum-light-client/src/membership.rs @@ -86,7 +86,7 @@ mod test { use crate::{ client_state::ClientState, consensus_state::ConsensusState, - test::commitment_proof_fixture::CommitmentProofFixture, + test::fixture_types::CommitmentProof, types::{storage_proof::StorageProof, wrappers::WrappedBytes}, }; @@ -101,9 +101,10 @@ mod test { #[test] fn test_with_fixture() { - let commitment_proof_fixture: CommitmentProofFixture = fixtures::load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_4_commitment_proof", - ); + let fixture: fixtures::StepFixture = + fixtures::load("TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16"); + + let commitment_proof_fixture: CommitmentProof = fixture.get_data_at_step(2); let trusted_consensus_state = commitment_proof_fixture.consensus_state; let client_state = commitment_proof_fixture.client_state; diff --git a/packages/ethereum-light-client/src/test/commitment_proof_fixture.rs b/packages/ethereum-light-client/src/test/commitment_proof_fixture.rs deleted file mode 100644 index 529b51f4..000000000 --- a/packages/ethereum-light-client/src/test/commitment_proof_fixture.rs +++ /dev/null @@ -1,17 +0,0 @@ -use serde::{Deserialize, Serialize}; - -use crate::{ - client_state::ClientState, - consensus_state::ConsensusState, - types::{height::Height, storage_proof::StorageProof}, -}; - -#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] -pub struct CommitmentProofFixture { - #[serde(with = "ethereum_utils::base64")] - pub path: Vec, - pub storage_proof: StorageProof, - pub proof_height: Height, - pub client_state: ClientState, - pub consensus_state: ConsensusState, -} diff --git a/packages/ethereum-light-client/src/test/fixture_types.rs b/packages/ethereum-light-client/src/test/fixture_types.rs new file mode 100644 index 000000000..81a52bcc --- /dev/null +++ b/packages/ethereum-light-client/src/test/fixture_types.rs @@ -0,0 +1,39 @@ +use serde::{Deserialize, Serialize}; + +use crate::{ + client_state::ClientState, + consensus_state::ConsensusState, + types::{height::Height, light_client::Header, storage_proof::StorageProof}, +}; + +// TODO: Remove this file once these types are in a separate package #143 + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub enum DataType { + InitialState(Box), + CommitmentProof(Box), + UpdateClient(Box), +} + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct InitialState { + pub client_state: ClientState, + pub consensus_state: ConsensusState, +} + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct CommitmentProof { + #[serde(with = "ethereum_utils::base64")] + pub path: Vec, + pub storage_proof: StorageProof, + pub proof_height: Height, + pub client_state: ClientState, + pub consensus_state: ConsensusState, +} + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct UpdateClient { + pub client_state: ClientState, + pub consensus_state: ConsensusState, + pub updates: Vec
, +} diff --git a/packages/ethereum-light-client/src/test/mod.rs b/packages/ethereum-light-client/src/test/mod.rs index 0975f98f..11036963 100644 --- a/packages/ethereum-light-client/src/test/mod.rs +++ b/packages/ethereum-light-client/src/test/mod.rs @@ -1 +1 @@ -pub mod commitment_proof_fixture; +pub mod fixture_types; diff --git a/packages/ethereum-light-client/src/types/sync_committee.rs b/packages/ethereum-light-client/src/types/sync_committee.rs index 509b11e9..1d39d562 100644 --- a/packages/ethereum-light-client/src/types/sync_committee.rs +++ b/packages/ethereum-light-client/src/types/sync_committee.rs @@ -109,10 +109,8 @@ pub fn compute_sync_committee_period_at_slot( #[cfg(test)] mod test { - use crate::types::{ - light_client::Header, - sync_committee::{SyncAggregate, SyncCommittee}, - }; + use crate::test::fixture_types::UpdateClient; + use crate::types::sync_committee::{SyncAggregate, SyncCommittee}; use alloy_primitives::{hex::FromHex, B256}; use alloy_rpc_types_beacon::BlsSignature; @@ -171,10 +169,13 @@ mod test { assert!(sync_aggregate.validate_signature_supermajority()); // valid sync aggregate from fixtures with supermajority - let fixture: Header = fixtures::load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_3_update_header_0", - ); - let sync_aggregate = fixture.consensus_update.sync_aggregate; + let fixture: fixtures::StepFixture = + fixtures::load("TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16"); + let client_update: UpdateClient = fixture.get_data_at_step(1); + let sync_aggregate = client_update.updates[0] + .consensus_update + .sync_aggregate + .clone(); assert!(sync_aggregate.validate_signature_supermajority()); } } diff --git a/packages/ethereum-light-client/src/verify.rs b/packages/ethereum-light-client/src/verify.rs index 84d83853..127934bb 100644 --- a/packages/ethereum-light-client/src/verify.rs +++ b/packages/ethereum-light-client/src/verify.rs @@ -345,7 +345,10 @@ pub fn get_lc_execution_root( #[cfg(test)] mod test { - use crate::types::bls::{BlsPublicKey, BlsSignature}; + use crate::{ + test::fixture_types::{InitialState, UpdateClient}, + types::bls::{BlsPublicKey, BlsSignature}, + }; use super::*; @@ -373,21 +376,17 @@ mod test { fn test_verify_header() { let bls_verifier = TestBlsVerifier; - let client_state: ClientState = fixtures::load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_1_initial_client_state", - ); - assert_ne!(client_state, ClientState::default()); + let fixture: fixtures::StepFixture = + fixtures::load("TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16"); - let consensus_state: ConsensusState = fixtures::load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_2_initial_consensus_state", - ); - assert_ne!(consensus_state, ConsensusState::default()); + let initial_state: InitialState = fixture.get_data_at_step(0); - let header: Header = fixtures::load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_3_update_header_0", - ); - assert_ne!(header, Header::default()); + let client_state = initial_state.client_state; + let consensus_state = initial_state.consensus_state; + + let update_state: UpdateClient = fixture.get_data_at_step(1); + let header = update_state.updates[0].clone(); verify_header( &consensus_state, &client_state, diff --git a/packages/ethereum-test-utils/src/fixtures.rs b/packages/ethereum-test-utils/src/fixtures.rs index 44fa9b5f..77180e4a 100644 --- a/packages/ethereum-test-utils/src/fixtures.rs +++ b/packages/ethereum-test-utils/src/fixtures.rs @@ -1,5 +1,28 @@ use std::path::PathBuf; +use serde::{Deserialize, Serialize}; +use serde_json::Value; + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct StepFixture { + pub steps: Vec, +} + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct Step { + pub name: String, + pub data: Value, +} + +impl StepFixture { + pub fn get_data_at_step(&self, step: usize) -> T + where + T: serde::de::DeserializeOwned, + { + serde_json::from_value(self.steps[step].data.clone()).unwrap() + } +} + pub fn load(name: &str) -> T where T: serde::de::DeserializeOwned, diff --git a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16.json b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16.json new file mode 100644 index 000000000..63caddf9 --- /dev/null +++ b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16.json @@ -0,0 +1,612 @@ +{ + "steps": [ + { + "name": "intial_state", + "data": { + "client_state": { + "chain_id": "3151908", + "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", + "genesis_time": 1733855756, + "fork_parameters": { + "genesis_fork_version": "EAAAOA==", + "altair": { + "version": "IAAAOA==" + }, + "bellatrix": { + "version": "MAAAOA==" + }, + "capella": { + "version": "QAAAOA==" + }, + "deneb": { + "version": "UAAAOA==" + } + }, + "seconds_per_slot": 6, + "slots_per_epoch": 8, + "epochs_per_sync_committee_period": 8, + "latest_slot": 32, + "frozen_height": { + "revision_number": 0, + "revision_height": 0 + }, + "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "ibc_contract_address": "bw0opyzI85ngM8T7HEvuR7nsyaQ=", + "min_sync_committee_participants": 32 + + }, + "consensus_state": { + "slot": 32, + "state_root": "QLfsmERVtybnotdLY/E0RpipsKGzFghmdRhlkglq34Q=", + "storage_root": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "timestamp": 1733855948000000000, + "current_sync_committee": "gpEz/QdWaEoK7HttvrDVrsFuWqP7jHroafNH8NoS2NdwzHN+kHwqYxHUI0oEfN+v", + "next_sync_committee": "gpEz/QdWaEoK7HttvrDVrsFuWqP7jHroafNH8NoS2NdwzHN+kHwqYxHUI0oEfN+v" + } + } + }, + { + "name": "updated_light_client", + "data": { + "client_state": { + "chain_id": "3151908", + "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", + "genesis_time": 1733855756, + "fork_parameters": { + "genesis_fork_version": "EAAAOA==", + "altair": { + "version": "IAAAOA==" + }, + "bellatrix": { + "version": "MAAAOA==" + }, + "capella": { + "version": "QAAAOA==" + }, + "deneb": { + "version": "UAAAOA==" + } + }, + "seconds_per_slot": 6, + "slots_per_epoch": 8, + "epochs_per_sync_committee_period": 8, + "latest_slot": 32, + "frozen_height": { + "revision_number": 0, + "revision_height": 0 + }, + "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "ibc_contract_address": "bw0opyzI85ngM8T7HEvuR7nsyaQ=", + "min_sync_committee_participants": 32 + }, + "consensus_state": { + "slot": 32, + "state_root": "QLfsmERVtybnotdLY/E0RpipsKGzFghmdRhlkglq34Q=", + "storage_root": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "timestamp": 1733855948000000000, + "current_sync_committee": "gpEz/QdWaEoK7HttvrDVrsFuWqP7jHroafNH8NoS2NdwzHN+kHwqYxHUI0oEfN+v", + "next_sync_committee": "gpEz/QdWaEoK7HttvrDVrsFuWqP7jHroafNH8NoS2NdwzHN+kHwqYxHUI0oEfN+v" + }, + "updates": [ + { + "trusted_sync_committee": { + "trusted_height": { + "revision_number": 0, + "revision_height": 32 + }, + "next_sync_committee": { + "pubkeys": [ + "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" + ], + "aggregate_pubkey": "gpEz/QdWaEoK7HttvrDVrsFuWqP7jHroafNH8NoS2NdwzHN+kHwqYxHUI0oEfN+v" + } + }, + "consensus_update": { + "attested_header": { + "beacon": { + "slot": 80, + "proposer_index": 42, + "parent_root": "1O7lDzEE5PxbXw1fow084phX2E3ASFKvEg5mYae4s1U=", + "state_root": "2aQwWA5cAU2P6ZHla5SUGhiIJfV3tbtNF7nQjS+soNg=", + "body_root": "xqsG0dPX9F6EcxPCOH1fNCxSf++0jDF2E0q3Gyukh+A=" + }, + "execution": { + "parent_hash": "ru6Z9zOSaJ+wsLMggEkS8j0wQcXWhVUXIP8aj66l5vg=", + "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", + "state_root": "LAG0VZsJAMaMlNvMZwgtgdBXFwG1seMi1oQ2Az6C/cM=", + "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "prev_randao": "GIyUtj3YLIpxoI8O9/LoqXJVwX0Al6LVKzT2+ESmXbA=", + "block_number": 80, + "gas_limit": 30000000, + "timestamp": 1733856236, + "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", + "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ74=", + "block_hash": "wlDETVSwhPXLtJSgOuU+gGcwOtCh2wRwUJLsDGF3f0E=", + "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", + "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" + }, + "execution_branch": [ + "iHWRb/HnHxdZ5aPr2jTGL5RND6Nh3UAmNUqVHRF4eJw=", + "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", + "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", + "h1JnSIM8gJKzW/g8wB2fmTfN02XPyP0eb+qKjFQjZF8=" + ] + }, + "next_sync_committee": { + "pubkeys": [ + "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" + ], + "aggregate_pubkey": "piW74PYzIdk0DnJi+7tM60knsusPNbNaao5uh3gQRHEqnItRtIZWrwrUPD+fTggu" + }, + "next_sync_committee_branch": [ + "CwBU3peDu2QTGV9J3v71dAPfPjZHWNE0mz2A+zCjnZA=", + "lwZkHK6SUzdlSMoFdZE1Tkt2Do5CGUP7YqXfZeUqYsQ=", + "BV9rD4Us8DDhOy4RR0zIFmiWReVrqrSoUUwCKioFFcA=", + "P4XiedemFlpmMiGID7+2ceKCA9zRIk7xJ81cXNrSCtg=", + "iQpbs2186fOH6WMYYRF+NEWN/nZfcfCg7lEwnUx4kYY=" + ], + "finalized_header": { + "beacon": { + "slot": 64, + "proposer_index": 50, + "parent_root": "KiLRWMkzOpvoBBeSfdhhDEFNKg/H8gkVEgODLIF2mmk=", + "state_root": "p+SRTw53W6vOjDwYc9TzgF3k92ROJ5hcAKus4Zl5qrE=", + "body_root": "ZnPqkQmmW0tfCkZEpotUdZBk5k2PYw0jWJGsbfukx/k=" + }, + "execution": { + "parent_hash": "RIgrTRvdvgS1Xt4wteEutMowgLQkGm1draydEKrpNi8=", + "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", + "state_root": "4ONwA+OSvHfeAwEYD3lY1dbZ8rW0uGyaiFxbMCEIyP4=", + "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "prev_randao": "N4VrKZF3d8uOIDoIm/ZB6z3Lf6M1dqio0kTFazd4MPg=", + "block_number": 64, + "gas_limit": 30000000, + "timestamp": 1733856140, + "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", + "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYuU=", + "block_hash": "Os3NEkyiKm8149HAOSx2mqnzh1zOpZNMlcn85qwmeF4=", + "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", + "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" + }, + "execution_branch": [ + "Nwt0yDluQVKBlp6j99315FRZf4vQu8GEmvlfww5OhGM=", + "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", + "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", + "gMub4iCaz4g0suRKADDwA3zkZ39YCCth9c/VHVPtElA=" + ] + }, + "finality_branch": [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "X28CrykhgpLSGmm2SnlKfAhzs+D1RhGXKGNwboy983E=", + "7DwX1mZPgtSvOmOopjT4GmPGZus71j5IoOmsksT13Nc=", + "BV9rD4Us8DDhOy4RR0zIFmiWReVrqrSoUUwCKioFFcA=", + "P4XiedemFlpmMiGID7+2ceKCA9zRIk7xJ81cXNrSCtg=", + "iQpbs2186fOH6WMYYRF+NEWN/nZfcfCg7lEwnUx4kYY=" + ], + "sync_aggregate": { + "sync_committee_bits": "/////w==", + "sync_committee_signature": "toeilMFMq5SCh6IUiR4zCkdF6+QylRaOSXSDFPROp2N/VpN0KVpi7tR1mZviK2AMGQQZ6WTJBsm/W8dyEkobMmEl6r+6sgJt1RtG9R+xTZnp/AkDGPERxEjzhqGA11wR" + }, + "signature_slot": 81 + }, + "account_update": { + "account_proof": { + "storage_root": "FQyCzO+Kf1o+8uOU1/zh9I50iBGqiCG3tQxMoLZEE0E=", + "proof": [ + "+QIRoEqvnXgQSE6uML1+jas4PVF1tiIo22EFAKi/9NHndXGooAbUdhbfR5tGswLyqLftA8tTf2z3xVHBVCHGXbTgD6l/oLuHKSNDinwlyI+JmecT3RQCSrT57vDoTVHjUNnDx813oNi8oPl9vaMHj97bp7mRjBEbLF3LR35QM+JPyKJlJVrvoGkq5BIeaVESyepPbBR0D5TQeXhOmQ9B0YsXpxlmuhdFoO6mQ3QFKsRglXu8NKBxy4sl3N9E2WeFpVs0JCkUyD+foF1h7zrBxkEiigQalRUjHhVeP1E8WXQ42q5bWqZOuy5noGKSYZjiqQ7UeRdBYSZA+2XGPZ8ZDOZjyDX9mR1LdHVJoPnRr2R9fhhE6aKm3r7yCLaNREEdGZYSchixFYITIyXkoL6I5HJDJjgqi1biMo7u8K1R8Y1brg6EKWr+FMQCjEr5oA8y0WYWCPn0aXZh4EtQpjT+GU3aZpXUGDTyYdHqQ4DCoBeWYXQn5n7RDN+KcrAmiacAunHrkxhqGxIMmtCw5W6uoK0LuGtHGGwEIj6FqcM90ch91uXBf3U/T9ClZ3LYp4OZoFb+tXLIDCe36wVG4xP7Lp2Nv8bXo57vQKwx+UNVMd1UoJYvD3zLQ8eLoj+ZvmPX++/JrK+7O+hycOuNhQ5QkGz/oHgwS2TetxpcoSkco3l58MFOK7j4GhbaIQf7CREw8PeygA==", + "+QFRoD6TiwBD2rB8FpUnqq6OVXeMwdUN+zOByLq5YzOe8vh6gKC1zPy8Mgo5tAriiI73XuIFDClU/iUkiVrJjNQ10NUgGqDfWkJW/yX4deayShK82g9hCqUUs0cmbxEr2eZx3aWk+4CAoBg5Oha5L8XhP/JZovIotNuHSnwuLv3qmQ2yQzStrHZegKDzjJXLv3w4rfQGDl5MDol0PdW9yGP4iuh+EQ0RpVwsbKBl3iIXsq26GR0iZfo522mo2yhfEBuxKdaTM9WxhuAY5KCFrWasFfAWK346oyhshu96L08yD/W9DEUFK7X2UYxLBICg64B8mYyBIQllkJFDYEN+MFEUZh4CEbyzacUHt5mjEdegCAZwUy7i7pfJeAL2UPTFjLvTywKQ+x0xPGKqI2HirLmAoFi5pM785JAZiqlJ8+HEM+8x5Yr49QTGmR8VRhAlBAtHgA==", + "+HGAgICgWg82zhYEL4F3O3LZtw85nBcPD1+N+sHPhqaCO5rWf+6AoNv83llVsfz8cCghl+uNr0UluUBHabf45yAv5gVUtLZrgICAgICgYpsKqgTf1yVgMfDQyfWmYg5ZMa4nWI5is6fHD88LP2iAgICAgA==", + "+GifM1FcvC/LYwS9lHNetkjkXluqZ/eS8pyZh1A8MpYcc7hG+EQBgKAVDILM74p/Wj7y45TX/OH0jnSIEaqIIbe1DEygtkQTQaC1UBwqmIhZLr9DrTkL8TkHuD14NINNNaH/HPGnOXRcaQ==" + ] + } + } + } + ] + } + }, + { + "name": "commitment_proof", + "data": { + "path": "MDctdGVuZGVybWludC0wAwAAAAAAAAAB", + "storage_proof": { + "key": "z4MIXTcym36YbZwkQWDschTHgBp83kz7bYZ/zELHO3A=", + "value": "hGDiH3O1PXeeSzKRzTUzjpL66ZmHNfGgtxUMB0wHMaY=", + "proof": [ + "+HGAgKBn+HTtJcYaG/oWCy2naUfMpetX7uGWMwVxW59RjHDv+oCAgICAgICAgKDZ7DPZ9gv/axP5sWNsOgrHy/HIZt5y428gaQ/rczBJC6AqTaH7tpp+wcsZefHTE7thiOuIYkLUlzAwZezXeCxqcoCAgA==", + "+EOgOCBn1SkRXM4FoKixmPRs60ule4noP5PH5oOlpmmmXRahoIRg4h9ztT13nksykc01M46S+umZhzXxoLcVDAdMBzGm" + ] + }, + "proof_height": { + "revision_number": 0, + "revision_height": 80 + }, + "client_state": { + "chain_id": "3151908", + "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", + "genesis_time": 1733855756, + "fork_parameters": { + "genesis_fork_version": "EAAAOA==", + "altair": { + "version": "IAAAOA==" + }, + "bellatrix": { + "version": "MAAAOA==" + }, + "capella": { + "version": "QAAAOA==" + }, + "deneb": { + "version": "UAAAOA==" + } + }, + "seconds_per_slot": 6, + "slots_per_epoch": 8, + "epochs_per_sync_committee_period": 8, + "latest_slot": 80, + "frozen_height": { + "revision_number": 0, + "revision_height": 0 + }, + "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "ibc_contract_address": "bw0opyzI85ngM8T7HEvuR7nsyaQ=", + "min_sync_committee_participants": 32 + + }, + "consensus_state": { + "slot": 80, + "state_root": "LAG0VZsJAMaMlNvMZwgtgdBXFwG1seMi1oQ2Az6C/cM=", + "storage_root": "FQyCzO+Kf1o+8uOU1/zh9I50iBGqiCG3tQxMoLZEE0E=", + "timestamp": 1733856236000000000, + "current_sync_committee": "gpEz/QdWaEoK7HttvrDVrsFuWqP7jHroafNH8NoS2NdwzHN+kHwqYxHUI0oEfN+v", + "next_sync_committee": "piW74PYzIdk0DnJi+7tM60knsusPNbNaao5uh3gQRHEqnItRtIZWrwrUPD+fTggu" + } + } + }, + { + "name": "updated_light_client", + "data": { + "client_state": { + "chain_id": "3151908", + "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", + "genesis_time": 1733855756, + "fork_parameters": { + "genesis_fork_version": "EAAAOA==", + "altair": { + "version": "IAAAOA==" + }, + "bellatrix": { + "version": "MAAAOA==" + }, + "capella": { + "version": "QAAAOA==" + }, + "deneb": { + "version": "UAAAOA==" + } + }, + "seconds_per_slot": 6, + "slots_per_epoch": 8, + "epochs_per_sync_committee_period": 8, + "latest_slot": 80, + "frozen_height": { + "revision_number": 0, + "revision_height": 0 + }, + "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "ibc_contract_address": "bw0opyzI85ngM8T7HEvuR7nsyaQ=", + "min_sync_committee_participants": 32 + + }, + "consensus_state": { + "slot": 80, + "state_root": "LAG0VZsJAMaMlNvMZwgtgdBXFwG1seMi1oQ2Az6C/cM=", + "storage_root": "FQyCzO+Kf1o+8uOU1/zh9I50iBGqiCG3tQxMoLZEE0E=", + "timestamp": 1733856236000000000, + "current_sync_committee": "gpEz/QdWaEoK7HttvrDVrsFuWqP7jHroafNH8NoS2NdwzHN+kHwqYxHUI0oEfN+v", + "next_sync_committee": "piW74PYzIdk0DnJi+7tM60knsusPNbNaao5uh3gQRHEqnItRtIZWrwrUPD+fTggu" + }, + "updates": [ + { + "trusted_sync_committee": { + "trusted_height": { + "revision_number": 0, + "revision_height": 80 + }, + "next_sync_committee": { + "pubkeys": [ + "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" + ], + "aggregate_pubkey": "piW74PYzIdk0DnJi+7tM60knsusPNbNaao5uh3gQRHEqnItRtIZWrwrUPD+fTggu" + } + }, + "consensus_update": { + "attested_header": { + "beacon": { + "slot": 144, + "proposer_index": 58, + "parent_root": "mF2KL1zqv4gZ2N++yAloFZXcTbVr0i1ELFXLzxdk5ww=", + "state_root": "aUW8ax9pw1HINE+QO9/ByUH9Y3gmZRBfHtmlGranjmQ=", + "body_root": "fafDMFnlAGT7C/wASqo+hNL3FN1RiCERClXVbU/yFtg=" + }, + "execution": { + "parent_hash": "qFoCQLx7yYrcmX5a2usJYRo1ocXSnsrP3TF5gtASHLA=", + "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", + "state_root": "+s5Ah5zXVKIu+I4QQ4TPdcxgcRhuwKLf3igMostLKG8=", + "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "prev_randao": "1RbFW2Lq8FKb2ddLIgaGkWDXvUiu3qS3FiTVSmGtPQM=", + "block_number": 144, + "gas_limit": 30000000, + "timestamp": 1733856620, + "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", + "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk=", + "block_hash": "bOMaCWf9lobnDErYND5uyaOhi8dGNh5yFvE+fe9cviE=", + "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", + "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" + }, + "execution_branch": [ + "ggg/zbZvdsdS7WG7wAx+vpH+dcbRnK6ZrIE7t8+6dMo=", + "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", + "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", + "S8o2yFqYtFoPxGKkwb1jQmfBMLDG9TceN862Ba4DNXw=" + ] + }, + "next_sync_committee": { + "pubkeys": [ + "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" + ], + "aggregate_pubkey": "llDboaDTFWpT9oYHHw3JlS1FDDDxrU2RQQ5sVYT7qgvSFACKddjo5IXB5fUYrOBc" + }, + "next_sync_committee_branch": [ + "AGP1OJjuol6AlkzYVgpoVm1bsWReyqgg3NLKTOxctzY=", + "MgBhmm/UIND/X5sksVSDj8d0hr39DRF3Dc0R5++fia0=", + "wFZZieYdauxSNTVpVyEoIvuTfTEgu5teJovC8CX4E04=", + "rO+Pqm4gF/0zoIYv1Oj/6hC4Z0TY9F3rwAJM9hJk4y4=", + "UOXxLnocL0iqw4Ql1oJGpqppr9KLHwaTWPAqBUxR13M=" + ], + "finalized_header": { + "beacon": { + "slot": 128, + "proposer_index": 60, + "parent_root": "wosYEYU9l1ooOcUYG1eZFQFJvtPlruyVGOIpILTkm/U=", + "state_root": "Lq2yQ+CO065pLdqv6E2MBoG+UkGCKn+pvtEu6XiXjZA=", + "body_root": "b3OH6+XxIwlg7HjBTF7vgF34KXaik0JQ6T5xeGf3NNs=" + }, + "execution": { + "parent_hash": "L0j248QGmkMl+uv8mCIrroyqE4XI+CV4AMSyEOI1OC8=", + "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", + "state_root": "HLfYes1lNuLDHxw8ABcNUJaVMHezicmAr1BYeMt1EBI=", + "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "prev_randao": "4wxl64GBXfNYyGOXRbtcVGdQ3YvsXBoG3LSFlgfP78I=", + "block_number": 128, + "gas_limit": 30000000, + "timestamp": 1733856524, + "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", + "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA=", + "block_hash": "bamfdcRuhojTnkYzLo7HO2rlih9Nz3NDsMuj2BKu28g=", + "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", + "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" + }, + "execution_branch": [ + "VevPI+wqOmK1kSOuJWtdU3Drmevw9+R0LnTN5Ctkwys=", + "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", + "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", + "ljGYWEISnj6hg/eg5+QK/lfQ7Lcb1i5TDOw8QiBDhT0=" + ] + }, + "finality_branch": [ + "EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "X28CrykhgpLSGmm2SnlKfAhzs+D1RhGXKGNwboy983E=", + "NcLtbn1GXhlgXseD9Nblrp6v+1IYLaoTXPm7hs3LpJQ=", + "wFZZieYdauxSNTVpVyEoIvuTfTEgu5teJovC8CX4E04=", + "rO+Pqm4gF/0zoIYv1Oj/6hC4Z0TY9F3rwAJM9hJk4y4=", + "UOXxLnocL0iqw4Ql1oJGpqppr9KLHwaTWPAqBUxR13M=" + ], + "sync_aggregate": { + "sync_committee_bits": "/////w==", + "sync_committee_signature": "h2oyGhzIYwwYF/OiblaBLnkFqZncQFqZ5PUZX6yAGj6b/4weHLykYCJH4qOeQbQPF6uC8wXNc5h+7evtWdpdToIwP/NlEK9aQSkCVfgvrG+iOPG/ctjZqfNStjqf2amY" + }, + "signature_slot": 145 + }, + "account_update": { + "account_proof": { + "storage_root": "OSSDYp1SYQqEE62BFntoqQKVKGw3XHklNAg3RuwW3xE=", + "proof": [ + "+QIRoEqvnXgQSE6uML1+jas4PVF1tiIo22EFAKi/9NHndXGooAbUdhbfR5tGswLyqLftA8tTf2z3xVHBVCHGXbTgD6l/oLuHKSNDinwlyI+JmecT3RQCSrT57vDoTVHjUNnDx813oMeymH8lQgoK6PLOJGcRV73/G2KbuXGDU47XuTOdvPVroGkq5BIeaVESyepPbBR0D5TQeXhOmQ9B0YsXpxlmuhdFoO6mQ3QFKsRglXu8NKBxy4sl3N9E2WeFpVs0JCkUyD+foF1h7zrBxkEiigQalRUjHhVeP1E8WXQ42q5bWqZOuy5noJyNzdK8koRQrscuwTJHpsUKqZ7OBxduwGktNXlb2zNPoINUfExmxDP+E61Jq7AgBy7diT9AGcMZrPIEN3JTz4RaoL6I5HJDJjgqi1biMo7u8K1R8Y1brg6EKWr+FMQCjEr5oKJBg+4k4qx6ERsHe7Ns4Is8ZPBToCFAIG1ecwc+G+z9oBeWYXQn5n7RDN+KcrAmiacAunHrkxhqGxIMmtCw5W6uoK0LuGtHGGwEIj6FqcM90ch91uXBf3U/T9ClZ3LYp4OZoFb+tXLIDCe36wVG4xP7Lp2Nv8bXo57vQKwx+UNVMd1UoJYvD3zLQ8eLoj+ZvmPX++/JrK+7O+hycOuNhQ5QkGz/oHgwS2TetxpcoSkco3l58MFOK7j4GhbaIQf7CREw8PeygA==", + "+QFRoNSe0WFknOy5ppfsxg071vwNegMDDi9eSsDeQy4QXXEqgKC1zPy8Mgo5tAriiI73XuIFDClU/iUkiVrJjNQ10NUgGqDfWkJW/yX4deayShK82g9hCqUUs0cmbxEr2eZx3aWk+4CAoBg5Oha5L8XhP/JZovIotNuHSnwuLv3qmQ2yQzStrHZegKDzjJXLv3w4rfQGDl5MDol0PdW9yGP4iuh+EQ0RpVwsbKBl3iIXsq26GR0iZfo522mo2yhfEBuxKdaTM9WxhuAY5KCFrWasFfAWK346oyhshu96L08yD/W9DEUFK7X2UYxLBICg64B8mYyBIQllkJFDYEN+MFEUZh4CEbyzacUHt5mjEdegCAZwUy7i7pfJeAL2UPTFjLvTywKQ+x0xPGKqI2HirLmAoFi5pM785JAZiqlJ8+HEM+8x5Yr49QTGmR8VRhAlBAtHgA==", + "+HGAgICgWg82zhYEL4F3O3LZtw85nBcPD1+N+sHPhqaCO5rWf+6AoAbsEfbGy1GbewvrgWX5DFLBcgsUfs6Z5WrTgx9O3UYNgICAgICgYpsKqgTf1yVgMfDQyfWmYg5ZMa4nWI5is6fHD88LP2iAgICAgA==", + "+GifM1FcvC/LYwS9lHNetkjkXluqZ/eS8pyZh1A8MpYcc7hG+EQBgKA5JINinVJhCoQTrYEWe2ipApUobDdceSU0CDdG7BbfEaC1UBwqmIhZLr9DrTkL8TkHuD14NINNNaH/HPGnOXRcaQ==" + ] + } + } + } + ] + } + }, + { + "name": "commitment_proof", + "data": { + "path": "MDctdGVuZGVybWludC0wAQAAAAAAAAAB", + "storage_proof": { + "key": "dddBHLAdqtFncTtam3IZZw8OUAZTy7zUXP4b/gQiJFk=", + "value": "o6k/8ZjQOClNcSihI2CKlxE5D7j12ZPz6UAdtyMI97A=", + "proof": [ + "+LGAgKBn+HTtJcYaG/oWCy2naUfMpetX7uGWMwVxW59RjHDv+qA3G1OM0aXfARdggPsZmFNPtqjUk9m9025RegfZsaIN64CAoFexbZo7uy0Qa00bEtyjUE9hiZx8ZgsDaEhRFCbtNC3WgICAgICg2ewz2fYL/2sT+bFjbDoKx8vxyGbecuNvIGkP63MwSQugKk2h+7aafsHLGXnx0xO7YYjriGJC1JcwMGXs13gsanKAgIA=", + "+EOgPTw7zwMABq/qKmd6b/W/P38RHodGHIhIzwYqV1bRqIihoKOpP/GY0DgpTXEooSNgipcROQ+49dmT8+lAHbcjCPew" + ] + }, + "proof_height": { + "revision_number": 0, + "revision_height": 144 + }, + "client_state": { + "chain_id": "3151908", + "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", + "genesis_time": 1733855756, + "fork_parameters": { + "genesis_fork_version": "EAAAOA==", + "altair": { + "version": "IAAAOA==" + }, + "bellatrix": { + "version": "MAAAOA==" + }, + "capella": { + "version": "QAAAOA==" + }, + "deneb": { + "version": "UAAAOA==" + } + }, + "seconds_per_slot": 6, + "slots_per_epoch": 8, + "epochs_per_sync_committee_period": 8, + "latest_slot": 144, + "frozen_height": { + "revision_number": 0, + "revision_height": 0 + }, + "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "ibc_contract_address": "bw0opyzI85ngM8T7HEvuR7nsyaQ=", + "min_sync_committee_participants": 32 + + }, + "consensus_state": { + "slot": 144, + "state_root": "+s5Ah5zXVKIu+I4QQ4TPdcxgcRhuwKLf3igMostLKG8=", + "storage_root": "OSSDYp1SYQqEE62BFntoqQKVKGw3XHklNAg3RuwW3xE=", + "timestamp": 1733856620000000000, + "current_sync_committee": "piW74PYzIdk0DnJi+7tM60knsusPNbNaao5uh3gQRHEqnItRtIZWrwrUPD+fTggu", + "next_sync_committee": "llDboaDTFWpT9oYHHw3JlS1FDDDxrU2RQQ5sVYT7qgvSFACKddjo5IXB5fUYrOBc" + } + } + } + ] +} diff --git a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_1_initial_client_state.json b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_1_initial_client_state.json deleted file mode 100644 index bb215567..000000000 --- a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_1_initial_client_state.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "chain_id": "3151908", - "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", - "genesis_time": 1733407803, - "fork_parameters": { - "genesis_fork_version": "EAAAOA==", - "altair": { - "version": "IAAAOA==" - }, - "bellatrix": { - "version": "MAAAOA==" - }, - "capella": { - "version": "QAAAOA==" - }, - "deneb": { - "version": "UAAAOA==" - } - }, - "seconds_per_slot": 6, - "slots_per_epoch": 8, - "epochs_per_sync_committee_period": 8, - "latest_slot": 32, - "frozen_height": { - "revision_number": 0, - "revision_height": 0 - }, - "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "ibc_contract_address": "Pus1Pj9GbHF70jfiXjd1yeYfhpY=", - "min_sync_committee_participants": 32 -} diff --git a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_2_initial_consensus_state.json b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_2_initial_consensus_state.json deleted file mode 100644 index 1da1c746..000000000 --- a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_2_initial_consensus_state.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "slot": 32, - "state_root": "yIADlPrcUUOqTri8ZYeoYh9e0nQndM7TrJVp4gQPD0k=", - "storage_root": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "timestamp": 1733407995000000000, - "current_sync_committee": "p8wWXo3JZ8KBDBoaJFolrp7yjc3lWcpaeoOds4cUb4SD5NmwbJc8DuRWqAbyVYCD", - "next_sync_committee": "p8wWXo3JZ8KBDBoaJFolrp7yjc3lWcpaeoOds4cUb4SD5NmwbJc8DuRWqAbyVYCD" -} \ No newline at end of file diff --git a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_3_update_header_0.json b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_3_update_header_0.json deleted file mode 100644 index d8df8d8a..000000000 --- a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_3_update_header_0.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "trusted_sync_committee": { - "trusted_height": { - "revision_number": 0, - "revision_height": 32 - }, - "next_sync_committee": { - "pubkeys": [ - "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" - ], - "aggregate_pubkey": "p8wWXo3JZ8KBDBoaJFolrp7yjc3lWcpaeoOds4cUb4SD5NmwbJc8DuRWqAbyVYCD" - } - }, - "consensus_update": { - "attested_header": { - "beacon": { - "slot": 80, - "proposer_index": 25, - "parent_root": "NlekTueD21MkMXOIh+1MmF/J9CrkmZv66spYesCVsJQ=", - "state_root": "xuF1/mikzEFmF1Pc5yrD1n40GsbPGmp9M5/gqp/S0ho=", - "body_root": "7rtnE/VXD/CMMnt3ftCZBbqak9OS6Utmeeo2So+Q3gU=" - }, - "execution": { - "parent_hash": "wJC+gZETcSKHSj7Yu0reQWCcNkSvAInT4CiaZggu5lo=", - "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", - "state_root": "LiJXxsCQiY7Py+Moq31eYwxPNPhl9yJ0bGlmAzvtwHw=", - "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", - "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "prev_randao": "1jC5ZU0vKvjYcxEMFJDXIazRcwp/bgE6SJNHYo1JDd8=", - "block_number": 80, - "gas_limit": 30000000, - "timestamp": 1733408283, - "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", - "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ2c=", - "block_hash": "79sNb+MH27Eg+aJBAtgrZwtAsfGPnQQwoR+vD/UePmU=", - "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", - "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" - }, - "execution_branch": [ - "LmEeN0VFfprSbSzqEJ1d4jRMk4jiilxpyr6uRgUU+SU=", - "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", - "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", - "UgvNn2R4SQFIlQ1VBsGxb/ZHIU1AlpEUeOCR0iqYCJY=" - ] - }, - "next_sync_committee": { - "pubkeys": [ - "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" - ], - "aggregate_pubkey": "rKar8i9Bg0tfMHObnk6NGsab3Taf0NFQkQ+JVFVpQ48HibSDWcsqKmbOD+qQ5LMe" - }, - "next_sync_committee_branch": [ - "YTWQEU/vCtSt0LPg5NtUfs6Uwfz7fIqmBZNY4pyZuBM=", - "sN4B29I4KUX3o9pmjH4SIkQ14VKztRixQo73PrS4PZQ=", - "OsO00eQO+jeWCS0gfXgUdEJPI1+ZAIg1kfXAAUcPsDQ=", - "sCek+pC9ySDXdCjT1t8QySt68QWaXOD3iqm12W2Jlbc=", - "7cuAvzpPr9OW7N06mldF5gn16N/5cuD28t2YXLNPZnk=" - ], - "finalized_header": { - "beacon": { - "slot": 64, - "proposer_index": 39, - "parent_root": "i/FPE5oXcsSYF0xLZtWiPx7cnoBZo0Kc/HscjMVizO4=", - "state_root": "wobedKhB7hSl5kUeBzhI/KkTv7wynUESa/1KSyQNWtU=", - "body_root": "IoxUVJZ73fdRF9bhGvEcWjtkMafFPSFei5k68TX3VJo=" - }, - "execution": { - "parent_hash": "7W5Stq/gIqVRTjGxjXfczqEyS2U73FokKoA6Dh+NK7s=", - "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", - "state_root": "RIquC1ijfk4hNvprzGZ8gJC/+/A794md4WqkN5kHtQ4=", - "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", - "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "prev_randao": "mLIiuZeTtjH0ZCzXCrHYqerfIwnfjK+o2ZiUPTpdFkw=", - "block_number": 64, - "gas_limit": 30000000, - "timestamp": 1733408187, - "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", - "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX/4=", - "block_hash": "yqb7iCDzjqlbyiS/ccGag6WMEB/AT8YnCiPCKfwt9uw=", - "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", - "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" - }, - "execution_branch": [ - "xDEyxC+53LW9gybVGPp0Tfmjl62SjojALtkVQz9s9Is=", - "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", - "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", - "kCPZTUkwMbHNDxsNIgG4YFrEznahbokZe/vNmJAy3Bs=" - ] - }, - "finality_branch": [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "X28CrykhgpLSGmm2SnlKfAhzs+D1RhGXKGNwboy983E=", - "9GI7ErmLRdu448f3+EsD+dXYrkYuINl8F/ysuorSMm0=", - "OsO00eQO+jeWCS0gfXgUdEJPI1+ZAIg1kfXAAUcPsDQ=", - "sCek+pC9ySDXdCjT1t8QySt68QWaXOD3iqm12W2Jlbc=", - "7cuAvzpPr9OW7N06mldF5gn16N/5cuD28t2YXLNPZnk=" - ], - "sync_aggregate": { - "sync_committee_bits": "/////w==", - "sync_committee_signature": "hEM3Bv7mWv3oslH8317lojgRJuaZvtps80uylnLueVvlzP5of2sQnG9msQZcD3TYGfpxvX0hnAy9m/NrNd8fc4QXwnrkLgFAWqh+47Pn7EjbK9HqWVLnvB45KlwX79w0" - }, - "signature_slot": 81 - }, - "account_update": { - "account_proof": { - "storage_root": "UMSy+0fN7u9iWv60HXAmZ+xmF+Vr7Bhkrc5R/s5k43M=", - "proof": [ - "+QIRoEqvnXgQSE6uML1+jas4PVF1tiIo22EFAKi/9NHndXGooEPbBKBSO87PpVSt/n2mvRYGYQD53ttV/CIukxCPRFrToKsZigoIFy1+rpw72dqLstEaNIs0OHAvt/LB8bVw60dAoE2zRjhvz8XG+0ubo1Al5PWOVE3thPFgEUvRtFh1uxqMoN00IIObq67nYefqo4rV9Zaxqbhxbn6bkmGUmpZKWn1hoO6mQ3QFKsRglXu8NKBxy4sl3N9E2WeFpVs0JCkUyD+foLdsee8YaGUh9w2QReAmz+ikM3vwYV+0vwu4llu4xiFboIPGl55GPAKBj/6truuKvJ8vUedn+5FRp/yJmJ60C1esoMvNwdImpUDFDLHmFeevmfFx1DZbRXNJQOItR+xKojoUoJmNmYDMJMjLe1v5yT9zr59e+vNHDKFWpagulbksSpEPoPy/d7p1MmcO5NywlRj54vQBdBjeJHDNd/HzriIPCVjYoBeWYXQn5n7RDN+KcrAmiacAunHrkxhqGxIMmtCw5W6uoK0LuGtHGGwEIj6FqcM90ch91uXBf3U/T9ClZ3LYp4OZoGm3Si0sJG+LQGhv/VfDzx+p7jJASdBUX8seZ84WVsEGoHzaprc7+/5FwSGnCUk3uJukyupPXR7ue6s5TcnN9GlUoOGhHHPfIMepd0ImI5qOoTyl7v5SUngNaHzuWqQY/MT6gA==", - "+QGRoAW/OheSLPSH4l2/4k9e4Gqcu6AIFeeUxVgmfV348TJggKC1Dd8AKIzIwTNSUbBLymVjI1RWNN3SIw8XhNPyF2m7U6ChpXt8UzlXsptRWcjDUno50TVNuwuqpI+nBaNUdlL5pKCZjxpgZi8W4bfVYmdSvqX/emcnaVEpIdkA69F1jFBLJ6COn69uca0GKG4WS94nlNllxcmAAkzIo6i5lCYJr1Z+v6Cz7/jDJ2RT50/6Uz9iqlGmT/ptcN6EMvkYguUn6yvwRICgW4c0sG9Yfjxp/QRldX24lk/lnljNycWZQzRf6OGXyRagI249OXiMI7N+u6Uip6+fED8MfU/kLgn+WDJre6pyIrCgmeYaf7+xnVndxQtXJssAH72qha3wIK27GL+ui87ytt2AgKCiJCLqmRojruVuNbkH5tFGPMmaWMr+5hDuVtL2SUram6AqT1h3lSJKnVY1mgcfNXPZOAyq3Um8obY6G6fiDZ5mZKAYkkbHr4+u0sfT+H3ItaUdeH9vitZZrG+RcilLPf/tTIA=", - "+GmgIBIndIQYPU8oMKp/nGRX2TS5REap2KbZyPAYf55t07S4RvhEAYCgUMSy+0fN7u9iWv60HXAmZ+xmF+Vr7Bhkrc5R/s5k43Ogsq72HnOsOpO18+6lYsWneIteOOTR+++IIQbOr8OvLdc=" - ] - } - } -} \ No newline at end of file diff --git a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_4_commitment_proof.json b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_4_commitment_proof.json deleted file mode 100644 index 0fdff101..000000000 --- a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_4_commitment_proof.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "path": "MDctdGVuZGVybWludC0wAwAAAAAAAAAB", - "storage_proof": { - "key": "z4MIXTcym36YbZwkQWDschTHgBp83kz7bYZ/zELHO3A=", - "value": "hGDiH3O1PXeeSzKRzTUzjpL66ZmHNfGgtxUMB0wHMaY=", - "proof": [ - "+HGAgKA6BiC+LtHLi1QUcOvXp/4Ey0uNco6kzwhuY+dIrcntAICAgICAgICAgKDZ7DPZ9gv/axP5sWNsOgrHy/HIZt5y428gaQ/rczBJC6AqTaH7tpp+wcsZefHTE7thiOuIYkLUlzAwZezXeCxqcoCAgA==", - "+EOgOCBn1SkRXM4FoKixmPRs60ule4noP5PH5oOlpmmmXRahoIRg4h9ztT13nksykc01M46S+umZhzXxoLcVDAdMBzGm" - ] - }, - "proof_height": { - "revision_number": 0, - "revision_height": 80 - }, - "client_state": { - "chain_id": "3151908", - "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", - "genesis_time": 1733407803, - "fork_parameters": { - "genesis_fork_version": "EAAAOA==", - "altair": { - "version": "IAAAOA==" - }, - "bellatrix": { - "version": "MAAAOA==" - }, - "capella": { - "version": "QAAAOA==" - }, - "deneb": { - "version": "UAAAOA==" - } - }, - "seconds_per_slot": 6, - "slots_per_epoch": 8, - "epochs_per_sync_committee_period": 8, - "latest_slot": 80, - "frozen_height": { - "revision_number": 0, - "revision_height": 0 - }, - "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "ibc_contract_address": "Pus1Pj9GbHF70jfiXjd1yeYfhpY=", - "min_sync_committee_participants": 32 - }, - "consensus_state": { - "slot": 80, - "state_root": "LiJXxsCQiY7Py+Moq31eYwxPNPhl9yJ0bGlmAzvtwHw=", - "storage_root": "UMSy+0fN7u9iWv60HXAmZ+xmF+Vr7Bhkrc5R/s5k43M=", - "timestamp": 1733408283000000000, - "current_sync_committee": "p8wWXo3JZ8KBDBoaJFolrp7yjc3lWcpaeoOds4cUb4SD5NmwbJc8DuRWqAbyVYCD", - "next_sync_committee": "rKar8i9Bg0tfMHObnk6NGsab3Taf0NFQkQ+JVFVpQ48HibSDWcsqKmbOD+qQ5LMe" - } -} diff --git a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_5_update_header_0.json b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_5_update_header_0.json deleted file mode 100644 index b08efede..000000000 --- a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_5_update_header_0.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "trusted_sync_committee": { - "trusted_height": { - "revision_number": 0, - "revision_height": 80 - }, - "next_sync_committee": { - "pubkeys": [ - "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" - ], - "aggregate_pubkey": "rKar8i9Bg0tfMHObnk6NGsab3Taf0NFQkQ+JVFVpQ48HibSDWcsqKmbOD+qQ5LMe" - } - }, - "consensus_update": { - "attested_header": { - "beacon": { - "slot": 144, - "proposer_index": 19, - "parent_root": "noItn1+uyy+W/92z4oVJFK8ac/T80CZo/K5TktxISIk=", - "state_root": "GCjDO3cPt2zkO4y4Y2nxWL2FBaOyCKGlDCtix4hWckY=", - "body_root": "JwAXlihnGZ7+bNu0MN3YhFUnt+qXOuQVc0co9xVghLc=" - }, - "execution": { - "parent_hash": "pcqjSudk77UOc80zBjNwvLwTThxio3CbTpwhz0U/dio=", - "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", - "state_root": "JO+3htK/8MDf+cf6sh5XaZJML5L66wuPkQG39BRIT6w=", - "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", - "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "prev_randao": "D9NU6oRyAq5uSSJGYR90uSydzEa//IsgDviMj/LY1T4=", - "block_number": 144, - "gas_limit": 30000000, - "timestamp": 1733408667, - "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", - "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk=", - "block_hash": "2mKLFw/r+90+6w1Vfro7rM3l9W9KVpirwQKnBHEKJj0=", - "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", - "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" - }, - "execution_branch": [ - "RwWU2OtzImFiVHzy6rQYORkIUUYQxmZT99p5sHGdZ5s=", - "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", - "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", - "X7xxqqZgbddcXEN5PrWwYBu3NFge3O8gqUdEdOxVEJk=" - ] - }, - "next_sync_committee": { - "pubkeys": [ - "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" - ], - "aggregate_pubkey": "llqLwJDEnKUubFmaF2HQO7oeFKuIoYxG9bAdYQ6C8Akk9M0T8jci8TNk15UoEyIl" - }, - "next_sync_committee_branch": [ - "eB34gOFsk1/HX2I1CV9Ih3bIb269+feRs8mJ1K7AxhU=", - "o6OxugUBZG1wksq0DufSy+IR3kOcqgRpwq4nfVXjlok=", - "sNQYjZCbNKTXGSRAsighUnkD4O1GMfQHv71WepfOjnI=", - "9rDXZu1xo5PfVwNIwg/2nXHxWn61l9dIXHq6t8H2IZI=", - "qdXDOUrODU9WLHckIdaWx8tgc86RfKzD8YuBxRnpxCM=" - ], - "finalized_header": { - "beacon": { - "slot": 128, - "proposer_index": 61, - "parent_root": "ICVxBTiY1i6ytSfAkr8BZgsslIZEAfBCWhrhFhrKJZM=", - "state_root": "trqHeiATdBKzeFROSpnnW+Ggf+LaWus2qMG3Gjua/uU=", - "body_root": "qZRSMS6Ek7wo5ASFM+AM1kNIc3V7jNWS7WIZhViOTLA=" - }, - "execution": { - "parent_hash": "Z05CPblHpIQuL1NmX2MmoRv7IvTIQ+lIYxJ75L2fwVk=", - "fee_recipient": "iUNUUXeAbtF7nyPwoh7llI7Kp3Y=", - "state_root": "djI7S1KUcpaVjyTbeHvZzH1tSvM2Rv7Sma/pgkeh16A=", - "receipts_root": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", - "logs_bloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "prev_randao": "m9MEiShQfTIEaaj6bhbamf/cyQqTem2y1UhITTGCieY=", - "block_number": 128, - "gas_limit": 30000000, - "timestamp": 1733408571, - "extra_data": "2IMBDgaEZ2V0aIhnbzEuMjIuNIVsaW51eA==", - "base_fee_per_gas": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA=", - "block_hash": "PvaxoPdifciaZTdRx9dyRndGzZJypSlZOfSwHumolDg=", - "transactions_root": "f/4kHqYBh/2wGHv6It410fm+16sGHZQB/UfjSlT77eE=", - "withdrawals_root": "KLoYNKOntldGDOefo6HZCauIKP1VdlnU0FVKm9vA7DA=" - }, - "execution_branch": [ - "LQJDppP4UKvZ/LUNKw7vNci2hdPYN7za2MdgnvGh+ns=", - "bG3WNlZjnRU6LoapyrKR56JulXrWNf7IctKDbpI0DCM=", - "21YRTgD91MH4XIkr81rJqJKJquyx69CpbN5ganSLXXE=", - "9mIbi+txOKdH2pZbRQfJGheSuT93Lbl4leyLBBRtSek=" - ] - }, - "finality_branch": [ - "EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "X28CrykhgpLSGmm2SnlKfAhzs+D1RhGXKGNwboy983E=", - "lEBRQFpyoqod+eoAePD3fIIy3eZ0DVv3dIFrnLwnCWw=", - "sNQYjZCbNKTXGSRAsighUnkD4O1GMfQHv71WepfOjnI=", - "9rDXZu1xo5PfVwNIwg/2nXHxWn61l9dIXHq6t8H2IZI=", - "qdXDOUrODU9WLHckIdaWx8tgc86RfKzD8YuBxRnpxCM=" - ], - "sync_aggregate": { - "sync_committee_bits": "/////w==", - "sync_committee_signature": "jcaUvHR7oJhe+pjOWNZ1B2ZYQNgzjf+By+FZl+RuEB+D6G8Fw7r10+K/DobC/OTKDmZp8qnJlwR65cnN2qZqh0iQWgMMuXWxqq9q18Jt/NgWh9B2slJbD0+mUORFv7vY" - }, - "signature_slot": 145 - }, - "account_update": { - "account_proof": { - "storage_root": "LNIdwMCrMXD0A6mAkgxkZ5kST7VB89Te2PorkMrErVg=", - "proof": [ - "+QIRoEqvnXgQSE6uML1+jas4PVF1tiIo22EFAKi/9NHndXGooOVBk+ODbAmW/oiCKL8aKzwF+qyHbl2o5Qb/ozbCM6ojoKsZigoIFy1+rpw72dqLstEaNIs0OHAvt/LB8bVw60dAoDvNV7PEQbn+RElhWDWK0yBVFWSUAPie+UUbicsNLvdHoN00IIObq67nYefqo4rV9Zaxqbhxbn6bkmGUmpZKWn1hoO6mQ3QFKsRglXu8NKBxy4sl3N9E2WeFpVs0JCkUyD+foLzvA+KpdGPjRsdJlB8ejvxTiOShmR0HnpitUrrUAhK5oIPGl55GPAKBj/6truuKvJ8vUedn+5FRp/yJmJ60C1esoMvNwdImpUDFDLHmFeevmfFx1DZbRXNJQOItR+xKojoUoJmNmYDMJMjLe1v5yT9zr59e+vNHDKFWpagulbksSpEPoPy/d7p1MmcO5NywlRj54vQBdBjeJHDNd/HzriIPCVjYoBeWYXQn5n7RDN+KcrAmiacAunHrkxhqGxIMmtCw5W6uoK0LuGtHGGwEIj6FqcM90ch91uXBf3U/T9ClZ3LYp4OZoGm3Si0sJG+LQGhv/VfDzx+p7jJASdBUX8seZ84WVsEGoHzaprc7+/5FwSGnCUk3uJukyupPXR7ue6s5TcnN9GlUoOHGC5EFoWlZIcDp/qj04TjxsiFJhAF6o7uBH1Ul9ge/gA==", - "+QGRoAW/OheSLPSH4l2/4k9e4Gqcu6AIFeeUxVgmfV348TJggKC1Dd8AKIzIwTNSUbBLymVjI1RWNN3SIw8XhNPyF2m7U6ChpXt8UzlXsptRWcjDUno50TVNuwuqpI+nBaNUdlL5pKCZjxpgZi8W4bfVYmdSvqX/emcnaVEpIdkA69F1jFBLJ6COn69uca0GKG4WS94nlNllxcmAAkzIo6i5lCYJr1Z+v6Cz7/jDJ2RT50/6Uz9iqlGmT/ptcN6EMvkYguUn6yvwRICgW4c0sG9Yfjxp/QRldX24lk/lnljNycWZQzRf6OGXyRagDWgrEDC2jbKjJ5P2IvLvPfFKiv+ZUvlBO9vNnN1bLHmgmeYaf7+xnVndxQtXJssAH72qha3wIK27GL+ui87ytt2AgKCiJCLqmRojruVuNbkH5tFGPMmaWMr+5hDuVtL2SUram6AqT1h3lSJKnVY1mgcfNXPZOAyq3Um8obY6G6fiDZ5mZKAYkkbHr4+u0sfT+H3ItaUdeH9vitZZrG+RcilLPf/tTIA=", - "+GmgIBIndIQYPU8oMKp/nGRX2TS5REap2KbZyPAYf55t07S4RvhEAYCgLNIdwMCrMXD0A6mAkgxkZ5kST7VB89Te2PorkMrErVigsq72HnOsOpO18+6lYsWneIteOOTR+++IIQbOr8OvLdc=" - ] - } - } -} \ No newline at end of file diff --git a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_6_commitment_proof.json b/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_6_commitment_proof.json deleted file mode 100644 index 612e6944..000000000 --- a/packages/ethereum-test-utils/src/fixtures/TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_6_commitment_proof.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "path": "MDctdGVuZGVybWludC0wAQAAAAAAAAAB", - "storage_proof": { - "key": "dddBHLAdqtFncTtam3IZZw8OUAZTy7zUXP4b/gQiJFk=", - "value": "gGNSwJ98jIunXa1eK/lC2dnaArcna4V5tYLEW99U3aY=", - "proof": [ - "+LGAgKA6BiC+LtHLi1QUcOvXp/4Ey0uNco6kzwhuY+dIrcntAKAfa/LQO28G+qbqc0zEwwvN1KA/O6AU1SfXJG3qwHyYZICAoFexbZo7uy0Qa00bEtyjUE9hiZx8ZgsDaEhRFCbtNC3WgICAgICg2ewz2fYL/2sT+bFjbDoKx8vxyGbecuNvIGkP63MwSQugKk2h+7aafsHLGXnx0xO7YYjriGJC1JcwMGXs13gsanKAgIA=", - "+EOgPTw7zwMABq/qKmd6b/W/P38RHodGHIhIzwYqV1bRqIihoIBjUsCffIyLp12tXiv5QtnZ2gK3J2uFebWCxFvfVN2m" - ] - }, - "proof_height": { - "revision_number": 0, - "revision_height": 144 - }, - "client_state": { - "chain_id": "3151908", - "genesis_validators_root": "1h6khP66z65SmNUqK1gfPjBaUfMRKpJBuWjczwGfexE=", - "genesis_time": 1733407803, - "fork_parameters": { - "genesis_fork_version": "EAAAOA==", - "altair": { - "version": "IAAAOA==" - }, - "bellatrix": { - "version": "MAAAOA==" - }, - "capella": { - "version": "QAAAOA==" - }, - "deneb": { - "version": "UAAAOA==" - } - }, - "seconds_per_slot": 6, - "slots_per_epoch": 8, - "epochs_per_sync_committee_period": 8, - "latest_slot": 144, - "frozen_height": { - "revision_number": 0, - "revision_height": 0 - }, - "ibc_commitment_slot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "ibc_contract_address": "Pus1Pj9GbHF70jfiXjd1yeYfhpY=", - "min_sync_committee_participants": 32 - }, - "consensus_state": { - "slot": 144, - "state_root": "JO+3htK/8MDf+cf6sh5XaZJML5L66wuPkQG39BRIT6w=", - "storage_root": "LNIdwMCrMXD0A6mAkgxkZ5kST7VB89Te2PorkMrErVg=", - "timestamp": 1733408667000000000, - "current_sync_committee": "rKar8i9Bg0tfMHObnk6NGsab3Taf0NFQkQ+JVFVpQ48HibSDWcsqKmbOD+qQ5LMe", - "next_sync_committee": "llqLwJDEnKUubFmaF2HQO7oeFKuIoYxG9bAdYQ6C8Akk9M0T8jci8TNk15UoEyIl" - } -} diff --git a/programs/cw-ics08-wasm-eth/src/contract.rs b/programs/cw-ics08-wasm-eth/src/contract.rs index 2152735c..34d47310 100644 --- a/programs/cw-ics08-wasm-eth/src/contract.rs +++ b/programs/cw-ics08-wasm-eth/src/contract.rs @@ -229,16 +229,8 @@ mod tests { }, Binary, OwnedDeps, SystemResult, }; - use ethereum_light_client::{ - client_state::ClientState as EthClientState, - consensus_state::ConsensusState as EthConsensusState, - types::{ - bls::{BlsPublicKey, BlsSignature}, - storage_proof::StorageProof, - }, - }; + use ethereum_light_client::types::bls::{BlsPublicKey, BlsSignature}; use ethereum_test_utils::bls_verifier::{aggreagate, fast_aggregate_verify}; - use serde::{Deserialize, Serialize}; use crate::custom_query::EthereumCustomQuery; @@ -378,14 +370,12 @@ mod tests { testing::{message_info, mock_env}, Binary, }; - use ethereum_test_utils::fixtures; + use ethereum_test_utils::fixtures::{self, StepFixture}; use crate::{ - contract::{ - instantiate, sudo, - tests::{mk_deps, CommitmentProofFixture}, - }, + contract::{instantiate, sudo, tests::mk_deps}, msg::{Height, MerklePath, SudoMsg, UpdateStateMsg, VerifyMembershipMsg}, + test::fixture_types::CommitmentProof, }; #[test] @@ -394,9 +384,10 @@ mod tests { let creator = deps.api.addr_make("creator"); let info = message_info(&creator, &coins(1, "uatom")); - let commitment_proof_fixture: CommitmentProofFixture = fixtures::load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_4_commitment_proof", - ); + let fixture: StepFixture = + fixtures::load("TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16"); + + let commitment_proof_fixture: CommitmentProof = fixture.get_data_at_step(2); let client_state = commitment_proof_fixture.client_state; let client_state_bz: Vec = serde_json::to_vec(&client_state).unwrap(); @@ -450,11 +441,7 @@ mod tests { testing::{message_info, mock_env}, Binary, Timestamp, }; - use ethereum_light_client::{ - client_state::ClientState as EthClientState, - consensus_state::ConsensusState as EthConsensusState, types::light_client::Header, - }; - use ethereum_test_utils::fixtures::load; + use ethereum_test_utils::fixtures::{self, StepFixture}; use crate::{ contract::{instantiate, query, tests::mk_deps}, @@ -463,6 +450,7 @@ mod tests { StatusResult, TimestampAtHeightMsg, TimestampAtHeightResult, VerifyClientMessageMsg, }, + test::fixture_types::{InitialState, UpdateClient}, }; #[test] @@ -471,13 +459,14 @@ mod tests { let creator = deps.api.addr_make("creator"); let info = message_info(&creator, &coins(1, "uatom")); - let client_state: EthClientState = load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_1_initial_client_state", - ); + let fixture: StepFixture = + fixtures::load("TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16"); - let consensus_state: EthConsensusState = load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_2_initial_consensus_state", - ); + let initial_state: InitialState = fixture.get_data_at_step(0); + + let client_state = initial_state.client_state; + + let consensus_state = initial_state.consensus_state; let client_state_bz: Vec = serde_json::to_vec(&client_state).unwrap(); let consensus_state_bz: Vec = serde_json::to_vec(&consensus_state).unwrap(); @@ -490,9 +479,8 @@ mod tests { instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); - let header: Header = load( - "TestICS20TransferNativeCosmosCoinsToEthereumAndBack_Groth16_3_update_header_0", - ); + let update_client: UpdateClient = fixture.get_data_at_step(1); + let header = update_client.updates[0].clone(); let header_bz: Vec = serde_json::to_vec(&header).unwrap(); let mut env = mock_env(); @@ -555,16 +543,6 @@ mod tests { } } - #[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] - pub struct CommitmentProofFixture { - #[serde(with = "ethereum_utils::base64")] - pub path: Vec, - pub storage_proof: StorageProof, - pub proof_height: ethereum_light_client::types::height::Height, - pub client_state: EthClientState, - pub consensus_state: EthConsensusState, - } - // TODO: Find a way to reuse the test handling code that already exists in the // ethereum-light-client package pub fn custom_query_handler(query: &EthereumCustomQuery) -> MockQuerierCustomHandlerResult { diff --git a/programs/cw-ics08-wasm-eth/src/lib.rs b/programs/cw-ics08-wasm-eth/src/lib.rs index 025f28ab..b6004c71 100644 --- a/programs/cw-ics08-wasm-eth/src/lib.rs +++ b/programs/cw-ics08-wasm-eth/src/lib.rs @@ -1,5 +1,8 @@ pub mod contract; pub mod custom_query; -mod error; +pub mod error; pub mod msg; pub mod state; + +#[cfg(test)] +mod test; diff --git a/programs/cw-ics08-wasm-eth/src/test/fixture_types.rs b/programs/cw-ics08-wasm-eth/src/test/fixture_types.rs new file mode 100644 index 000000000..fddee001 --- /dev/null +++ b/programs/cw-ics08-wasm-eth/src/test/fixture_types.rs @@ -0,0 +1,38 @@ +use ethereum_light_client::{ + client_state::ClientState, + consensus_state::ConsensusState, + types::{height::Height, light_client::Header, storage_proof::StorageProof}, +}; +use serde::{Deserialize, Serialize}; + +// TODO: Remove this file once these types are in a separate package #143 + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub enum DataType { + InitialState(Box), + CommitmentProof(Box), + UpdateClient(Box), +} + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct InitialState { + pub client_state: ClientState, + pub consensus_state: ConsensusState, +} + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct CommitmentProof { + #[serde(with = "ethereum_utils::base64")] + pub path: Vec, + pub storage_proof: StorageProof, + pub proof_height: Height, + pub client_state: ClientState, + pub consensus_state: ConsensusState, +} + +#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] +pub struct UpdateClient { + pub client_state: ClientState, + pub consensus_state: ConsensusState, + pub updates: Vec
, +} diff --git a/programs/cw-ics08-wasm-eth/src/test/mod.rs b/programs/cw-ics08-wasm-eth/src/test/mod.rs new file mode 100644 index 000000000..11036963 --- /dev/null +++ b/programs/cw-ics08-wasm-eth/src/test/mod.rs @@ -0,0 +1 @@ +pub mod fixture_types;