From 0e086f5e825bb5f4eb1a1c5a71736a48807166ef Mon Sep 17 00:00:00 2001 From: srdtrk <59252793+srdtrk@users.noreply.github.com> Date: Wed, 13 Nov 2024 17:32:49 +0800 Subject: [PATCH] chore: remove union membership proofs (#132) * imp: removed union contracts and code * deps: removed union from e2es * imp: ran abi-gen * imp: back to stable rust and removed unneeded fixtures and ci * ci: simplified sp1 toolchain installation * imp: remove broken linter --- .github/workflows/e2e.yml | 12 +- Cargo.lock | 1123 ++--------------- Cargo.toml | 4 - README.md | 1 - bun.lockb | Bin 80259 -> 79844 bytes contracts/abi/SP1ICS07Tendermint.json | 80 -- .../fixtures/union_membership_fixture.json | 10 - .../fixtures/union_nonmembership_fixture.json | 10 - contracts/src/SP1ICS07Tendermint.sol | 38 +- contracts/src/msgs/IMembershipMsgs.sol | 11 +- contracts/src/utils/UnionMembership.sol | 52 - contracts/test/UnionMembership.t.sol | 54 - e2e/interchaintestv8/operator/proofs.go | 15 +- e2e/interchaintestv8/sp1_ics07_test.go | 7 +- .../types/sp1ics07tendermint/contract.go | 63 +- justfile | 6 +- operator/Cargo.toml | 3 - operator/src/cli/command.rs | 28 +- operator/src/runners/fixtures/membership.rs | 100 +- package.json | 3 +- packages/solidity/src/lib.rs | 9 - packages/utils/Cargo.toml | 3 - packages/utils/src/lib.rs | 1 - packages/utils/src/union.rs | 32 - remappings.txt | 1 - rust-toolchain.toml | 3 - 26 files changed, 139 insertions(+), 1530 deletions(-) delete mode 100644 contracts/fixtures/union_membership_fixture.json delete mode 100644 contracts/fixtures/union_nonmembership_fixture.json delete mode 100644 contracts/src/utils/UnionMembership.sol delete mode 100644 contracts/test/UnionMembership.t.sol delete mode 100644 packages/utils/src/union.rs delete mode 100644 rust-toolchain.toml diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a909e08..f9e1bd6 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -24,12 +24,12 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: "1.22" + go-version: "1.23" - uses: actions/checkout@v4 - name: golangci-lint uses: golangci/golangci-lint-action@v6.1.0 with: - version: v1.60 + version: v1.61 args: --timeout 5m working-directory: e2e/interchaintestv8 e2e: @@ -42,7 +42,6 @@ jobs: - TestWithSP1ICS07TendermintTestSuite/TestDeploy_Plonk - TestWithSP1ICS07TendermintTestSuite/TestUpdateClient_Groth16 - TestWithSP1ICS07TendermintTestSuite/TestUpdateClient_Plonk - - TestWithSP1ICS07TendermintTestSuite/TestMembership_Union - TestWithSP1ICS07TendermintTestSuite/TestMembership_Groth16 - TestWithSP1ICS07TendermintTestSuite/TestMembership_Plonk - TestWithSP1ICS07TendermintTestSuite/TestUpdateClientAndMembership_Groth16 @@ -71,14 +70,9 @@ jobs: profile: minimal toolchain: stable - - name: Get SP1 version - id: sp1-version - run: | - sp1_version=$(cargo metadata --format-version 1 | jq -r '.packages[] | select(.name == "sp1-sdk") | .version') - echo "sp1_version=v$sp1_version" >> $GITHUB_OUTPUT - name: Install SP1 toolchain run: | - curl -L https://raw.githubusercontent.com/succinctlabs/sp1/${{ steps.sp1-version.outputs.sp1_version }}/sp1up/install | bash + curl -L https://sp1.succinct.xyz | bash ~/.sp1/bin/sp1up --token ${{ secrets.GITHUB_TOKEN }} ~/.sp1/bin/cargo-prove prove --version - name: Install just diff --git a/Cargo.lock b/Cargo.lock index 21119e2..efe1ae1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,17 +49,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.11" @@ -122,7 +111,7 @@ checksum = "836cf02383d9ebb35502d379bcd1ae803155094077eaab9c29131d888cd5fa3e" dependencies = [ "alloy-primitives 0.8.10", "num_enum 0.7.3", - "strum 0.26.3", + "strum", ] [[package]] @@ -520,7 +509,7 @@ dependencies = [ "alloy-serde", "derive_more 1.0.0", "serde", - "strum 0.26.3", + "strum", ] [[package]] @@ -619,7 +608,7 @@ checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" dependencies = [ "alloy-sol-macro-input 0.7.7", "const-hex", - "heck 0.5.0", + "heck", "indexmap 2.6.0", "proc-macro-error", "proc-macro2", @@ -638,7 +627,7 @@ dependencies = [ "alloy-json-abi", "alloy-sol-macro-input 0.8.10", "const-hex", - "heck 0.5.0", + "heck", "indexmap 2.6.0", "proc-macro-error2", "proc-macro2", @@ -656,7 +645,7 @@ checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" dependencies = [ "const-hex", "dunce", - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.87", @@ -672,7 +661,7 @@ dependencies = [ "alloy-json-abi", "const-hex", "dunce", - "heck 0.5.0", + "heck", "proc-macro2", "quote", "serde_json", @@ -787,11 +776,6 @@ dependencies = [ "ws_stream_wasm", ] -[[package]] -name = "amcl" -version = "0.3.0" -source = "git+https://github.com/Snowfork/milagro_bls?rev=bc2b5b5e8d48b7e2e1bfaa56dc2d93e13cb32095#bc2b5b5e8d48b7e2e1bfaa56dc2d93e13cb32095" - [[package]] name = "android-tzdata" version = "0.1.1" @@ -1175,16 +1159,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "bcs" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b6598a2f5d564fb7855dc6b06fd1c38cff5a72bd8b863a4d021938497b440a" -dependencies = [ - "serde", - "thiserror", -] - [[package]] name = "bech32" version = "0.9.1" @@ -1226,22 +1200,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "bip32" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa13fae8b6255872fd86f7faf4b41168661d7d78609f7bfe6771b85c6739a15b" -dependencies = [ - "bs58 0.5.1", - "hmac", - "k256", - "rand_core 0.6.4", - "ripemd", - "sha2 0.10.8", - "subtle", - "zeroize", -] - [[package]] name = "bit-set" version = "0.5.3" @@ -1341,7 +1299,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pairing", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -1357,18 +1315,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "bnum" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" - -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - [[package]] name = "bs58" version = "0.5.1" @@ -1479,15 +1425,6 @@ dependencies = [ "nom", ] -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -1553,7 +1490,7 @@ dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", + "strsim", ] [[package]] @@ -1562,7 +1499,7 @@ version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.87", @@ -1580,7 +1517,7 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" dependencies = [ - "bs58 0.5.1", + "bs58", "coins-core", "digest 0.10.7", "hmac", @@ -1614,7 +1551,7 @@ checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" dependencies = [ "base64 0.21.7", "bech32", - "bs58 0.5.1", + "bs58", "digest 0.10.7", "generic-array 0.14.7", "hex", @@ -1664,41 +1601,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "const-random" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" -dependencies = [ - "const-random-macro", -] - -[[package]] -name = "const-random-macro" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" -dependencies = [ - "getrandom", - "once_cell", - "tiny-keccak", -] - [[package]] name = "constant_time_eq" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" -[[package]] -name = "contracts" -version = "0.0.0" -source = "git+https://github.com/unionlabs/union?rev=18c86b4ff81408d31bec998f5d23bc1b03c9fda3#18c86b4ff81408d31bec998f5d23bc1b03c9fda3" -dependencies = [ - "ethers 2.0.10", - "serde", -] - [[package]] name = "convert_case" version = "0.4.0" @@ -1727,54 +1635,10 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c1a5856db92cd90dddc955bce308703d3519fb33ae3d0b8f3658e9cfd05c3f" dependencies = [ - "prost 0.13.3", + "prost", "tendermint-proto 0.40.0", ] -[[package]] -name = "cosmwasm-crypto" -version = "1.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58535cbcd599b3c193e3967c8292fe1dbbb5de7c2a2d87380661091dd4744044" -dependencies = [ - "digest 0.10.7", - "ed25519-zebra", - "k256", - "rand_core 0.6.4", - "thiserror", -] - -[[package]] -name = "cosmwasm-derive" -version = "1.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e07de16c800ac82fd188d055ecdb923ead0cf33960d3350089260bb982c09f" -dependencies = [ - "syn 1.0.109", -] - -[[package]] -name = "cosmwasm-std" -version = "1.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c21fde95ccd20044a23c0ac6fd8c941f3e8c158169dc94b5aa6491a2d9551a8d" -dependencies = [ - "base64 0.21.7", - "bech32", - "bnum", - "cosmwasm-crypto", - "cosmwasm-derive", - "derivative", - "forward_ref", - "hex", - "schemars", - "serde", - "serde-json-wasm", - "sha2 0.10.8", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", -] - [[package]] name = "cpufeatures" version = "0.2.14" @@ -1822,7 +1686,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", - "rand_core 0.6.4", + "rand_core", "subtle", "zeroize", ] @@ -1846,19 +1710,6 @@ dependencies = [ "cipher", ] -[[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -1894,44 +1745,20 @@ dependencies = [ "byteorder", "cfg-if", "digest 0.9.0", - "rand_core 0.6.4", + "rand_core", "sp1-lib", "subtle-ng", "zeroize", ] -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core 0.13.4", - "darling_macro 0.13.4", -] - [[package]] name = "darling" version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.10.0", - "syn 1.0.109", + "darling_core", + "darling_macro", ] [[package]] @@ -1944,28 +1771,17 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim 0.11.1", + "strsim", "syn 2.0.87", ] -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core 0.13.4", - "quote", - "syn 1.0.109", -] - [[package]] name = "darling_macro" version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.10", + "darling_core", "quote", "syn 2.0.87", ] @@ -2015,7 +1831,7 @@ dependencies = [ "num-modular", "num-order", "rustversion", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", ] [[package]] @@ -2029,7 +1845,7 @@ dependencies = [ "num-modular", "num-order", "rustversion", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", ] [[package]] @@ -2099,17 +1915,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive-syn-parse" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "derive_more" version = "0.99.18" @@ -2221,12 +2026,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" -[[package]] -name = "dyn-clone" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" - [[package]] name = "ecdsa" version = "0.16.9" @@ -2261,22 +2060,7 @@ source = "git+https://github.com/sp1-patches/ed25519-consensus?branch=patch-v2.1 dependencies = [ "curve25519-dalek-ng", "hex", - "rand_core 0.6.4", - "sha2 0.9.8", - "zeroize", -] - -[[package]] -name = "ed25519-zebra" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" -dependencies = [ - "curve25519-dalek 3.2.0", - "hashbrown 0.12.3", - "hex", - "rand_core 0.6.4", - "serde", + "rand_core", "sha2 0.9.8", "zeroize", ] @@ -2306,7 +2090,7 @@ dependencies = [ "generic-array 0.14.7", "group 0.13.0", "pkcs8", - "rand_core 0.6.4", + "rand_core", "sec1", "subtle", "zeroize", @@ -2339,7 +2123,7 @@ dependencies = [ "k256", "log", "rand", - "rlp 0.5.2", + "rlp", "serde", "sha3", "zeroize", @@ -2366,17 +2150,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "enumorph" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3e2610493c0a1fc3bf33fb420650c6ebf7990c55e3d5e71a57bee374486824" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "equivalent" version = "1.0.1" @@ -2421,7 +2194,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" dependencies = [ - "ethereum-types 0.14.1", + "ethereum-types", "hex", "once_cell", "regex", @@ -2429,7 +2202,7 @@ dependencies = [ "serde_json", "sha3", "thiserror", - "uint 0.9.5", + "uint", ] [[package]] @@ -2441,62 +2214,26 @@ dependencies = [ "crunchy", "fixed-hash", "impl-codec", - "impl-rlp 0.3.0", - "impl-serde 0.4.0", + "impl-rlp", + "impl-serde", "scale-info", "tiny-keccak", ] -[[package]] -name = "ethbloom" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-rlp 0.4.0", - "impl-serde 0.5.0", - "tiny-keccak", -] - [[package]] name = "ethereum-types" version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ - "ethbloom 0.13.0", + "ethbloom", "fixed-hash", "impl-codec", - "impl-rlp 0.3.0", - "impl-serde 0.4.0", - "primitive-types 0.12.2", + "impl-rlp", + "impl-serde", + "primitive-types", "scale-info", - "uint 0.9.5", -] - -[[package]] -name = "ethereum-types" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" -dependencies = [ - "ethbloom 0.14.1", - "fixed-hash", - "impl-rlp 0.4.0", - "impl-serde 0.5.0", - "primitive-types 0.13.1", - "uint 0.10.0", -] - -[[package]] -name = "ethers" -version = "2.0.10" -source = "git+https://github.com/unionlabs/ethers-rs?branch=ethers-core-wasm#fd10abba9a9d5347b71bd4cde6418a6f6f2f1279" -dependencies = [ - "ethers-contract 2.0.10", - "ethers-core 2.0.10", + "uint", ] [[package]] @@ -2506,8 +2243,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" dependencies = [ "ethers-addressbook", - "ethers-contract 2.0.14", - "ethers-core 2.0.14", + "ethers-contract", + "ethers-core", "ethers-middleware", "ethers-providers", "ethers-signers", @@ -2519,29 +2256,12 @@ version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" dependencies = [ - "ethers-core 2.0.14", + "ethers-core", "once_cell", "serde", "serde_json", ] -[[package]] -name = "ethers-contract" -version = "2.0.10" -source = "git+https://github.com/unionlabs/ethers-rs?branch=ethers-core-wasm#fd10abba9a9d5347b71bd4cde6418a6f6f2f1279" -dependencies = [ - "const-hex", - "ethers-contract-abigen 2.0.10", - "ethers-contract-derive 2.0.10", - "ethers-core 2.0.10", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "ethers-contract" version = "2.0.14" @@ -2549,9 +2269,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" dependencies = [ "const-hex", - "ethers-contract-abigen 2.0.14", - "ethers-contract-derive 2.0.14", - "ethers-core 2.0.14", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", "ethers-providers", "futures-util", "once_cell", @@ -2561,27 +2281,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "ethers-contract-abigen" -version = "2.0.10" -source = "git+https://github.com/unionlabs/ethers-rs?branch=ethers-core-wasm#fd10abba9a9d5347b71bd4cde6418a6f6f2f1279" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core 2.0.10", - "eyre", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "serde", - "serde_json", - "syn 2.0.87", - "toml", - "walkdir", -] - [[package]] name = "ethers-contract-abigen" version = "2.0.14" @@ -2591,7 +2290,7 @@ dependencies = [ "Inflector", "const-hex", "dunce", - "ethers-core 2.0.14", + "ethers-core", "eyre", "prettyplease", "proc-macro2", @@ -2604,21 +2303,6 @@ dependencies = [ "walkdir", ] -[[package]] -name = "ethers-contract-derive" -version = "2.0.10" -source = "git+https://github.com/unionlabs/ethers-rs?branch=ethers-core-wasm#fd10abba9a9d5347b71bd4cde6418a6f6f2f1279" -dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen 2.0.10", - "ethers-core 2.0.10", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.87", -] - [[package]] name = "ethers-contract-derive" version = "2.0.14" @@ -2627,44 +2311,14 @@ checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" dependencies = [ "Inflector", "const-hex", - "ethers-contract-abigen 2.0.14", - "ethers-core 2.0.14", + "ethers-contract-abigen", + "ethers-core", "proc-macro2", "quote", "serde_json", "syn 2.0.87", ] -[[package]] -name = "ethers-core" -version = "2.0.10" -source = "git+https://github.com/unionlabs/ethers-rs?branch=ethers-core-wasm#fd10abba9a9d5347b71bd4cde6418a6f6f2f1279" -dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "ethereum-types 0.15.1", - "generic-array 0.14.7", - "k256", - "num_enum 0.7.3", - "once_cell", - "open-fastrlp", - "rand", - "rlp 0.5.2", - "serde", - "serde_json", - "strum 0.25.0", - "syn 2.0.87", - "tempfile", - "thiserror", - "tiny-keccak", - "unicode-xid", -] - [[package]] name = "ethers-core" version = "2.0.14" @@ -2684,10 +2338,10 @@ dependencies = [ "once_cell", "open-fastrlp", "rand", - "rlp 0.5.2", + "rlp", "serde", "serde_json", - "strum 0.26.3", + "strum", "syn 2.0.87", "tempfile", "thiserror", @@ -2703,8 +2357,8 @@ checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" dependencies = [ "async-trait", "auto_impl", - "ethers-contract 2.0.14", - "ethers-core 2.0.14", + "ethers-contract", + "ethers-core", "ethers-providers", "ethers-signers", "futures-channel", @@ -2733,7 +2387,7 @@ dependencies = [ "bytes", "const-hex", "enr", - "ethers-core 2.0.14", + "ethers-core", "futures-core", "futures-timer", "futures-util", @@ -2769,28 +2423,13 @@ dependencies = [ "const-hex", "elliptic-curve", "eth-keystore", - "ethers-core 2.0.14", + "ethers-core", "rand", "sha2 0.10.8", "thiserror", "tracing", ] -[[package]] -name = "expander" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2c470c71d91ecbd179935b24170459e926382eaaa86b590b78814e180d8a8e2" -dependencies = [ - "blake2", - "file-guard", - "fs-err", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "eyre" version = "0.6.12" @@ -2825,7 +2464,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ "bitvec", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -2838,7 +2477,7 @@ dependencies = [ "bitvec", "byteorder", "ff_derive", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -2864,16 +2503,6 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" -[[package]] -name = "file-guard" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ef72acf95ec3d7dbf61275be556299490a245f017cf084bd23b4f68cf9407c" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -2883,15 +2512,9 @@ dependencies = [ "byteorder", "rand", "rustc-hex", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flex-error" version = "0.4.4" @@ -2938,65 +2561,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - -[[package]] -name = "frame-support-procedural" -version = "30.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e8f9b6bc1517a6fcbf0b2377e5c8c6d39f5bb7862b191a59a9992081d63972d" -dependencies = [ - "Inflector", - "cfg-expr", - "derive-syn-parse", - "expander", - "frame-support-procedural-tools", - "itertools 0.11.0", - "macro_magic", - "proc-macro-warning", - "proc-macro2", - "quote", - "sp-crypto-hashing", - "syn 2.0.87", -] - -[[package]] -name = "frame-support-procedural-tools" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bead15a320be1764cdd50458c4cfacb23e0cee65f64f500f8e34136a94c7eeca" -dependencies = [ - "frame-support-procedural-tools-derive", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "frame-support-procedural-tools-derive" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed971c6435503a099bdac99fe4c5bea08981709e5b5a0a8535a1856f48561191" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "fs-err" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" -dependencies = [ - "autocfg", -] - [[package]] name = "funty" version = "2.0.0" @@ -3212,7 +2776,7 @@ checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", "memuse", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -3223,7 +2787,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.0", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -3290,7 +2854,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pasta_curves 0.4.1", - "rand_core 0.6.4", + "rand_core", "rayon", ] @@ -3299,9 +2863,6 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.8", -] [[package]] name = "hashbrown" @@ -3315,7 +2876,7 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.11", + "ahash", "allocator-api2", "serde", ] @@ -3341,12 +2902,6 @@ dependencies = [ "fxhash", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -3787,7 +3342,7 @@ dependencies = [ "derive_more 0.99.18", "displaydoc", "ibc-primitives", - "prost 0.13.3", + "prost", "serde", ] @@ -3816,7 +3371,7 @@ dependencies = [ "derive_more 0.99.18", "displaydoc", "ibc-proto", - "prost 0.13.3", + "prost", "serde", "time", ] @@ -3832,7 +3387,7 @@ dependencies = [ "flex-error", "ics23", "informalsystems-pbjson", - "prost 0.13.3", + "prost", "serde", "subtle-encoding", "tendermint-proto 0.38.1", @@ -3850,7 +3405,7 @@ dependencies = [ "bytes", "hex", "informalsystems-pbjson", - "prost 0.13.3", + "prost", "ripemd", "serde", "sha2 0.10.8", @@ -4017,16 +3572,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" dependencies = [ - "rlp 0.5.2", -] - -[[package]] -name = "impl-rlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" -dependencies = [ - "rlp 0.6.1", + "rlp", ] [[package]] @@ -4038,15 +3584,6 @@ dependencies = [ "serde", ] -[[package]] -name = "impl-serde" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" -dependencies = [ - "serde", -] - [[package]] name = "impl-trait-for-tuples" version = "0.2.2" @@ -4163,15 +3700,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -4238,7 +3766,7 @@ dependencies = [ "bls12_381", "ff 0.12.1", "group 0.12.1", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -4377,64 +3905,6 @@ dependencies = [ "hashbrown 0.15.0", ] -[[package]] -name = "macro_magic" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" -dependencies = [ - "macro_magic_core", - "macro_magic_macros", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "macro_magic_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" -dependencies = [ - "const-random", - "derive-syn-parse", - "macro_magic_core_macros", - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "macro_magic_core_macros" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "macro_magic_macros" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" -dependencies = [ - "macro_magic_core", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "macros" -version = "0.1.0" -source = "git+https://github.com/unionlabs/union?rev=18c86b4ff81408d31bec998f5d23bc1b03c9fda3#18c86b4ff81408d31bec998f5d23bc1b03c9fda3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "matchers" version = "0.1.0" @@ -4462,16 +3932,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2145869435ace5ea6ea3d35f59be559317ec9a0d04e1812d5f185a87b6d36f1a" -[[package]] -name = "milagro_bls" -version = "1.5.0" -source = "git+https://github.com/Snowfork/milagro_bls?rev=bc2b5b5e8d48b7e2e1bfaa56dc2d93e13cb32095#bc2b5b5e8d48b7e2e1bfaa56dc2d93e13cb32095" -dependencies = [ - "amcl", - "rand", - "zeroize", -] - [[package]] name = "mime" version = "0.3.17" @@ -4503,13 +3963,7 @@ dependencies = [ "libc", "wasi", "windows-sys 0.52.0", -] - -[[package]] -name = "multimap" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" +] [[package]] name = "native-tls" @@ -4766,7 +4220,7 @@ dependencies = [ "arrayvec", "auto_impl", "bytes", - "ethereum-types 0.14.1", + "ethereum-types", "open-fastrlp-derive", ] @@ -5166,7 +4620,7 @@ dependencies = [ "group 0.12.1", "lazy_static", "rand", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", "subtle", ] @@ -5181,7 +4635,7 @@ dependencies = [ "group 0.13.0", "lazy_static", "rand", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", "subtle", ] @@ -5191,40 +4645,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "pbjson" -version = "0.6.0" -source = "git+https://github.com/recoord/pbjson?rev=2b7a8e4c2c83a40d04beed46aa26ab97a39a81fe#2b7a8e4c2c83a40d04beed46aa26ab97a39a81fe" -dependencies = [ - "base64 0.21.7", - "serde", -] - -[[package]] -name = "pbjson-build" -version = "0.6.2" -source = "git+https://github.com/recoord/pbjson?rev=2b7a8e4c2c83a40d04beed46aa26ab97a39a81fe#2b7a8e4c2c83a40d04beed46aa26ab97a39a81fe" -dependencies = [ - "heck 0.4.1", - "itertools 0.11.0", - "prost 0.12.6", - "prost-types 0.12.6", -] - -[[package]] -name = "pbjson-types" -version = "0.6.0" -source = "git+https://github.com/recoord/pbjson?rev=2b7a8e4c2c83a40d04beed46aa26ab97a39a81fe#2b7a8e4c2c83a40d04beed46aa26ab97a39a81fe" -dependencies = [ - "bytes", - "chrono", - "pbjson", - "pbjson-build", - "prost 0.12.6", - "prost-build", - "serde", -] - [[package]] name = "pbkdf2" version = "0.11.0" @@ -5297,16 +4717,6 @@ dependencies = [ "ucd-trie", ] -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.6.0", -] - [[package]] name = "pharos" version = "0.5.3" @@ -5404,22 +4814,10 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", - "impl-rlp 0.3.0", - "impl-serde 0.4.0", + "impl-rlp", + "impl-serde", "scale-info", - "uint 0.9.5", -] - -[[package]] -name = "primitive-types" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" -dependencies = [ - "fixed-hash", - "impl-rlp 0.4.0", - "impl-serde 0.5.0", - "uint 0.10.0", + "uint", ] [[package]] @@ -5487,17 +4885,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "proc-macro-warning" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "proc-macro2" version = "1.0.89" @@ -5527,16 +4914,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "prost" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" -dependencies = [ - "bytes", - "prost-derive 0.12.6", -] - [[package]] name = "prost" version = "0.13.3" @@ -5544,41 +4921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ "bytes", - "prost-derive 0.13.3", -] - -[[package]] -name = "prost-build" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" -dependencies = [ - "bytes", - "heck 0.5.0", - "itertools 0.12.1", - "log", - "multimap", - "once_cell", - "petgraph", - "prettyplease", - "prost 0.12.6", - "prost-types 0.12.6", - "regex", - "syn 2.0.87", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" -dependencies = [ - "anyhow", - "itertools 0.12.1", - "proc-macro2", - "quote", - "syn 2.0.87", + "prost-derive", ] [[package]] @@ -5594,34 +4937,13 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "prost-types" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" -dependencies = [ - "prost 0.12.6", -] - [[package]] name = "prost-types" version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" dependencies = [ - "prost 0.13.3", -] - -[[package]] -name = "protos" -version = "0.0.0" -source = "git+https://github.com/unionlabs/union?rev=18c86b4ff81408d31bec998f5d23bc1b03c9fda3#18c86b4ff81408d31bec998f5d23bc1b03c9fda3" -dependencies = [ - "chrono", - "pbjson-types", - "prost 0.12.6", - "serde", - "serde-utils", + "prost", ] [[package]] @@ -5702,7 +5024,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", - "rand_core 0.6.4", + "rand_core", "serde", ] @@ -5713,15 +5035,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", + "rand_core", ] -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" - [[package]] name = "rand_core" version = "0.6.4" @@ -5737,7 +5053,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -6007,16 +5323,6 @@ dependencies = [ "rustc-hex", ] -[[package]] -name = "rlp" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" -dependencies = [ - "bytes", - "rustc-hex", -] - [[package]] name = "rlp-derive" version = "0.1.0" @@ -6039,15 +5345,6 @@ dependencies = [ "paste", ] -[[package]] -name = "rs_merkle" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b241d2e59b74ef9e98d94c78c47623d04c8392abaf82014dfd372a16041128f" -dependencies = [ - "sha2 0.10.8", -] - [[package]] name = "ruint" version = "1.12.3" @@ -6062,10 +5359,10 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "parity-scale-codec", - "primitive-types 0.12.2", + "primitive-types", "proptest", "rand", - "rlp 0.5.2", + "rlp", "ruint-macro", "serde", "valuable", @@ -6300,37 +5597,13 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.87", -] - [[package]] name = "schnellru" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" dependencies = [ - "ahash 0.8.11", + "ahash", "cfg-if", "hashbrown 0.13.2", ] @@ -6454,28 +5727,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-json-wasm" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e9213a07d53faa0b8dd81e767a54a8188a242fdb9be99ab75ec576a774bfdd7" -dependencies = [ - "serde", -] - -[[package]] -name = "serde-utils" -version = "0.1.0" -source = "git+https://github.com/unionlabs/union?rev=18c86b4ff81408d31bec998f5d23bc1b03c9fda3#18c86b4ff81408d31bec998f5d23bc1b03c9fda3" -dependencies = [ - "base64 0.21.7", - "bitvec", - "chrono", - "hex", - "primitive-types 0.12.2", - "serde", -] - [[package]] name = "serde_bytes" version = "0.11.15" @@ -6506,17 +5757,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "serde_json" version = "1.0.132" @@ -6595,7 +5835,7 @@ version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ - "darling 0.20.10", + "darling", "proc-macro2", "quote", "syn 2.0.87", @@ -6710,7 +5950,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -6766,20 +6006,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "sp-crypto-hashing" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" -dependencies = [ - "blake2b_simd", - "byteorder", - "digest 0.10.7", - "sha2 0.10.8", - "sha3", - "twox-hash", -] - [[package]] name = "sp1-build" version = "3.1.0" @@ -6818,8 +6044,8 @@ dependencies = [ "sp1-curves", "sp1-primitives", "sp1-stark", - "strum 0.26.3", - "strum_macros 0.26.4", + "strum", + "strum_macros", "thiserror", "tiny-keccak", "tracing", @@ -6863,9 +6089,9 @@ dependencies = [ "sp1-derive", "sp1-primitives", "sp1-stark", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "strum 0.26.3", - "strum_macros 0.26.4", + "static_assertions", + "strum", + "strum_macros", "tempfile", "thiserror", "tracing", @@ -6882,7 +6108,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaef1763516b57c6e845c74fbf7dede28a0930111e7eb62b97c923d869b195f6" dependencies = [ "cfg-if", - "curve25519-dalek 4.1.3", + "curve25519-dalek", "dashu", "elliptic-curve", "generic-array 1.1.0", @@ -6964,7 +6190,6 @@ dependencies = [ "ibc-core-commitment-types", "ibc-proto", "log", - "protos", "reqwest 0.12.9", "serde", "serde_json", @@ -6978,7 +6203,6 @@ dependencies = [ "tendermint-light-client-verifier", "tendermint-rpc", "tokio", - "unionlabs", ] [[package]] @@ -7058,14 +6282,12 @@ dependencies = [ "ibc-core-client-types", "ibc-core-commitment-types", "ibc-core-host-types", - "prost 0.13.3", - "protos", + "prost", "serde", "sp1-ics07-tendermint-solidity", "tendermint", "tendermint-light-client-verifier", "tendermint-rpc", - "unionlabs", ] [[package]] @@ -7223,7 +6445,7 @@ dependencies = [ "sp1-derive", "sp1-primitives", "sp1-stark", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", "thiserror", "tracing", "vec_map", @@ -7278,7 +6500,7 @@ dependencies = [ "bincode", "cfg-if", "dirs", - "ethers 2.0.14", + "ethers", "futures", "hashbrown 0.14.5", "hex", @@ -7288,7 +6510,7 @@ dependencies = [ "p3-baby-bear", "p3-field", "p3-fri", - "prost 0.13.3", + "prost", "reqwest 0.12.9", "reqwest-middleware", "serde", @@ -7297,8 +6519,8 @@ dependencies = [ "sp1-primitives", "sp1-prover", "sp1-stark", - "strum 0.26.3", - "strum_macros 0.26.4", + "strum", + "strum_macros", "tempfile", "thiserror", "tokio", @@ -7336,8 +6558,8 @@ dependencies = [ "serde", "sp1-derive", "sp1-primitives", - "strum 0.26.3", - "strum_macros 0.26.4", + "strum", + "strum_macros", "sysinfo", "thiserror", "tracing", @@ -7380,34 +6602,6 @@ dependencies = [ "der", ] -[[package]] -name = "ssz" -version = "0.5.3" -source = "git+https://github.com/unionlabs/union?rev=18c86b4ff81408d31bec998f5d23bc1b03c9fda3#18c86b4ff81408d31bec998f5d23bc1b03c9fda3" -dependencies = [ - "derivative", - "itertools 0.10.5", - "lazy_static", - "serde", - "serde-utils", - "sha2 0.10.8", - "smallvec", - "ssz-derive", - "thiserror", - "typenum", -] - -[[package]] -name = "ssz-derive" -version = "0.5.3" -source = "git+https://github.com/unionlabs/union?rev=18c86b4ff81408d31bec998f5d23bc1b03c9fda3#18c86b4ff81408d31bec998f5d23bc1b03c9fda3" -dependencies = [ - "darling 0.13.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -7420,52 +6614,19 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "git+https://github.com/nvzqz/static-assertions#a867e97a1b3c2e0c76b7a154abdf4e422b78e5f2" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" -dependencies = [ - "strum_macros 0.25.3", -] - [[package]] name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros 0.26.4", -] - -[[package]] -name = "strum_macros" -version = "0.25.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.87", + "strum_macros", ] [[package]] @@ -7474,7 +6635,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -7664,8 +6825,8 @@ dependencies = [ "futures", "num-traits", "once_cell", - "prost 0.13.3", - "prost-types 0.13.3", + "prost", + "prost-types", "serde", "serde_bytes", "serde_json", @@ -7714,8 +6875,8 @@ checksum = "8ed14abe3b0502a3afe21ca74ca5cdd6c7e8d326d982c26f98a394445eb31d6e" dependencies = [ "bytes", "flex-error", - "prost 0.13.3", - "prost-types 0.13.3", + "prost", + "prost-types", "serde", "serde_bytes", "subtle-encoding", @@ -7730,7 +6891,7 @@ checksum = "c81ba1b023ec00763c3bc4f4376c67c0047f185cccf95c416c7a2f16272c4cbb" dependencies = [ "bytes", "flex-error", - "prost 0.13.3", + "prost", "serde", "serde_bytes", "subtle-encoding", @@ -8173,7 +7334,7 @@ dependencies = [ "http 1.1.0", "http-body-util", "hyper 1.5.0", - "prost 0.13.3", + "prost", "reqwest 0.12.9", "serde", "serde_json", @@ -8183,17 +7344,6 @@ dependencies = [ "url", ] -[[package]] -name = "twox-hash" -version = "1.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" -dependencies = [ - "cfg-if", - "digest 0.10.7", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "typenum" version = "1.17.0" @@ -8215,19 +7365,7 @@ dependencies = [ "byteorder", "crunchy", "hex", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "uint" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", ] [[package]] @@ -8254,57 +7392,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unionlabs" -version = "0.1.0" -source = "git+https://github.com/unionlabs/union?rev=18c86b4ff81408d31bec998f5d23bc1b03c9fda3#18c86b4ff81408d31bec998f5d23bc1b03c9fda3" -dependencies = [ - "alloy", - "base64 0.21.7", - "bcs", - "bip32", - "bitvec", - "bs58 0.4.0", - "chrono", - "clap", - "contracts", - "cosmwasm-std", - "derive_more 0.99.18", - "either", - "enumorph", - "ethers 2.0.10", - "ethers-contract-derive 2.0.10", - "ethers-core 2.0.10", - "frame-support-procedural", - "generic-array 0.14.7", - "hex", - "hex-literal", - "k256", - "macros", - "milagro_bls", - "paste", - "primitive-types 0.12.2", - "prost 0.12.6", - "protos", - "ripemd", - "rlp 0.5.2", - "rs_merkle", - "serde", - "serde-utils", - "serde_bytes", - "serde_json", - "sha2 0.10.8", - "sha3", - "ssz", - "static_assertions 1.1.0 (git+https://github.com/nvzqz/static-assertions)", - "subtle-encoding", - "thiserror", - "tracing", - "typenum", - "uint 0.9.5", - "wasmparser", -] - [[package]] name = "untrusted" version = "0.7.1" @@ -8522,16 +7609,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.113.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" -dependencies = [ - "indexmap 2.6.0", - "semver 1.0.23", -] - [[package]] name = "wasmtimer" version = "0.2.1" diff --git a/Cargo.toml b/Cargo.toml index 78f664d..958dec3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,10 +64,6 @@ tendermint-rpc = { version = "0.38", features = ["http-client"] } ibc-core-client-types = { version = "0.55", default-features = false } ibc-core-host-cosmos = { version = "0.55", default-features = false } -# Union -unionlabs = { git = "https://github.com/unionlabs/union", rev = "18c86b4ff81408d31bec998f5d23bc1b03c9fda3", default-features = false, features = ["ethabi"] } -union-protos = { package = "protos", git = "https://github.com/unionlabs/union", rev = "18c86b4ff81408d31bec998f5d23bc1b03c9fda3", default-features = false, features = ["ibc+core+commitment+v1"] } - # Other dependencies reqwest = { version = "0.12", features = ["json"] } tokio = { version = "1", features = ["full"] } diff --git a/README.md b/README.md index 8f88a78..2dbfee1 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,6 @@ This project contains the following Solidity contracts and libraries (interfaces | **Contract** | **Description** | |:---:|:---:| | `SP1ICS07Tendermint.sol` | The light client contract, and the entry point for SP1 proofs. | -| `UnionMembership.sol` | A library wrapping Union's ICS23 implementation for verifying (non)membership purely in solidity (without SP1). | ## Requirements diff --git a/bun.lockb b/bun.lockb index 3bda38648ec2cd742ce60c2e88b487a7d299d50d..3878dc9020c452422abd8dd68da94aa6fcac2a02 100755 GIT binary patch delta 13767 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 delta 13913 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 Y8}m!Kf4e}WTGTUAFSu*PPXjys7yLU#dH?_b diff --git a/contracts/abi/SP1ICS07Tendermint.json b/contracts/abi/SP1ICS07Tendermint.json index bbcc7b3..7c6b449 100644 --- a/contracts/abi/SP1ICS07Tendermint.json +++ b/contracts/abi/SP1ICS07Tendermint.json @@ -636,40 +636,6 @@ ] } ] - }, - { - "name": "o9", - "type": "tuple", - "internalType": "struct IMembershipMsgs.UnionMembershipProof", - "components": [ - { - "name": "ics23Proof", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "trustedConsensusState", - "type": "tuple", - "internalType": "struct IICS07TendermintMsgs.ConsensusState", - "components": [ - { - "name": "timestamp", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "root", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "nextValidatorsHash", - "type": "bytes32", - "internalType": "bytes32" - } - ] - } - ] } ], "outputs": [], @@ -768,52 +734,6 @@ ], "stateMutability": "view" }, - { - "type": "function", - "name": "handleUnionMembershipProof", - "inputs": [ - { - "name": "proofHeight", - "type": "tuple", - "internalType": "struct IICS02ClientMsgs.Height", - "components": [ - { - "name": "revisionNumber", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "revisionHeight", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "name": "proofBytes", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "kvPath", - "type": "bytes[]", - "internalType": "bytes[]" - }, - { - "name": "kvValue", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "membership", diff --git a/contracts/fixtures/union_membership_fixture.json b/contracts/fixtures/union_membership_fixture.json deleted file mode 100644 index 4fb5280..000000000 --- a/contracts/fixtures/union_membership_fixture.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "trustedClientState": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000002ed86b000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000000000000001baf800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000076d6f6368612d3400000000000000000000000000000000000000000000000000", - "trustedConsensusState": "000000000000000000000000000000000000000000000000000000006729707bb212e3f9b00e2e8f70c59ecd7828d6750ae7c3c602ac90cba956b1e53e89ee0ef48d6a76f58420e8e2f7e32002ab786e5c980ab869001ce39f0adf39916070ed", - "updateClientVkey": "0x00b2622defae3c538c4d7ed9ee49d3597e5befa999febeb0f66917b320931ed9", - "membershipVkey": "0x005586439d37524c259f19f472d5c744e426f591d17e53d9c7204b9f0c32021b", - "ucAndMembershipVkey": "0x000739e2042571361654fac7282ebc0d34bcddf1a7e6efd5eeea788bf1eeed32", - "misbehaviourVkey": "0x002ef072d82c5ba69565ed738589afff0bb35e0dea3993ebc1dc35551531c8ff", - "proofHeight": "000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000002ed86b", - "membershipProof": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000176000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000006729707bb212e3f9b00e2e8f70c59ecd7828d6750ae7c3c602ac90cba956b1e53e89ee0ef48d6a76f58420e8e2f7e32002ab786e5c980ab869001ce39f0adf39916070ed00000000000000000000000000000000000000000000000000000000000016a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000023636c69656e74732f30372d74656e6465726d696e742d302f636c69656e745374617465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b70a2b2f6962632e6c69676874636c69656e74732e74656e6465726d696e742e76312e436c69656e7453746174651287010a1174686574612d746573746e65742d3030311204080110031a040880840722040880c60a2a02082832003a0510b7e3c60842190a090801180120012a0100120c0a02000110211804200c300142190a090801180120012a0100120c0a02000110201801200130014a07757067726164654a10757067726164656449424353746174655001580100000000000000000000000000000000000000000000000000000000000000000000000000000000050002dcc409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003a00000000000000000000000000000000000000000000000000000000000000460000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000a400000000000000000000000000000000000000000000000000000000000000b200000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000cc00000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000070406f89c96022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120daf45dd9978b7647487078dc1f3ee843393a2c624e77f8e3a4b825bef6e1007e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000070814f89c96022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120e88165b5726805cec7748dcd6a4e8392bdc6243a47204df600253f59dff01a3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000280c40a0a4b40220967ca3168e6321c49f8857de515343145448445d0e90eb82ef06b4f15aab5a59200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000290e9401a0a4b40220d4894f99f9b7b74be424fda4262a55968c15d5e24585faeafcd105c50560ed392000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000029109e02f8b0f6022082beaf07740d1d09118b1308b4f90afc695e931cf8f2dd4b80ea8f41978809e12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000008129003f8b0f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021202d1259f24b2578100ea3b58a21701f54ef6fcac369cf44ea4f1815a45db0880f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000814d008f8b0f6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212049d9dddc9d2bb36a1e8367e752fa450773368098347beb0c8a1dad984119d2c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000816ea0df8b0f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021200c202e0e1c4407c19b7c4180e9e60b39952fc34033ffb37342114a15999dc79c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081adc25c4def602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021206171484ce59eb4a6db4b1c914add6a1f1d413421eca9cdcb59c6976ebf47376a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081cae6ec4def60220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120ff6150e34a7f1c131709cafd460aa2ac7ab6be2966021585599dcc77eccdff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000920c09503c4def6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021200deb2a3812ccde5ec9cdfb83cffcb87e7a7a5eca44c8b18ea46621fa532abdce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009229adc04c4def6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021202f807ffc5f92891285e04b59e21e6cd25b1caa43863b673eac9801335395154500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002a24d0b906c4def602201bd478fe0a7afbea44375333b5eec12daf265d63fc7e5649ffee65052b6e9e282000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000926a0a30acae1f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120bfa7c8b688804c6e9669805111028f85f0b46ddf44947daff0a8912ed2e745fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000928b0b80ecae1f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120a5876e0d0408c88d24af377780b8aeb57c0842df6a385986cf07860e3e699f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000003696263000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206e0e69823ff5e891cb9c22dfab679afd9ccf5ad08ad63069e368eb5a745d148200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000021015cf0b097207fd17b29ee18f53685dfbb5e9c28cc5db90a0da502629bfc19a71c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0f82d7bd608e6beba7d3a4287e6e68c318bf66543726e2abcf210dd79109600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b2ae19f7359cdb022844c953a0adce49cf2e55369c10bf95dc0b480a08d3cb3d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002101d895e7b5936d6a9995def65cd8fa1aa2faf9d322d10b215300195ab47944305e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10077713d995951482e74b7c77c950d844d91ed430f71c370ce6fc13b5cdb8b" -} \ No newline at end of file diff --git a/contracts/fixtures/union_nonmembership_fixture.json b/contracts/fixtures/union_nonmembership_fixture.json deleted file mode 100644 index f8ceb21..000000000 --- a/contracts/fixtures/union_nonmembership_fixture.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "trustedClientState": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000002ed86b000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000000000000001baf800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000076d6f6368612d3400000000000000000000000000000000000000000000000000", - "trustedConsensusState": "000000000000000000000000000000000000000000000000000000006729707bb212e3f9b00e2e8f70c59ecd7828d6750ae7c3c602ac90cba956b1e53e89ee0ef48d6a76f58420e8e2f7e32002ab786e5c980ab869001ce39f0adf39916070ed", - "updateClientVkey": "0x00b2622defae3c538c4d7ed9ee49d3597e5befa999febeb0f66917b320931ed9", - "membershipVkey": "0x005586439d37524c259f19f472d5c744e426f591d17e53d9c7204b9f0c32021b", - "ucAndMembershipVkey": "0x000739e2042571361654fac7282ebc0d34bcddf1a7e6efd5eeea788bf1eeed32", - "misbehaviourVkey": "0x002ef072d82c5ba69565ed738589afff0bb35e0dea3993ebc1dc35551531c8ff", - "proofHeight": "000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000002ed86b", - "membershipProof": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000006729707bb212e3f9b00e2e8f70c59ecd7828d6750ae7c3c602ac90cba956b1e53e89ee0ef48d6a76f58420e8e2f7e32002ab786e5c980ab869001ce39f0adf39916070ed000000000000000000000000000000000000000000000000000000000000282000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000002260000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000011a00000000000000000000000000000000000000000000000000000000000000025636c69656e74732f30372d74656e6465726d696e742d3030312f636c69656e745374617465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000003e636c69656e74732f30372d74656e6465726d696e742d302f69746572617465436f6e73656e7375735374617465730000000000000000000000000111b1b70000000000000000000000000000000000000000000000000000000000000000001a636f6e73656e7375735374617465732f302d313739333638323300000000000000000000000000000000000000000000000000000000000000000000000000050002dcc4090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000a400000000000000000000000000000000000000000000000000000000000000b200000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000e80000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270204dcc40920ac118e2a0d72658d56e576652d5613c5cf41412ed92b4ee006da470799587a89200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000060406dcc409200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120039b4a151e9e25704aad2b8e61053bfc62c89af872c300b33c17b3fc97c9927f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000027060edcc409201c45f73738c8c8d8b2412343cbcb7b99ea9b5b386c8c83dd5b0891e7ddb1eff720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270a22dcc40920dc95bc73108d58f228d98e3e5068054a9df9c879c629ffb09509a1cc4b69f54f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000060c4ad88730200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120dcd4b8849a5ab98201774358e6d3206497db37501ea2ce406e2edff6b2a051fd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000060e7284814620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212021ab5b891efb385b243194d342057b738d347587ffe6ccd95df9e9ec73b5710500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000029129003f8b0f602204072902c00e4e531737e222b8d5e8b7fe485917f3e6da358a73067332d9d8276200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000814d008f8b0f6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212049d9dddc9d2bb36a1e8367e752fa450773368098347beb0c8a1dad984119d2c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000816ea0df8b0f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021200c202e0e1c4407c19b7c4180e9e60b39952fc34033ffb37342114a15999dc79c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081adc25c4def602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021206171484ce59eb4a6db4b1c914add6a1f1d413421eca9cdcb59c6976ebf47376a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081cae6ec4def60220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120ff6150e34a7f1c131709cafd460aa2ac7ab6be2966021585599dcc77eccdff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000920c09503c4def6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021200deb2a3812ccde5ec9cdfb83cffcb87e7a7a5eca44c8b18ea46621fa532abdce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009229adc04c4def6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021202f807ffc5f92891285e04b59e21e6cd25b1caa43863b673eac9801335395154500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002a24d0b906c4def602201bd478fe0a7afbea44375333b5eec12daf265d63fc7e5649ffee65052b6e9e282000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000926a0a30acae1f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120bfa7c8b688804c6e9669805111028f85f0b46ddf44947daff0a8912ed2e745fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000928b0b80ecae1f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120a5876e0d0408c88d24af377780b8aeb57c0842df6a385986cf07860e3e699f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000023636c69656e74732f30372d74656e6465726d696e742d312f636c69656e745374617465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b70a2b2f6962632e6c69676874636c69656e74732e74656e6465726d696e742e76312e436c69656e7453746174651287010a1174686574612d746573746e65742d3030311204080110031a040880840722040880c60a2a02082832003a0510d7ddc60842190a090801180120012a0100120c0a02000110211804200c300142190a090801180120012a0100120c0a02000110201801200130014a07757067726164654a10757067726164656449424353746174655001580100000000000000000000000000000000000000000000000000000000000000000000000000000000050002babf09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000000086000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a200000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000ca00000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270406dcc4092068341bdb3852fbfc1e56dbfd78302727a16e96c5a9f355e7560f9ab761cbf4a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000027060edcc409201c45f73738c8c8d8b2412343cbcb7b99ea9b5b386c8c83dd5b0891e7ddb1eff720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270a22dcc40920dc95bc73108d58f228d98e3e5068054a9df9c879c629ffb09509a1cc4b69f54f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000060c4ad88730200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120dcd4b8849a5ab98201774358e6d3206497db37501ea2ce406e2edff6b2a051fd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000060e7284814620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212021ab5b891efb385b243194d342057b738d347587ffe6ccd95df9e9ec73b5710500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000029129003f8b0f602204072902c00e4e531737e222b8d5e8b7fe485917f3e6da358a73067332d9d8276200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000814d008f8b0f6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212049d9dddc9d2bb36a1e8367e752fa450773368098347beb0c8a1dad984119d2c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000816ea0df8b0f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021200c202e0e1c4407c19b7c4180e9e60b39952fc34033ffb37342114a15999dc79c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081adc25c4def602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021206171484ce59eb4a6db4b1c914add6a1f1d413421eca9cdcb59c6976ebf47376a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081cae6ec4def60220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120ff6150e34a7f1c131709cafd460aa2ac7ab6be2966021585599dcc77eccdff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000920c09503c4def6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021200deb2a3812ccde5ec9cdfb83cffcb87e7a7a5eca44c8b18ea46621fa532abdce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009229adc04c4def6022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021202f807ffc5f92891285e04b59e21e6cd25b1caa43863b673eac9801335395154500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002a24d0b906c4def602201bd478fe0a7afbea44375333b5eec12daf265d63fc7e5649ffee65052b6e9e282000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000926a0a30acae1f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120bfa7c8b688804c6e9669805111028f85f0b46ddf44947daff0a8912ed2e745fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000928b0b80ecae1f602200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120a5876e0d0408c88d24af377780b8aeb57c0842df6a385986cf07860e3e699f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000003696263000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206e0e69823ff5e891cb9c22dfab679afd9ccf5ad08ad63069e368eb5a745d148200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000021015cf0b097207fd17b29ee18f53685dfbb5e9c28cc5db90a0da502629bfc19a71c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0f82d7bd608e6beba7d3a4287e6e68c318bf66543726e2abcf210dd79109600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b2ae19f7359cdb022844c953a0adce49cf2e55369c10bf95dc0b480a08d3cb3d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002101d895e7b5936d6a9995def65cd8fa1aa2faf9d322d10b215300195ab47944305e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10077713d995951482e74b7c77c950d844d91ed430f71c370ce6fc13b5cdb8b" -} \ No newline at end of file diff --git a/contracts/src/SP1ICS07Tendermint.sol b/contracts/src/SP1ICS07Tendermint.sol index 315d4cc..bb58867 100644 --- a/contracts/src/SP1ICS07Tendermint.sol +++ b/contracts/src/SP1ICS07Tendermint.sol @@ -10,7 +10,6 @@ import { ISP1ICS07TendermintErrors } from "./errors/ISP1ICS07TendermintErrors.so import { ISP1ICS07Tendermint } from "./ISP1ICS07Tendermint.sol"; import { Paths } from "./utils/Paths.sol"; -import { UnionMembership } from "./utils/UnionMembership.sol"; import { ILightClientMsgs } from "solidity-ibc/msgs/ILightClientMsgs.sol"; import { ILightClient } from "solidity-ibc/interfaces/ILightClient.sol"; @@ -164,10 +163,6 @@ contract SP1ICS07Tendermint is return handleSP1UpdateClientAndMembership( msgMembership.proofHeight, membershipProof.proof, msgMembership.path, msgMembership.value ); - } else if (membershipProof.proofType == MembershipProofType.UnionMembershipProof) { - return this.handleUnionMembershipProof( - msgMembership.proofHeight, membershipProof.proof, msgMembership.path, msgMembership.value - ); } else { revert UnknownMembershipProofType(uint8(membershipProof.proofType)); } @@ -198,35 +193,6 @@ contract SP1ICS07Tendermint is revert FeatureNotSupported(); } - function handleUnionMembershipProof( - Height calldata proofHeight, - bytes calldata proofBytes, - bytes[] calldata kvPath, - bytes calldata kvValue - ) - public - view - returns (uint256) - { - if (kvPath.length != 2) { - revert LengthIsOutOfRange(kvPath.length, 2, 2); - } - - UnionMembershipProof memory uProof = abi.decode(proofBytes, (UnionMembershipProof)); - - validateMembershipOutput( - uProof.trustedConsensusState.root, proofHeight.revisionHeight, uProof.trustedConsensusState - ); - - if ( - !UnionMembership.verify(uProof.trustedConsensusState.root, uProof.ics23Proof, kvPath[0], kvPath[1], kvValue) - ) { - revert InvalidMembershipProof(); - } - - return uProof.trustedConsensusState.timestamp; - } - /// @notice Handles the `SP1MembershipProof` proof type. /// @param proofHeight The height of the proof. /// @param proofBytes The encoded proof. @@ -549,7 +515,6 @@ contract SP1ICS07Tendermint is /// @param o6 The SP1MembershipAndUpdateClientProof. /// @param o7 The MisbehaviourOutput. /// @param o8 The MsgSubmitMisbehaviour. - /// @param o9 The UnionMembershipProof. function abiPublicTypes( MembershipOutput memory o1, UcAndMembershipOutput memory o2, @@ -558,8 +523,7 @@ contract SP1ICS07Tendermint is SP1MembershipProof memory o5, SP1MembershipAndUpdateClientProof memory o6, MisbehaviourOutput memory o7, - MsgSubmitMisbehaviour memory o8, - UnionMembershipProof memory o9 + MsgSubmitMisbehaviour memory o8 ) public pure diff --git a/contracts/src/msgs/IMembershipMsgs.sol b/contracts/src/msgs/IMembershipMsgs.sol index 6d2a543..5463125 100644 --- a/contracts/src/msgs/IMembershipMsgs.sol +++ b/contracts/src/msgs/IMembershipMsgs.sol @@ -46,20 +46,11 @@ interface IMembershipMsgs is ISP1Msgs { SP1Proof sp1Proof; } - /// @notice The membership proof for the union verify (non)membership program. - /// @param ics23Proof The ics23 proof for the membership program. - struct UnionMembershipProof { - bytes ics23Proof; - IICS07TendermintMsgs.ConsensusState trustedConsensusState; - } - /// @notice The type of the membership proof. enum MembershipProofType { /// The proof is for the verify membership program. SP1MembershipProof, /// The proof is for the verify membership and update client program. - SP1MembershipAndUpdateClientProof, - /// Prove (non)membership using union's ics23. - UnionMembershipProof + SP1MembershipAndUpdateClientProof } } diff --git a/contracts/src/utils/UnionMembership.sol b/contracts/src/utils/UnionMembership.sol deleted file mode 100644 index 738b5f3..000000000 --- a/contracts/src/utils/UnionMembership.sol +++ /dev/null @@ -1,52 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.28; - -import { Ics23, UnionIcs23 } from "union-lib/ICS23.sol"; - -/// @title UnionMembership -/// @notice A library for verifying membership and non-membership proofs powered by Union's ICS23 library. -library UnionMembership { - /// @notice A non-membership proof for a key. - /// @dev The proof consists of an ICS23 NonExistenceProof and an ICS23 ExistenceProof. - /// @param nonExistenceProof The non-existence proof. - /// @param existenceProof The existence proof. - struct UnionNonMembershipProof { - UnionIcs23.NonExistenceProof nonExistenceProof; - UnionIcs23.ExistenceProof existenceProof; - } - - /// @notice Verifies the membership or non-membership of a key-value pair. - /// @dev If the value is empty, the function verifies non-membership. - /// @param proof The membership proof. - /// @param key The key of the key-value pair. - /// @param value The value of the key-value pair. - /// @return True if the proof is verified, false otherwise. - function verify( - bytes32 root, - bytes calldata proof, - bytes calldata prefix, - bytes calldata key, - bytes calldata value - ) - public - pure - returns (bool) - { - if (value.length == 0) { - UnionNonMembershipProof calldata nmProof; - assembly { - nmProof := proof.offset - } - return Ics23.verifyChainedNonMembership( - nmProof.nonExistenceProof, nmProof.existenceProof, root, prefix, key - ) == Ics23.VerifyChainedNonMembershipError.None; - } else { - UnionIcs23.ExistenceProof[2] calldata mProof; - assembly { - mProof := proof.offset - } - return Ics23.verifyChainedMembership(mProof, root, prefix, key, value) - == Ics23.VerifyChainedMembershipError.None; - } - } -} diff --git a/contracts/test/UnionMembership.t.sol b/contracts/test/UnionMembership.t.sol deleted file mode 100644 index 4912a47..000000000 --- a/contracts/test/UnionMembership.t.sol +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.28; - -// solhint-disable-next-line no-global-import -import "forge-std/console.sol"; -import { MembershipTest } from "./MembershipTest.sol"; - -contract UnionMembershipTest is MembershipTest { - UnionMembershipProof public proof; - - function setUp() public { - setUpTestWithFixtures("union_membership_fixture.json"); - - proof = abi.decode(fixture.membershipProof.proof, (UnionMembershipProof)); - } - - // Confirm that submitting a real proof passes the verifier. - function test_ValidUnionVerifyMembership() public { - MsgMembership memory membershipMsg = MsgMembership({ - proof: abi.encode(fixture.membershipProof), - proofHeight: fixture.proofHeight, - path: verifyMembershipPath, - value: VERIFY_MEMBERSHIP_VALUE - }); - - ics07Tendermint.membership(membershipMsg); - - console.log("UnionVerifyMembership gas used: ", vm.lastCallGas().gasTotalUsed); - } -} - -contract UnionNonMembershipTest is MembershipTest { - UnionMembershipProof public proof; - - function setUp() public { - setUpTestWithFixtures("union_nonmembership_fixture.json"); - - proof = abi.decode(fixture.membershipProof.proof, (UnionMembershipProof)); - } - - // Confirm that submitting a real proof passes the verifier. - function test_ValidUnionVerifyNonMembership() public { - MsgMembership memory membershipMsg = MsgMembership({ - proof: abi.encode(fixture.membershipProof), - proofHeight: fixture.proofHeight, - path: verifyNonMembershipPath, - value: bytes("") - }); - - ics07Tendermint.membership(membershipMsg); - - console.log("UnionVerifyNonMembership gas used: ", vm.lastCallGas().gasTotalUsed); - } -} diff --git a/e2e/interchaintestv8/operator/proofs.go b/e2e/interchaintestv8/operator/proofs.go index 8c30199..be2129c 100644 --- a/e2e/interchaintestv8/operator/proofs.go +++ b/e2e/interchaintestv8/operator/proofs.go @@ -8,27 +8,14 @@ const ( ProofTypeGroth16 SupportedProofType = iota // ProofTypePlonk represents the Plonk SP1 proof type. ProofTypePlonk - // ProofTypeUnion represents the Union ICS23 proof type for membership proofs. - ProofTypeUnion ) // String returns the string representation of the proof type. func (pt SupportedProofType) String() string { - return [...]string{"groth16", "plonk", "union"}[pt] + return [...]string{"groth16", "plonk"}[pt] } // ToOperatorArgs returns the proof type as arguments for the operator command. func (pt SupportedProofType) ToOperatorArgs() []string { return []string{"-p", pt.String()} } - -// ToOpGenesisArgs returns the proof type as arguments for the operator genesis command. -// Genesis doesn't support the union proof type. -func (pt SupportedProofType) ToOpGenesisArgs() []string { - switch pt { - case ProofTypeUnion: - return []string{} - default: - return []string{"-p", pt.String()} - } -} diff --git a/e2e/interchaintestv8/sp1_ics07_test.go b/e2e/interchaintestv8/sp1_ics07_test.go index 96ed593..46db255 100644 --- a/e2e/interchaintestv8/sp1_ics07_test.go +++ b/e2e/interchaintestv8/sp1_ics07_test.go @@ -96,7 +96,7 @@ func (s *SP1ICS07TendermintTestSuite) SetupSuite(ctx context.Context, pt operato "--trust-level", testvalues.DefaultTrustLevel.String(), "--trusting-period", strconv.Itoa(testvalues.DefaultTrustPeriod), "-o", "contracts/script/genesis.json", - }, pt.ToOpGenesisArgs()...) + }, pt.ToOperatorArgs()...) s.Require().NoError(operator.RunGenesis(args...)) s.T().Cleanup(func() { @@ -209,11 +209,6 @@ func (s *SP1ICS07TendermintTestSuite) UpdateClientTest(ctx context.Context, pt o })) } -// TestUnionMembership tests the verify (non)membership functionality with the --union flag -func (s *SP1ICS07TendermintTestSuite) TestMembership_Union() { - s.MembershipTest(operator.ProofTypeUnion) -} - // TestSP1Membership tests the verify (non)membership functionality with the plonk flag func (s *SP1ICS07TendermintTestSuite) TestMembership_Plonk() { s.MembershipTest(operator.ProofTypePlonk) diff --git a/e2e/interchaintestv8/types/sp1ics07tendermint/contract.go b/e2e/interchaintestv8/types/sp1ics07tendermint/contract.go index 3442f0a..f43090c 100644 --- a/e2e/interchaintestv8/types/sp1ics07tendermint/contract.go +++ b/e2e/interchaintestv8/types/sp1ics07tendermint/contract.go @@ -96,12 +96,6 @@ type IMembershipMsgsSP1MembershipProof struct { TrustedConsensusState IICS07TendermintMsgsConsensusState } -// IMembershipMsgsUnionMembershipProof is an auto generated low-level Go binding around an user-defined struct. -type IMembershipMsgsUnionMembershipProof struct { - Ics23Proof []byte - TrustedConsensusState IICS07TendermintMsgsConsensusState -} - // IMisbehaviourMsgsMisbehaviourOutput is an auto generated low-level Go binding around an user-defined struct. type IMisbehaviourMsgsMisbehaviourOutput struct { ClientState IICS07TendermintMsgsClientState @@ -147,7 +141,7 @@ type IUpdateClientMsgsUpdateClientOutput struct { // ContractMetaData contains all meta data concerning the Contract contract. var ContractMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"updateClientProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"membershipProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"updateClientAndMembershipProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"misbehaviourProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_clientState\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_consensusState\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOWED_SP1_CLOCK_DRIFT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MEMBERSHIP_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MISBEHAVIOUR_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPDATE_CLIENT_AND_MEMBERSHIP_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPDATE_CLIENT_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VERIFIER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISP1Verifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"abiPublicTypes\",\"inputs\":[{\"name\":\"o1\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.MembershipOutput\",\"components\":[{\"name\":\"commitmentRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"kvPairs\",\"type\":\"tuple[]\",\"internalType\":\"structIMembershipMsgs.KVPair[]\",\"components\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o2\",\"type\":\"tuple\",\"internalType\":\"structIUpdateClientAndMembershipMsgs.UcAndMembershipOutput\",\"components\":[{\"name\":\"updateClientOutput\",\"type\":\"tuple\",\"internalType\":\"structIUpdateClientMsgs.UpdateClientOutput\",\"components\":[{\"name\":\"clientState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ClientState\",\"components\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"trustLevel\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.TrustThreshold\",\"components\":[{\"name\":\"numerator\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"denominator\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"latestHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"isFrozen\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"zkAlgorithm\",\"type\":\"uint8\",\"internalType\":\"enumISP1Msgs.SupportedZkAlgorithm\"}]},{\"name\":\"trustedConsensusState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"newConsensusState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"time\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"trustedHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"newHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"kvPairs\",\"type\":\"tuple[]\",\"internalType\":\"structIMembershipMsgs.KVPair[]\",\"components\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o3\",\"type\":\"tuple\",\"internalType\":\"structIUpdateClientMsgs.MsgUpdateClient\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o4\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.MembershipProof\",\"components\":[{\"name\":\"proofType\",\"type\":\"uint8\",\"internalType\":\"enumIMembershipMsgs.MembershipProofType\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"o5\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.SP1MembershipProof\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"trustedConsensusState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"o6\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.SP1MembershipAndUpdateClientProof\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o7\",\"type\":\"tuple\",\"internalType\":\"structIMisbehaviourMsgs.MisbehaviourOutput\",\"components\":[{\"name\":\"clientState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ClientState\",\"components\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"trustLevel\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.TrustThreshold\",\"components\":[{\"name\":\"numerator\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"denominator\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"latestHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"isFrozen\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"zkAlgorithm\",\"type\":\"uint8\",\"internalType\":\"enumISP1Msgs.SupportedZkAlgorithm\"}]},{\"name\":\"time\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"trustedHeight1\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustedHeight2\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustedConsensusState1\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"trustedConsensusState2\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"o8\",\"type\":\"tuple\",\"internalType\":\"structIMisbehaviourMsgs.MsgSubmitMisbehaviour\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o9\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.UnionMembershipProof\",\"components\":[{\"name\":\"ics23Proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"trustedConsensusState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getClientState\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ClientState\",\"components\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"trustLevel\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.TrustThreshold\",\"components\":[{\"name\":\"numerator\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"denominator\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"latestHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"isFrozen\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"zkAlgorithm\",\"type\":\"uint8\",\"internalType\":\"enumISP1Msgs.SupportedZkAlgorithm\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConsensusStateHash\",\"inputs\":[{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"handleUnionMembershipProof\",\"inputs\":[{\"name\":\"proofHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"proofBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"kvPath\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"kvValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"membership\",\"inputs\":[{\"name\":\"msgMembership\",\"type\":\"tuple\",\"internalType\":\"structILightClientMsgs.MsgMembership\",\"components\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proofHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"misbehaviour\",\"inputs\":[{\"name\":\"misbehaviourMsg\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"multicall\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"results\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"updateMsg\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumILightClientMsgs.UpdateResult\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeClient\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CannotHandleMisbehavior\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIdMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"actual\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"ClientStateMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"actual\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"ConsensusStateHashMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"actual\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ConsensusStateNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ConsensusStateRootMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"actual\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FeatureNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FrozenClientState\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMembershipProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyValuePairNotInCache\",\"inputs\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"LengthIsOutOfRange\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"min\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"max\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"MembershipProofKeyNotFound\",\"inputs\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}]},{\"type\":\"error\",\"name\":\"MembershipProofValueMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"actual\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"ProofHeightMismatch\",\"inputs\":[{\"name\":\"expectedRevisionNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"expectedRevisionHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"actualRevisionNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"actualRevisionHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"ProofIsInTheFuture\",\"inputs\":[{\"name\":\"now\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ProofIsTooOld\",\"inputs\":[{\"name\":\"now\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TrustThresholdMismatch\",\"inputs\":[{\"name\":\"expectedNumerator\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expectedDenominator\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actualNumerator\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actualDenominator\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TrustingPeriodMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TrustingPeriodTooLong\",\"inputs\":[{\"name\":\"trustingPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"UnbondingPeriodMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"UnknownMembershipProofType\",\"inputs\":[{\"name\":\"proofType\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"UnknownZkAlgorithm\",\"inputs\":[{\"name\":\"algorithm\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"VerificationKeyMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"actual\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"updateClientProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"membershipProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"updateClientAndMembershipProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"misbehaviourProgramVkey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_clientState\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_consensusState\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOWED_SP1_CLOCK_DRIFT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MEMBERSHIP_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MISBEHAVIOUR_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPDATE_CLIENT_AND_MEMBERSHIP_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPDATE_CLIENT_PROGRAM_VKEY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VERIFIER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISP1Verifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"abiPublicTypes\",\"inputs\":[{\"name\":\"o1\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.MembershipOutput\",\"components\":[{\"name\":\"commitmentRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"kvPairs\",\"type\":\"tuple[]\",\"internalType\":\"structIMembershipMsgs.KVPair[]\",\"components\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o2\",\"type\":\"tuple\",\"internalType\":\"structIUpdateClientAndMembershipMsgs.UcAndMembershipOutput\",\"components\":[{\"name\":\"updateClientOutput\",\"type\":\"tuple\",\"internalType\":\"structIUpdateClientMsgs.UpdateClientOutput\",\"components\":[{\"name\":\"clientState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ClientState\",\"components\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"trustLevel\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.TrustThreshold\",\"components\":[{\"name\":\"numerator\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"denominator\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"latestHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"isFrozen\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"zkAlgorithm\",\"type\":\"uint8\",\"internalType\":\"enumISP1Msgs.SupportedZkAlgorithm\"}]},{\"name\":\"trustedConsensusState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"newConsensusState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"time\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"trustedHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"newHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"kvPairs\",\"type\":\"tuple[]\",\"internalType\":\"structIMembershipMsgs.KVPair[]\",\"components\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o3\",\"type\":\"tuple\",\"internalType\":\"structIUpdateClientMsgs.MsgUpdateClient\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o4\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.MembershipProof\",\"components\":[{\"name\":\"proofType\",\"type\":\"uint8\",\"internalType\":\"enumIMembershipMsgs.MembershipProofType\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"o5\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.SP1MembershipProof\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"trustedConsensusState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"o6\",\"type\":\"tuple\",\"internalType\":\"structIMembershipMsgs.SP1MembershipAndUpdateClientProof\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"o7\",\"type\":\"tuple\",\"internalType\":\"structIMisbehaviourMsgs.MisbehaviourOutput\",\"components\":[{\"name\":\"clientState\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ClientState\",\"components\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"trustLevel\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.TrustThreshold\",\"components\":[{\"name\":\"numerator\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"denominator\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"latestHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"isFrozen\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"zkAlgorithm\",\"type\":\"uint8\",\"internalType\":\"enumISP1Msgs.SupportedZkAlgorithm\"}]},{\"name\":\"time\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"trustedHeight1\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustedHeight2\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustedConsensusState1\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"trustedConsensusState2\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ConsensusState\",\"components\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextValidatorsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"o8\",\"type\":\"tuple\",\"internalType\":\"structIMisbehaviourMsgs.MsgSubmitMisbehaviour\",\"components\":[{\"name\":\"sp1Proof\",\"type\":\"tuple\",\"internalType\":\"structISP1Msgs.SP1Proof\",\"components\":[{\"name\":\"vKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getClientState\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.ClientState\",\"components\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"trustLevel\",\"type\":\"tuple\",\"internalType\":\"structIICS07TendermintMsgs.TrustThreshold\",\"components\":[{\"name\":\"numerator\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"denominator\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"latestHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"trustingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"isFrozen\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"zkAlgorithm\",\"type\":\"uint8\",\"internalType\":\"enumISP1Msgs.SupportedZkAlgorithm\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConsensusStateHash\",\"inputs\":[{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"membership\",\"inputs\":[{\"name\":\"msgMembership\",\"type\":\"tuple\",\"internalType\":\"structILightClientMsgs.MsgMembership\",\"components\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proofHeight\",\"type\":\"tuple\",\"internalType\":\"structIICS02ClientMsgs.Height\",\"components\":[{\"name\":\"revisionNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"revisionHeight\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"misbehaviour\",\"inputs\":[{\"name\":\"misbehaviourMsg\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"multicall\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"results\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"updateMsg\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumILightClientMsgs.UpdateResult\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeClient\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CannotHandleMisbehavior\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIdMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"actual\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"ClientStateMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"actual\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"ConsensusStateHashMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"actual\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ConsensusStateNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ConsensusStateRootMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"actual\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FeatureNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FrozenClientState\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMembershipProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyValuePairNotInCache\",\"inputs\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"LengthIsOutOfRange\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"min\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"max\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"MembershipProofKeyNotFound\",\"inputs\":[{\"name\":\"path\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}]},{\"type\":\"error\",\"name\":\"MembershipProofValueMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"actual\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"ProofHeightMismatch\",\"inputs\":[{\"name\":\"expectedRevisionNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"expectedRevisionHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"actualRevisionNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"actualRevisionHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"ProofIsInTheFuture\",\"inputs\":[{\"name\":\"now\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ProofIsTooOld\",\"inputs\":[{\"name\":\"now\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TrustThresholdMismatch\",\"inputs\":[{\"name\":\"expectedNumerator\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expectedDenominator\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actualNumerator\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actualDenominator\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TrustingPeriodMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TrustingPeriodTooLong\",\"inputs\":[{\"name\":\"trustingPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"unbondingPeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"UnbondingPeriodMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"UnknownMembershipProofType\",\"inputs\":[{\"name\":\"proofType\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"UnknownZkAlgorithm\",\"inputs\":[{\"name\":\"algorithm\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"VerificationKeyMismatch\",\"inputs\":[{\"name\":\"expected\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"actual\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", } // ContractABI is the input ABI used to generate the binding from. @@ -482,12 +476,12 @@ func (_Contract *ContractCallerSession) VERIFIER() (common.Address, error) { return _Contract.Contract.VERIFIER(&_Contract.CallOpts) } -// AbiPublicTypes is a free data retrieval call binding the contract method 0x429bac6b. +// AbiPublicTypes is a free data retrieval call binding the contract method 0x1c8b8d0f. // -// Solidity: function abiPublicTypes((bytes32,(bytes[],bytes)[]) o1, (((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32),uint64,(uint32,uint32),(uint32,uint32)),(bytes[],bytes)[]) o2, ((bytes32,bytes,bytes)) o3, (uint8,bytes) o4, ((bytes32,bytes,bytes),(uint64,bytes32,bytes32)) o5, ((bytes32,bytes,bytes)) o6, ((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),uint64,(uint32,uint32),(uint32,uint32),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32)) o7, ((bytes32,bytes,bytes)) o8, (bytes,(uint64,bytes32,bytes32)) o9) pure returns() -func (_Contract *ContractCaller) AbiPublicTypes(opts *bind.CallOpts, o1 IMembershipMsgsMembershipOutput, o2 IUpdateClientAndMembershipMsgsUcAndMembershipOutput, o3 IUpdateClientMsgsMsgUpdateClient, o4 IMembershipMsgsMembershipProof, o5 IMembershipMsgsSP1MembershipProof, o6 IMembershipMsgsSP1MembershipAndUpdateClientProof, o7 IMisbehaviourMsgsMisbehaviourOutput, o8 IMisbehaviourMsgsMsgSubmitMisbehaviour, o9 IMembershipMsgsUnionMembershipProof) error { +// Solidity: function abiPublicTypes((bytes32,(bytes[],bytes)[]) o1, (((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32),uint64,(uint32,uint32),(uint32,uint32)),(bytes[],bytes)[]) o2, ((bytes32,bytes,bytes)) o3, (uint8,bytes) o4, ((bytes32,bytes,bytes),(uint64,bytes32,bytes32)) o5, ((bytes32,bytes,bytes)) o6, ((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),uint64,(uint32,uint32),(uint32,uint32),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32)) o7, ((bytes32,bytes,bytes)) o8) pure returns() +func (_Contract *ContractCaller) AbiPublicTypes(opts *bind.CallOpts, o1 IMembershipMsgsMembershipOutput, o2 IUpdateClientAndMembershipMsgsUcAndMembershipOutput, o3 IUpdateClientMsgsMsgUpdateClient, o4 IMembershipMsgsMembershipProof, o5 IMembershipMsgsSP1MembershipProof, o6 IMembershipMsgsSP1MembershipAndUpdateClientProof, o7 IMisbehaviourMsgsMisbehaviourOutput, o8 IMisbehaviourMsgsMsgSubmitMisbehaviour) error { var out []interface{} - err := _Contract.contract.Call(opts, &out, "abiPublicTypes", o1, o2, o3, o4, o5, o6, o7, o8, o9) + err := _Contract.contract.Call(opts, &out, "abiPublicTypes", o1, o2, o3, o4, o5, o6, o7, o8) if err != nil { return err @@ -497,18 +491,18 @@ func (_Contract *ContractCaller) AbiPublicTypes(opts *bind.CallOpts, o1 IMembers } -// AbiPublicTypes is a free data retrieval call binding the contract method 0x429bac6b. +// AbiPublicTypes is a free data retrieval call binding the contract method 0x1c8b8d0f. // -// Solidity: function abiPublicTypes((bytes32,(bytes[],bytes)[]) o1, (((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32),uint64,(uint32,uint32),(uint32,uint32)),(bytes[],bytes)[]) o2, ((bytes32,bytes,bytes)) o3, (uint8,bytes) o4, ((bytes32,bytes,bytes),(uint64,bytes32,bytes32)) o5, ((bytes32,bytes,bytes)) o6, ((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),uint64,(uint32,uint32),(uint32,uint32),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32)) o7, ((bytes32,bytes,bytes)) o8, (bytes,(uint64,bytes32,bytes32)) o9) pure returns() -func (_Contract *ContractSession) AbiPublicTypes(o1 IMembershipMsgsMembershipOutput, o2 IUpdateClientAndMembershipMsgsUcAndMembershipOutput, o3 IUpdateClientMsgsMsgUpdateClient, o4 IMembershipMsgsMembershipProof, o5 IMembershipMsgsSP1MembershipProof, o6 IMembershipMsgsSP1MembershipAndUpdateClientProof, o7 IMisbehaviourMsgsMisbehaviourOutput, o8 IMisbehaviourMsgsMsgSubmitMisbehaviour, o9 IMembershipMsgsUnionMembershipProof) error { - return _Contract.Contract.AbiPublicTypes(&_Contract.CallOpts, o1, o2, o3, o4, o5, o6, o7, o8, o9) +// Solidity: function abiPublicTypes((bytes32,(bytes[],bytes)[]) o1, (((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32),uint64,(uint32,uint32),(uint32,uint32)),(bytes[],bytes)[]) o2, ((bytes32,bytes,bytes)) o3, (uint8,bytes) o4, ((bytes32,bytes,bytes),(uint64,bytes32,bytes32)) o5, ((bytes32,bytes,bytes)) o6, ((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),uint64,(uint32,uint32),(uint32,uint32),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32)) o7, ((bytes32,bytes,bytes)) o8) pure returns() +func (_Contract *ContractSession) AbiPublicTypes(o1 IMembershipMsgsMembershipOutput, o2 IUpdateClientAndMembershipMsgsUcAndMembershipOutput, o3 IUpdateClientMsgsMsgUpdateClient, o4 IMembershipMsgsMembershipProof, o5 IMembershipMsgsSP1MembershipProof, o6 IMembershipMsgsSP1MembershipAndUpdateClientProof, o7 IMisbehaviourMsgsMisbehaviourOutput, o8 IMisbehaviourMsgsMsgSubmitMisbehaviour) error { + return _Contract.Contract.AbiPublicTypes(&_Contract.CallOpts, o1, o2, o3, o4, o5, o6, o7, o8) } -// AbiPublicTypes is a free data retrieval call binding the contract method 0x429bac6b. +// AbiPublicTypes is a free data retrieval call binding the contract method 0x1c8b8d0f. // -// Solidity: function abiPublicTypes((bytes32,(bytes[],bytes)[]) o1, (((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32),uint64,(uint32,uint32),(uint32,uint32)),(bytes[],bytes)[]) o2, ((bytes32,bytes,bytes)) o3, (uint8,bytes) o4, ((bytes32,bytes,bytes),(uint64,bytes32,bytes32)) o5, ((bytes32,bytes,bytes)) o6, ((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),uint64,(uint32,uint32),(uint32,uint32),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32)) o7, ((bytes32,bytes,bytes)) o8, (bytes,(uint64,bytes32,bytes32)) o9) pure returns() -func (_Contract *ContractCallerSession) AbiPublicTypes(o1 IMembershipMsgsMembershipOutput, o2 IUpdateClientAndMembershipMsgsUcAndMembershipOutput, o3 IUpdateClientMsgsMsgUpdateClient, o4 IMembershipMsgsMembershipProof, o5 IMembershipMsgsSP1MembershipProof, o6 IMembershipMsgsSP1MembershipAndUpdateClientProof, o7 IMisbehaviourMsgsMisbehaviourOutput, o8 IMisbehaviourMsgsMsgSubmitMisbehaviour, o9 IMembershipMsgsUnionMembershipProof) error { - return _Contract.Contract.AbiPublicTypes(&_Contract.CallOpts, o1, o2, o3, o4, o5, o6, o7, o8, o9) +// Solidity: function abiPublicTypes((bytes32,(bytes[],bytes)[]) o1, (((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32),uint64,(uint32,uint32),(uint32,uint32)),(bytes[],bytes)[]) o2, ((bytes32,bytes,bytes)) o3, (uint8,bytes) o4, ((bytes32,bytes,bytes),(uint64,bytes32,bytes32)) o5, ((bytes32,bytes,bytes)) o6, ((string,(uint8,uint8),(uint32,uint32),uint32,uint32,bool,uint8),uint64,(uint32,uint32),(uint32,uint32),(uint64,bytes32,bytes32),(uint64,bytes32,bytes32)) o7, ((bytes32,bytes,bytes)) o8) pure returns() +func (_Contract *ContractCallerSession) AbiPublicTypes(o1 IMembershipMsgsMembershipOutput, o2 IUpdateClientAndMembershipMsgsUcAndMembershipOutput, o3 IUpdateClientMsgsMsgUpdateClient, o4 IMembershipMsgsMembershipProof, o5 IMembershipMsgsSP1MembershipProof, o6 IMembershipMsgsSP1MembershipAndUpdateClientProof, o7 IMisbehaviourMsgsMisbehaviourOutput, o8 IMisbehaviourMsgsMsgSubmitMisbehaviour) error { + return _Contract.Contract.AbiPublicTypes(&_Contract.CallOpts, o1, o2, o3, o4, o5, o6, o7, o8) } // GetClientState is a free data retrieval call binding the contract method 0xef913a4b. @@ -573,37 +567,6 @@ func (_Contract *ContractCallerSession) GetConsensusStateHash(revisionHeight uin return _Contract.Contract.GetConsensusStateHash(&_Contract.CallOpts, revisionHeight) } -// HandleUnionMembershipProof is a free data retrieval call binding the contract method 0x8dc5cc3d. -// -// Solidity: function handleUnionMembershipProof((uint32,uint32) proofHeight, bytes proofBytes, bytes[] kvPath, bytes kvValue) view returns(uint256) -func (_Contract *ContractCaller) HandleUnionMembershipProof(opts *bind.CallOpts, proofHeight IICS02ClientMsgsHeight, proofBytes []byte, kvPath [][]byte, kvValue []byte) (*big.Int, error) { - var out []interface{} - err := _Contract.contract.Call(opts, &out, "handleUnionMembershipProof", proofHeight, proofBytes, kvPath, kvValue) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// HandleUnionMembershipProof is a free data retrieval call binding the contract method 0x8dc5cc3d. -// -// Solidity: function handleUnionMembershipProof((uint32,uint32) proofHeight, bytes proofBytes, bytes[] kvPath, bytes kvValue) view returns(uint256) -func (_Contract *ContractSession) HandleUnionMembershipProof(proofHeight IICS02ClientMsgsHeight, proofBytes []byte, kvPath [][]byte, kvValue []byte) (*big.Int, error) { - return _Contract.Contract.HandleUnionMembershipProof(&_Contract.CallOpts, proofHeight, proofBytes, kvPath, kvValue) -} - -// HandleUnionMembershipProof is a free data retrieval call binding the contract method 0x8dc5cc3d. -// -// Solidity: function handleUnionMembershipProof((uint32,uint32) proofHeight, bytes proofBytes, bytes[] kvPath, bytes kvValue) view returns(uint256) -func (_Contract *ContractCallerSession) HandleUnionMembershipProof(proofHeight IICS02ClientMsgsHeight, proofBytes []byte, kvPath [][]byte, kvValue []byte) (*big.Int, error) { - return _Contract.Contract.HandleUnionMembershipProof(&_Contract.CallOpts, proofHeight, proofBytes, kvPath, kvValue) -} - // UpgradeClient is a free data retrieval call binding the contract method 0x8a8e4c5d. // // Solidity: function upgradeClient(bytes ) pure returns() diff --git a/justfile b/justfile index 43686cc..b7208f2 100644 --- a/justfile +++ b/justfile @@ -54,9 +54,7 @@ fixtures: build-operator TRUSTED_HEIGHT=$(($CURRENT_HEIGHT-100)) && \ TARGET_HEIGHT=$(($CURRENT_HEIGHT-10)) && \ echo "For celestia fixtures, trusted block: $TRUSTED_HEIGHT, target block: $TARGET_HEIGHT, from $TENDERMINT_RPC_URL" && \ - parallel --progress --shebang --ungroup -j 8 ::: \ - "RUST_LOG=info ./target/release/operator fixtures membership --key-paths clients/07-tendermint-0/clientState --trusted-block $TRUSTED_HEIGHT -p union -o 'contracts/fixtures/union_membership_fixture.json'" \ - "RUST_LOG=info ./target/release/operator fixtures membership --key-paths clients/07-tendermint-001/clientState --trusted-block $TRUSTED_HEIGHT -p union -o 'contracts/fixtures/union_nonmembership_fixture.json'" \ + parallel --progress --shebang --ungroup -j 6 ::: \ "RUST_LOG=info SP1_PROVER=network ./target/release/operator fixtures update-client --trusted-block $TRUSTED_HEIGHT --target-block $TARGET_HEIGHT -o 'contracts/fixtures/update_client_fixture-plonk.json'" \ "sleep 20 && RUST_LOG=info SP1_PROVER=network ./target/release/operator fixtures update-client --trusted-block $TRUSTED_HEIGHT --target-block $TARGET_HEIGHT -p groth16 -o 'contracts/fixtures/update_client_fixture-groth16.json'" \ "sleep 40 && RUST_LOG=info SP1_PROVER=network ./target/release/operator fixtures update-client-and-membership --key-paths clients/07-tendermint-0/clientState,clients/07-tendermint-001/clientState --trusted-block $TRUSTED_HEIGHT --target-block $TARGET_HEIGHT -o 'contracts/fixtures/uc_and_memberships_fixture-plonk.json'" \ @@ -104,7 +102,7 @@ lint: cargo fmt --all -- --check cargo clippy @echo "Linting the Solidity code..." - forge fmt --check && bun solhint -w 0 -c .solhint.json 'contracts/**/*.sol' && bun natspec-smells --enforceInheritdoc false --include 'contracts/src/**/*.sol' + forge fmt --check && bun solhint -w 0 -c .solhint.json 'contracts/**/*.sol' @echo "Linting the Go code..." cd e2e/interchaintestv8 && golangci-lint run diff --git a/operator/Cargo.toml b/operator/Cargo.toml index 538d7db..6dc333b 100644 --- a/operator/Cargo.toml +++ b/operator/Cargo.toml @@ -25,9 +25,6 @@ sp1-ics07-tendermint-solidity = { workspace = true, features = ["rpc"] } sp1-ics07-tendermint-utils = { workspace = true } sp1-ics07-tendermint-prover = { workspace = true } -unionlabs = { workspace = true } -union-protos = { workspace = true } - alloy-sol-types = { workspace = true } alloy-primitives = { workspace = true } alloy = { workspace = true, features = ["full", "node-bindings"] } diff --git a/operator/src/cli/command.rs b/operator/src/cli/command.rs index a640b96..49163e3 100644 --- a/operator/src/cli/command.rs +++ b/operator/src/cli/command.rs @@ -152,9 +152,9 @@ pub mod fixtures { pub membership: MembershipArgs, /// The proof type. - /// Supported proof types: groth16, plonk, union. - #[clap(long, short = 'p', value_parser = super::parse_proof_type_with_union, default_value = "plonk")] - pub proof_type: ProofTypeWithUnion, + /// Supported proof types: groth16, plonk. + #[clap(long, short = 'p', value_parser = super::parse_proof_type, default_value = "plonk")] + pub proof_type: super::SupportedProofType, } /// The arguments for generic membership proof generation. @@ -221,15 +221,6 @@ pub mod fixtures { #[clap(long, short = 'p', value_parser = super::parse_proof_type, default_value = "plonk")] pub proof_type: super::SupportedProofType, } - - /// The proof type with union. - #[derive(Debug, Clone)] - pub enum ProofTypeWithUnion { - /// The union ics23 proof type. - Union, - /// The supported sp1 proof types. - ProofType(super::SupportedProofType), - } } #[allow(clippy::unnecessary_wraps)] @@ -264,16 +255,3 @@ fn parse_proof_type(input: &str) -> anyhow::Result { _ => Err(anyhow::anyhow!("invalid proof type")), } } - -fn parse_proof_type_with_union(input: &str) -> anyhow::Result { - match input { - "groth16" => Ok(fixtures::ProofTypeWithUnion::ProofType( - SupportedProofType::Groth16, - )), - "plonk" => Ok(fixtures::ProofTypeWithUnion::ProofType( - SupportedProofType::Plonk, - )), - "union" => Ok(fixtures::ProofTypeWithUnion::Union), - _ => Err(anyhow::anyhow!("invalid proof type")), - } -} diff --git a/operator/src/runners/fixtures/membership.rs b/operator/src/runners/fixtures/membership.rs index c05b94c..a9178bc 100644 --- a/operator/src/runners/fixtures/membership.rs +++ b/operator/src/runners/fixtures/membership.rs @@ -1,10 +1,7 @@ //! Runner for generating `membership` fixtures use crate::{ - cli::command::{ - fixtures::{MembershipCmd, ProofTypeWithUnion}, - OutputPath, - }, + cli::command::{fixtures::MembershipCmd, OutputPath}, runners::genesis::SP1ICS07TendermintGenesis, }; use alloy_sol_types::SolValue; @@ -18,18 +15,13 @@ use sp1_ics07_tendermint_prover::{ }; use sp1_ics07_tendermint_solidity::{ IICS07TendermintMsgs::{ClientState, ConsensusState as SolConsensusState}, - IMembershipMsgs::{ - MembershipOutput, MembershipProof, SP1MembershipProof, UnionMembershipProof, - }, + IMembershipMsgs::{MembershipOutput, MembershipProof, SP1MembershipProof}, ISP1Msgs::SP1Proof, }; -use sp1_ics07_tendermint_utils::{ - merkle::convert_tm_to_ics_merkle_proof, rpc::TendermintRpcExt, union::convert_to_union_proof, -}; +use sp1_ics07_tendermint_utils::{merkle::convert_tm_to_ics_merkle_proof, rpc::TendermintRpcExt}; use sp1_sdk::HashableKey; use std::path::PathBuf; use tendermint_rpc::{Client, HttpClient}; -use unionlabs::encoding::{EncodeAs, EthAbi}; /// The fixture data to be used in [`MembershipProgram`] tests. #[serde_with::serde_as] @@ -62,11 +54,7 @@ pub async fn run(args: MembershipCmd) -> anyhow::Result<()> { &trusted_light_block, args.membership.trust_options.trusting_period, args.membership.trust_options.trust_level, - match args.proof_type { - // Genesis requires a proof type, but it is not used in membership in the union case. - ProofTypeWithUnion::Union => SupportedProofType::Plonk, - ProofTypeWithUnion::ProofType(proof_type) => proof_type, - }, + args.proof_type, ) .await?; @@ -74,29 +62,15 @@ pub async fn run(args: MembershipCmd) -> anyhow::Result<()> { let trusted_consensus_state = SolConsensusState::abi_decode(&genesis.trusted_consensus_state, false)?; - let membership_proof = match args.proof_type { - ProofTypeWithUnion::Union => { - run_union_membership( - &tm_rpc_client, - args.membership.base64, - args.membership.key_paths, - args.membership.trusted_block, - trusted_consensus_state, - ) - .await? - } - ProofTypeWithUnion::ProofType(proof_type) => { - run_sp1_membership( - &tm_rpc_client, - args.membership.base64, - args.membership.key_paths, - args.membership.trusted_block, - trusted_consensus_state, - proof_type, - ) - .await? - } - }; + let membership_proof = run_sp1_membership( + &tm_rpc_client, + args.membership.base64, + args.membership.key_paths, + args.membership.trusted_block, + trusted_consensus_state, + args.proof_type, + ) + .await?; let fixture = SP1ICS07MembershipFixture { genesis, @@ -117,54 +91,6 @@ pub async fn run(args: MembershipCmd) -> anyhow::Result<()> { Ok(()) } -/// Generates a union membership proof for the given args -#[allow( - clippy::missing_errors_doc, - clippy::missing_panics_doc, - clippy::module_name_repetitions -)] -pub async fn run_union_membership( - tm_rpc_client: &HttpClient, - is_base64: bool, - key_paths: Vec, - trusted_block: u32, - trusted_consensus_state: SolConsensusState, -) -> anyhow::Result { - assert!( - key_paths.len() == 1, - "Union membership only supports one key-value pair" - ); - - let path: Vec> = if is_base64 { - key_paths[0] - .split('\\') - .map(subtle_encoding::base64::decode) - .collect::>()? - } else { - vec![b"ibc".into(), key_paths[0].as_bytes().to_vec()] - }; - - // the program could support longer key paths, but the operator only supports 2 - // because the current assumption is that the Cosmos SDK will always have 2 - assert_eq!(path.len(), 2); - - let res = tm_rpc_client - .abci_query( - Some(format!("store/{}/key", str::from_utf8(&path[0])?)), - path[1].as_slice(), - // Proof height should be the block before the target block. - Some((trusted_block - 1).into()), - true, - ) - .await?; - - let union_proof = convert_to_union_proof(res.proof.unwrap())?; - Ok(MembershipProof::from(UnionMembershipProof { - ics23Proof: union_proof.encode_as::().into(), - trustedConsensusState: trusted_consensus_state, - })) -} - /// Generates an sp1 membership proof for the given args #[allow( clippy::missing_errors_doc, diff --git a/package.json b/package.json index eb4c847..a27f144 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,7 @@ "dependencies": { "@openzeppelin/contracts": "^5.1.0", "sp1-contracts": "github:succinctlabs/sp1-contracts#275691af9bfaf67158f6df1f4c3c1646eb03eed0", - "solidity-ibc": "github:cosmos/solidity-ibc-eureka#e120d3168bbbde043e3c4a64c43ffebb36766c65", - "union": "github:unionlabs/union#4a6e7229b78de70742cf719fb26409cab3cca631" + "solidity-ibc": "github:cosmos/solidity-ibc-eureka#e120d3168bbbde043e3c4a64c43ffebb36766c65" }, "devDependencies": { "forge-std": "github:foundry-rs/forge-std#v1.9.4", diff --git a/packages/solidity/src/lib.rs b/packages/solidity/src/lib.rs index 98639c2..bfe0fd6 100644 --- a/packages/solidity/src/lib.rs +++ b/packages/solidity/src/lib.rs @@ -129,15 +129,6 @@ impl From for IMembershipMsg } } -impl From for IMembershipMsgs::MembershipProof { - fn from(proof: IMembershipMsgs::UnionMembershipProof) -> Self { - Self { - proofType: 2, - proof: proof.abi_encode().into(), - } - } -} - impl TryFrom for IICS02ClientMsgs::Height { type Error = >::Error; diff --git a/packages/utils/Cargo.toml b/packages/utils/Cargo.toml index e784967..e9309ca 100644 --- a/packages/utils/Cargo.toml +++ b/packages/utils/Cargo.toml @@ -21,6 +21,3 @@ ibc-core-host-types = { workspace = true, features = ["std"] } tendermint = { workspace = true } ibc-core-commitment-types = { workspace = true } alloy = { workspace = true } - -union-protos = { workspace = true } -unionlabs = { workspace = true } diff --git a/packages/utils/src/lib.rs b/packages/utils/src/lib.rs index 710c17b..b879768 100644 --- a/packages/utils/src/lib.rs +++ b/packages/utils/src/lib.rs @@ -5,4 +5,3 @@ pub mod eth; pub mod light_block; pub mod merkle; pub mod rpc; -pub mod union; diff --git a/packages/utils/src/union.rs b/packages/utils/src/union.rs deleted file mode 100644 index a0a24d5..000000000 --- a/packages/utils/src/union.rs +++ /dev/null @@ -1,32 +0,0 @@ -//! Helpers for interacting with union's ics23 library. - -use tendermint::merkle::proof::ProofOps; -use union_protos::{ - cosmos::ics23::v1::CommitmentProof as ProtoCommitmentProof, - ibc::core::commitment::v1::MerkleProof as ProtoMerkleProof, -}; -use unionlabs::{ - cosmos::ics23::commitment_proof::CommitmentProof, - encoding::{DecodeAs, Proto}, - union::ics23::merkle_proof::MerkleProof, -}; - -/// Converts the rpc proof ops to a union proof. -/// -/// # Errors -/// Fails if the proof ops cannot be converted to a union proof. -pub fn convert_to_union_proof(proof_ops: ProofOps) -> anyhow::Result { - let commitment_proofs = proof_ops - .ops - .into_iter() - .map(|op| { - Ok(ProtoCommitmentProof::from(CommitmentProof::decode_as::< - Proto, - >(&op.data)?)) - }) - .collect::>()?; - - Ok(MerkleProof::try_from(ProtoMerkleProof { - proofs: commitment_proofs, - })?) -} diff --git a/remappings.txt b/remappings.txt index 8261c9a..2e390bf 100644 --- a/remappings.txt +++ b/remappings.txt @@ -2,4 +2,3 @@ forge-std/=node_modules/forge-std/src/ @sp1-contracts/=node_modules/sp1-contracts/contracts/src/ solidity-ibc/=node_modules/solidity-ibc/src/ -union-lib/=node_modules/union/evm/contracts/lib/ diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 734a3e9..000000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "nightly-2024-10-11" -components = [ "rustfmt", "rustc-dev" ]