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 3bda386..3878dc9 100755 Binary files a/bun.lockb and b/bun.lockb differ 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" ]