diff --git a/.changelog/unreleased/features/1635-ibc-rs-0.41.0.md b/.changelog/unreleased/features/1635-ibc-rs-0.41.0.md new file mode 100644 index 00000000000..f1d1fddc928 --- /dev/null +++ b/.changelog/unreleased/features/1635-ibc-rs-0.41.0.md @@ -0,0 +1,2 @@ +- Support the memo field of IBC transfer + ([\#1635](https://github.com/anoma/namada/issues/1635)) \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index b4a9ecc6f87..4476f3651dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -352,22 +352,6 @@ dependencies = [ "syn 2.0.15", ] -[[package]] -name = "async-tungstenite" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00550829ef8e2c4115250d0ee43305649b0fa95f78a32ce5b07da0b73d95c5c" -dependencies = [ - "futures-io", - "futures-util", - "log", - "pin-project-lite", - "tokio", - "tokio-rustls 0.22.0", - "tungstenite 0.12.0", - "webpki-roots 0.21.1", -] - [[package]] name = "async_io_stream" version = "0.3.3" @@ -457,12 +441,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - [[package]] name = "base16ct" version = "0.2.0" @@ -511,12 +489,6 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - [[package]] name = "bellman" version = "0.13.1" @@ -606,27 +578,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" -[[package]] -name = "bitcoin" -version = "0.29.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0694ea59225b0c5f3cb405ff3f670e4828358ed26aec49dc352f730f0cb1a8a3" -dependencies = [ - "bech32 0.9.1", - "bitcoin_hashes", - "secp256k1", - "serde 1.0.163", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" -dependencies = [ - "serde 1.0.163", -] - [[package]] name = "bitflags" version = "1.2.1" @@ -789,7 +740,17 @@ name = "borsh" version = "0.9.4" source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" dependencies = [ - "borsh-derive", + "borsh-derive 0.9.4", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", "hashbrown 0.11.2", ] @@ -798,8 +759,21 @@ name = "borsh-derive" version = "0.9.4" source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.9.4", + "borsh-schema-derive-internal 0.9.4", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -815,6 +789,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "borsh-schema-derive-internal" version = "0.9.4" @@ -825,6 +810,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "bs58" version = "0.4.0" @@ -895,12 +891,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "bytecount" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" - [[package]] name = "byteorder" version = "1.4.3" @@ -945,19 +935,6 @@ dependencies = [ "serde 1.0.163", ] -[[package]] -name = "cargo_metadata" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.17", - "serde 1.0.163", - "serde_json", -] - [[package]] name = "cargo_metadata" version = "0.15.4" @@ -1140,7 +1117,7 @@ dependencies = [ "digest 0.10.6", "getrandom 0.2.9", "hmac 0.12.1", - "k256 0.13.1", + "k256", "lazy_static", "serde 1.0.163", "sha2 0.10.6", @@ -1451,18 +1428,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array 0.14.7", - "rand_core 0.6.4", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.5.2" @@ -1621,15 +1586,6 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" -[[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", -] - [[package]] name = "der" version = "0.7.7" @@ -1719,16 +1675,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.3.7" @@ -1740,17 +1686,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "displaydoc" version = "0.2.4" @@ -1812,28 +1747,16 @@ dependencies = [ "memmap2", ] -[[package]] -name = "ecdsa" -version = "0.14.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] - [[package]] name = "ecdsa" version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428" dependencies = [ - "der 0.7.7", + "der", "digest 0.10.6", - "elliptic-curve 0.13.5", - "rfc6979 0.4.0", + "elliptic-curve", + "rfc6979", "signature 2.1.0", "spki", ] @@ -1879,58 +1802,27 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ed25519-dalek-bip32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "hmac 0.12.1", - "sha2 0.10.6", -] - [[package]] name = "either" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" -[[package]] -name = "elliptic-curve" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.6", - "ff 0.12.1", - "generic-array 0.14.7", - "group 0.12.1", - "rand_core 0.6.4", - "sec1 0.3.0", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "elliptic-curve" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.2", + "base16ct", + "crypto-bigint", "digest 0.10.6", "ff 0.13.0", "generic-array 0.14.7", "group 0.13.0", "pkcs8", "rand_core 0.6.4", - "sec1 0.7.2", + "sec1", "subtle 2.4.1", "zeroize", ] @@ -1953,7 +1845,7 @@ dependencies = [ "base64 0.13.1", "bytes", "hex", - "k256 0.13.1", + "k256", "log", "rand 0.8.5", "rlp", @@ -2039,15 +1931,6 @@ dependencies = [ "libc", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check", -] - [[package]] name = "escargot" version = "0.5.7" @@ -2287,13 +2170,13 @@ checksum = "6da5fa198af0d3be20c19192df2bd9590b92ce09a8421e793bec8851270f1b05" dependencies = [ "arrayvec 0.7.2", "bytes", - "cargo_metadata 0.15.4", + "cargo_metadata", "chrono", - "elliptic-curve 0.13.5", + "elliptic-curve", "ethabi", "generic-array 0.14.7", "hex", - "k256 0.13.1", + "k256", "num_enum", "once_cell", "open-fastrlp", @@ -2395,7 +2278,7 @@ dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve 0.13.5", + "elliptic-curve", "eth-keystore", "ethers-core", "hex", @@ -2475,7 +2358,7 @@ dependencies = [ "bincode", "blake2", "blake2b_simd", - "borsh", + "borsh 0.9.4", "digest 0.10.6", "ed25519-dalek", "either", @@ -2986,15 +2869,6 @@ dependencies = [ "fxhash", ] -[[package]] -name = "hdpath" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa5bc9db2c17d2660f53ce217b778d06d68de13d1cd01c0f4e5de4b7918935f" -dependencies = [ - "byteorder", -] - [[package]] name = "hdrhistogram" version = "7.5.2" @@ -3158,22 +3032,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "humantime-serde" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" -dependencies = [ - "humantime", - "serde 1.0.163", -] - [[package]] name = "hyper" version = "0.14.26" @@ -3210,9 +3068,9 @@ dependencies = [ "http", "hyper", "hyper-rustls", - "rustls-native-certs 0.5.0", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", + "tokio-rustls", "tower-service", "webpki 0.21.4", ] @@ -3228,9 +3086,9 @@ dependencies = [ "hyper", "log", "rustls 0.19.1", - "rustls-native-certs 0.5.0", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", + "tokio-rustls", "webpki 0.21.4", "webpki-roots 0.21.1", ] @@ -3285,8 +3143,8 @@ dependencies = [ [[package]] name = "ibc" -version = "0.36.0" -source = "git+https://github.com/heliaxdev/cosmos-ibc-rs.git?rev=634f4ede136d045dd6f1ff8f4984dd0006aa15f0#634f4ede136d045dd6f1ff8f4984dd0006aa15f0" +version = "0.41.0" +source = "git+https://github.com/heliaxdev/cosmos-ibc-rs.git?rev=38a827d3901e590b2935ee5b6b81b4d67c399560#38a827d3901e590b2935ee5b6b81b4d67c399560" dependencies = [ "bytes", "cfg-if 1.0.0", @@ -3317,106 +3175,19 @@ dependencies = [ [[package]] name = "ibc-proto" -version = "0.26.0" -source = "git+https://github.com/heliaxdev/ibc-proto-rs.git?rev=bb16e17a4d9260d5f20516a8eda43fa52377fad2#bb16e17a4d9260d5f20516a8eda43fa52377fad2" -dependencies = [ - "base64 0.13.1", - "bytes", - "flex-error", - "prost", - "serde 1.0.163", - "subtle-encoding", - "tendermint-proto", - "tonic", -] - -[[package]] -name = "ibc-relayer" -version = "0.22.0" -source = "git+https://github.com/heliaxdev/hermes.git?rev=fea6928dace1af3e38c5b223f933c1d07720811d#fea6928dace1af3e38c5b223f933c1d07720811d" -dependencies = [ - "anyhow", - "async-stream", - "bech32 0.9.1", - "bitcoin", - "bs58", - "bytes", - "crossbeam-channel 0.5.8", - "digest 0.10.6", - "dirs-next", - "ed25519", - "ed25519-dalek", - "ed25519-dalek-bip32", - "flex-error", - "futures", - "generic-array 0.14.7", - "hdpath", - "hex", - "http", - "humantime", - "humantime-serde", - "ibc-proto", - "ibc-relayer-types", - "itertools", - "moka", - "num-bigint 0.4.3", - "num-rational 0.4.1", - "prost", - "regex", - "retry", - "ripemd", - "secp256k1", - "semver 1.0.17", - "serde 1.0.163", - "serde_derive", - "serde_json", - "sha2 0.10.6", - "signature 1.6.4", - "strum", - "subtle-encoding", - "tendermint", - "tendermint-light-client", - "tendermint-light-client-verifier", - "tendermint-proto", - "tendermint-rpc", - "thiserror", - "tiny-bip39 1.0.0", - "tiny-keccak", - "tokio", - "toml 0.5.9", - "tonic", - "tracing 0.1.37", - "uuid 1.3.2", -] - -[[package]] -name = "ibc-relayer-types" -version = "0.22.0" -source = "git+https://github.com/heliaxdev/hermes.git?rev=fea6928dace1af3e38c5b223f933c1d07720811d#fea6928dace1af3e38c5b223f933c1d07720811d" +version = "0.30.0" +source = "git+https://github.com/heliaxdev/ibc-proto-rs.git?rev=31892ee743b2af017d5629b2af419ee20b6100c7#31892ee743b2af017d5629b2af419ee20b6100c7" dependencies = [ + "base64 0.21.0", + "borsh 0.10.3", "bytes", - "derive_more", - "dyn-clone", - "erased-serde", "flex-error", - "ibc-proto", - "ics23", - "itertools", - "num-rational 0.4.1", - "primitive-types", + "parity-scale-codec", "prost", - "safe-regex", + "scale-info", "serde 1.0.163", - "serde_derive", - "serde_json", "subtle-encoding", - "tendermint", - "tendermint-light-client-verifier", "tendermint-proto", - "tendermint-rpc", - "tendermint-testgen", - "time", - "uint", ] [[package]] @@ -3519,7 +3290,7 @@ name = "index-set" version = "0.7.1" source = "git+https://github.com/heliaxdev/index-set?tag=v0.7.1#dc24cdbbe3664514d59f1a4c4031863fc565f1c2" dependencies = [ - "borsh", + "borsh 0.9.4", "serde 1.0.163", ] @@ -3553,15 +3324,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "input_buffer" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97967975f448f1a7ddb12b0bc41069d09ed6a1c161a92687e057325db35d413" -dependencies = [ - "bytes", -] - [[package]] name = "instant" version = "0.1.12" @@ -3659,18 +3421,6 @@ dependencies = [ "subtle 2.4.1", ] -[[package]] -name = "k256" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" -dependencies = [ - "cfg-if 1.0.0", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.6", -] - [[package]] name = "k256" version = "0.13.1" @@ -3678,8 +3428,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if 1.0.0", - "ecdsa 0.16.7", - "elliptic-curve 0.13.5", + "ecdsa", + "elliptic-curve", "once_cell", "sha2 0.10.6", "signature 2.1.0", @@ -3930,15 +3680,6 @@ dependencies = [ "libc", ] -[[package]] -name = "mach2" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" -dependencies = [ - "libc", -] - [[package]] name = "madato" version = "0.5.3" @@ -3958,7 +3699,7 @@ name = "masp_note_encryption" version = "0.2.0" source = "git+https://github.com/anoma/masp?rev=252a6059565b125c1444e9e7d0b7c8da0fba8f8f#252a6059565b125c1444e9e7d0b7c8da0fba8f8f" dependencies = [ - "borsh", + "borsh 0.9.4", "chacha20 0.9.1", "chacha20poly1305", "cipher 0.4.4", @@ -3977,7 +3718,7 @@ dependencies = [ "blake2b_simd", "blake2s_simd", "bls12_381", - "borsh", + "borsh 0.9.4", "byteorder", "ff 0.12.1", "fpe", @@ -4186,29 +3927,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94c7128ba23c81f6471141b90f17654f89ef44a56e14b8a4dd0fddfccd655277" -[[package]] -name = "moka" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ca9b167ed904bc89a2f64c4be5014615c26fd9c4ddd2042c6094744c7df11a" -dependencies = [ - "crossbeam-channel 0.5.8", - "crossbeam-epoch", - "crossbeam-utils 0.8.15", - "num_cpus", - "once_cell", - "parking_lot", - "quanta", - "rustc_version 0.4.0", - "scheduled-thread-pool", - "skeptic", - "smallvec", - "tagptr", - "thiserror", - "triomphe", - "uuid 1.3.2", -] - [[package]] name = "more-asserts" version = "0.2.2" @@ -4247,7 +3965,7 @@ dependencies = [ "async-trait", "base58 0.2.0", "bimap", - "borsh", + "borsh 0.9.4", "byte-unit", "circular-queue", "clru", @@ -4289,7 +4007,7 @@ dependencies = [ "tendermint-rpc", "test-log", "thiserror", - "tiny-bip39 0.8.2", + "tiny-bip39", "tiny-hderive", "tokio", "toml 0.5.9", @@ -4320,7 +4038,7 @@ dependencies = [ "bimap", "bit-set", "blake2b-rs", - "borsh", + "borsh 0.9.4", "byte-unit", "byteorder", "bytes", @@ -4405,7 +4123,7 @@ dependencies = [ "ark-serialize", "assert_matches", "bech32 0.8.1", - "borsh", + "borsh 0.9.4", "chrono", "data-encoding", "derivative", @@ -4457,7 +4175,7 @@ dependencies = [ name = "namada_encoding_spec" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "itertools", "lazy_static", "madato", @@ -4469,7 +4187,7 @@ name = "namada_ethereum_bridge" version = "0.21.0" dependencies = [ "assert_matches", - "borsh", + "borsh 0.9.4", "data-encoding", "ethabi", "ethers", @@ -4501,7 +4219,7 @@ dependencies = [ name = "namada_proof_of_stake" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "data-encoding", "derivative", "itertools", @@ -4519,7 +4237,7 @@ dependencies = [ name = "namada_test_utils" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "namada_core", "strum", ] @@ -4530,7 +4248,7 @@ version = "0.21.0" dependencies = [ "assert_cmd", "async-trait", - "borsh", + "borsh 0.9.4", "chrono", "clap", "color-eyre", @@ -4543,8 +4261,6 @@ dependencies = [ "file-serve", "fs_extra", "hyper", - "ibc-relayer", - "ibc-relayer-types", "itertools", "lazy_static", "namada", @@ -4565,6 +4281,7 @@ dependencies = [ "serde_json", "sha2 0.9.9", "tempfile", + "tendermint-light-client", "test-log", "tokio", "toml 0.5.9", @@ -4576,7 +4293,7 @@ dependencies = [ name = "namada_tx_prelude" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "masp_primitives", "namada_core", "namada_macros", @@ -4590,7 +4307,7 @@ dependencies = [ name = "namada_vm_env" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "masp_primitives", "namada_core", ] @@ -4599,7 +4316,7 @@ dependencies = [ name = "namada_vp_prelude" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "namada_core", "namada_macros", "namada_proof_of_stake", @@ -4734,7 +4451,6 @@ dependencies = [ "autocfg", "num-integer", "num-traits 0.2.15", - "serde 1.0.163", ] [[package]] @@ -4810,7 +4526,6 @@ dependencies = [ "num-bigint 0.4.3", "num-integer", "num-traits 0.2.15", - "serde 1.0.163", ] [[package]] @@ -5261,7 +4976,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.7", + "der", "spki", ] @@ -5525,33 +5240,6 @@ dependencies = [ "nix", ] -[[package]] -name = "pulldown-cmark" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f197a544b0c9ab3ae46c359a7ec9cbbb5c7bf97054266fecb7ead794a181d6" -dependencies = [ - "bitflags 1.2.1", - "memchr", - "unicase", -] - -[[package]] -name = "quanta" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" -dependencies = [ - "crossbeam-utils 0.8.15", - "libc", - "mach2", - "once_cell", - "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", - "web-sys", - "winapi", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -5659,15 +5347,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "raw-cpuid" -version = "10.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" -dependencies = [ - "bitflags 1.2.1", -] - [[package]] name = "rayon" version = "1.5.3" @@ -5838,23 +5517,6 @@ dependencies = [ "winreg", ] -[[package]] -name = "retry" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9166d72162de3575f950507683fac47e30f6f2c3836b71b7fbc61aa517c9c5f4" - -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac 0.12.1", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -5889,17 +5551,6 @@ dependencies = [ "digest 0.10.6", ] -[[package]] -name = "ripemd160" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "rkyv" version = "0.7.42" @@ -6085,18 +5736,6 @@ dependencies = [ "security-framework", ] -[[package]] -name = "rustls-native-certs" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" -dependencies = [ - "openssl-probe", - "rustls-pemfile", - "schannel", - "security-framework", -] - [[package]] name = "rustls-pemfile" version = "1.0.3" @@ -6228,15 +5867,6 @@ dependencies = [ "windows-sys 0.42.0", ] -[[package]] -name = "scheduled-thread-pool" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" -dependencies = [ - "parking_lot", -] - [[package]] name = "scoped-tls" version = "1.0.1" @@ -6287,54 +5917,20 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" -[[package]] -name = "sec1" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" -dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array 0.14.7", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "sec1" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ - "base16ct 0.2.0", - "der 0.7.7", + "base16ct", + "der", "generic-array 0.14.7", "pkcs8", "subtle 2.4.1", "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys", - "serde 1.0.163", -] - -[[package]] -name = "secp256k1-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" -dependencies = [ - "cc", -] - [[package]] name = "security-framework" version = "2.3.1" @@ -6509,19 +6105,6 @@ dependencies = [ "yaml-rust", ] -[[package]] -name = "sha-1" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "sha1" version = "0.10.5" @@ -6618,10 +6201,6 @@ name = "signature" version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.6", - "rand_core 0.6.4", -] [[package]] name = "signature" @@ -6645,21 +6224,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc47a29ce97772ca5c927f75bac34866b16d64e07f330c3248e2d7226623901b" -[[package]] -name = "skeptic" -version = "0.13.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" -dependencies = [ - "bytecount", - "cargo_metadata 0.14.2", - "error-chain", - "glob", - "pulldown-cmark", - "tempfile", - "walkdir", -] - [[package]] name = "slab" version = "0.4.8" @@ -6700,7 +6264,7 @@ version = "0.3.1-pre" source = "git+https://github.com/heliaxdev/sparse-merkle-tree?rev=e086b235ed6e68929bf73f617dd61cd17b000a56#e086b235ed6e68929bf73f617dd61cd17b000a56" dependencies = [ "blake2b-rs", - "borsh", + "borsh 0.9.4", "cfg-if 1.0.0", "ics23", "sha2 0.9.9", @@ -6725,7 +6289,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", - "der 0.7.7", + "der", ] [[package]] @@ -6850,12 +6414,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - [[package]] name = "tap" version = "1.0.1" @@ -6903,12 +6461,10 @@ dependencies = [ "ed25519-dalek", "flex-error", "futures", - "k256 0.11.6", "num-traits 0.2.15", "once_cell", "prost", "prost-types", - "ripemd160", "serde 1.0.163", "serde_bytes", "serde_json", @@ -6991,7 +6547,6 @@ version = "0.23.6" source = "git+https://github.com/heliaxdev/tendermint-rs.git?rev=b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7#b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7" dependencies = [ "async-trait", - "async-tungstenite", "bytes", "flex-error", "futures", @@ -7135,25 +6690,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "tiny-bip39" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" -dependencies = [ - "anyhow", - "hmac 0.12.1", - "once_cell", - "pbkdf2 0.11.0", - "rand 0.8.5", - "rustc-hash", - "sha2 0.10.6", - "thiserror", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - [[package]] name = "tiny-hderive" version = "0.3.0" @@ -7264,17 +6800,6 @@ dependencies = [ "webpki 0.21.4", ] -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls 0.20.8", - "tokio", - "webpki 0.22.0", -] - [[package]] name = "tokio-stream" version = "0.1.14" @@ -7308,7 +6833,7 @@ dependencies = [ "futures-util", "log", "tokio", - "tungstenite 0.18.0", + "tungstenite", ] [[package]] @@ -7404,10 +6929,7 @@ dependencies = [ "pin-project", "prost", "prost-derive", - "rustls-native-certs 0.6.3", - "rustls-pemfile", "tokio", - "tokio-rustls 0.23.4", "tokio-stream", "tokio-util 0.7.8", "tower", @@ -7659,37 +7181,12 @@ dependencies = [ "tracing-futures 0.2.5 (git+https://github.com/tokio-rs/tracing/?tag=tracing-0.1.30)", ] -[[package]] -name = "triomphe" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee8098afad3fb0c54a9007aab6804558410503ad676d4633f9c2559a00ac0f" - [[package]] name = "try-lock" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" -[[package]] -name = "tungstenite" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ada8297e8d70872fa9a551d93250a9f407beb9f37ef86494eb20012a2ff7c24" -dependencies = [ - "base64 0.13.1", - "byteorder", - "bytes", - "http", - "httparse", - "input_buffer", - "log", - "rand 0.8.5", - "sha-1", - "url", - "utf-8", -] - [[package]] name = "tungstenite" version = "0.18.0" @@ -7841,9 +7338,6 @@ name = "uuid" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dad5567ad0cf5b760e5665964bec1b47dfd077ba8a2544b513f3556d3d239a2" -dependencies = [ - "getrandom 0.2.9", -] [[package]] name = "valuable" diff --git a/Cargo.toml b/Cargo.toml index c00ffd1ec7f..489a66b1863 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,8 +77,6 @@ flate2 = "1.0.22" fs_extra = "1.2.0" futures = "0.3" git2 = "0.13.25" -ibc-relayer = {git = "https://github.com/heliaxdev/hermes.git", rev = "fea6928dace1af3e38c5b223f933c1d07720811d", default-features = false} -ibc-relayer-types = {git = "https://github.com/heliaxdev/hermes.git", rev = "fea6928dace1af3e38c5b223f933c1d07720811d", default-features = false } ics23 = "0.9.0" index-set = {git = "https://github.com/heliaxdev/index-set", tag = "v0.7.1", features = ["serialize-borsh", "serialize-serde"]} itertools = "0.10.0" @@ -122,6 +120,7 @@ sysinfo = {version = "0.27.8", default-features = false} tar = "0.4.37" tempfile = {version = "3.2.0"} tendermint-config = {git = "https://github.com/heliaxdev/tendermint-rs.git", rev = "b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7"} +tendermint-light-client = {git = "https://github.com/heliaxdev/tendermint-rs.git", rev = "b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7"} test-log = {version = "0.2.7", default-features = false, features = ["trace"]} tiny-bip39 = {git = "https://github.com/anoma/tiny-bip39.git", rev = "bf0f6d8713589b83af7a917366ec31f5275c0e57"} tiny-hderive = "0.3.0" diff --git a/apps/src/lib/cli.rs b/apps/src/lib/cli.rs index efd107082e2..1ed2275f2c5 100644 --- a/apps/src/lib/cli.rs +++ b/apps/src/lib/cli.rs @@ -2492,6 +2492,7 @@ pub mod args { pub const HD_WALLET_DERIVATION_PATH_OPT: ArgOpt = HD_WALLET_DERIVATION_PATH.opt(); pub const HISTORIC: ArgFlag = flag("historic"); + pub const IBC_TRANSFER_MEMO: ArgOpt = arg_opt("memo"); pub const LEDGER_ADDRESS_ABOUT: &str = "Address of a ledger node as \"{scheme}://{host}:{port}\". If the \ scheme is not supplied, it is assumed to be TCP."; @@ -3323,6 +3324,7 @@ pub mod args { channel_id: self.channel_id, timeout_height: self.timeout_height, timeout_sec_offset: self.timeout_sec_offset, + memo: self.memo, tx_code_path: self.tx_code_path.to_path_buf(), } } @@ -3339,6 +3341,7 @@ pub mod args { let channel_id = CHANNEL_ID.parse(matches); let timeout_height = TIMEOUT_HEIGHT.parse(matches); let timeout_sec_offset = TIMEOUT_SEC_OFFSET.parse(matches); + let memo = IBC_TRANSFER_MEMO.parse(matches); let tx_code_path = PathBuf::from(TX_IBC_WASM); Self { tx, @@ -3350,6 +3353,7 @@ pub mod args { channel_id, timeout_height, timeout_sec_offset, + memo, tx_code_path, } } @@ -3373,6 +3377,11 @@ pub mod args { .help("The timeout height of the destination chain."), ) .arg(TIMEOUT_SEC_OFFSET.def().help("The timeout as seconds.")) + .arg( + IBC_TRANSFER_MEMO + .def() + .help("Memo field of ICS20 transfer."), + ) } } diff --git a/core/Cargo.toml b/core/Cargo.toml index 8b58481c170..7c5addad7cc 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -40,7 +40,6 @@ abciplus = [ ibc-mocks = [ "ibc/mocks", - "ibc/std", ] ethers-derive = [ @@ -73,8 +72,8 @@ ferveo = {optional = true, git = "https://github.com/anoma/ferveo", rev = "e5abd ferveo-common = {git = "https://github.com/anoma/ferveo", rev = "e5abd0acc938da90140351a65a26472eb495ce4d"} tpke = {package = "group-threshold-cryptography", optional = true, git = "https://github.com/anoma/ferveo", rev = "e5abd0acc938da90140351a65a26472eb495ce4d"} # TODO using the same version of tendermint-rs as we do here. -ibc = { git = "https://github.com/heliaxdev/cosmos-ibc-rs.git", rev = "634f4ede136d045dd6f1ff8f4984dd0006aa15f0", default-features = false, features = ["serde"], optional = true} -ibc-proto = {git = "https://github.com/heliaxdev/ibc-proto-rs.git", rev = "bb16e17a4d9260d5f20516a8eda43fa52377fad2", default-features = false, optional = true} +ibc = { git = "https://github.com/heliaxdev/cosmos-ibc-rs.git", rev = "38a827d3901e590b2935ee5b6b81b4d67c399560", features = ["serde"], optional = true} +ibc-proto = {git = "https://github.com/heliaxdev/ibc-proto-rs.git", rev = "31892ee743b2af017d5629b2af419ee20b6100c7", default-features = false, optional = true} ics23.workspace = true impl-num-traits = "0.1.2" index-set.workspace = true diff --git a/core/src/ledger/ibc/context/common.rs b/core/src/ledger/ibc/context/common.rs index 4c96c034b53..c3e9b1d08da 100644 --- a/core/src/ledger/ibc/context/common.rs +++ b/core/src/ledger/ibc/context/common.rs @@ -22,12 +22,12 @@ use crate::ibc::core::ics24_host::identifier::{ClientId, ConnectionId}; use crate::ibc::core::ics24_host::path::{ ChannelEndPath, ClientConsensusStatePath, CommitmentPath, Path, SeqSendPath, }; +use crate::ibc::core::timestamp::Timestamp; use crate::ibc::core::ContextError; #[cfg(any(feature = "ibc-mocks-abcipp", feature = "ibc-mocks"))] use crate::ibc::mock::client_state::MockClientState; #[cfg(any(feature = "ibc-mocks-abcipp", feature = "ibc-mocks"))] use crate::ibc::mock::consensus_state::MockConsensusState; -use crate::ibc::timestamp::Timestamp; use crate::ibc_proto::google::protobuf::Any; use crate::ibc_proto::protobuf::Protobuf; use crate::ledger::ibc::storage; @@ -48,11 +48,11 @@ pub trait IbcCommonContext: IbcStorageContext { })?; self.decode_client_state(any) } - Ok(None) => { - Err(ContextError::ClientError(ClientError::ClientNotFound { + Ok(None) => Err(ContextError::ClientError( + ClientError::ClientStateNotFound { client_id: client_id.clone(), - })) - } + }, + )), Err(_) => Err(ContextError::ClientError(ClientError::Other { description: format!( "Reading the client state failed: ID {}", @@ -145,11 +145,11 @@ pub trait IbcCommonContext: IbcStorageContext { }) }), Ok(None) => { - let port_channel_id = + let (port_id, channel_id) = storage::port_channel_id(&key).expect("invalid key"); Err(ContextError::ChannelError(ChannelError::ChannelNotFound { - channel_id: port_channel_id.channel_id, - port_id: port_channel_id.port_id, + channel_id, + port_id, })) } Err(_) => Err(ContextError::ChannelError(ChannelError::Other { diff --git a/core/src/ledger/ibc/context/execution.rs b/core/src/ledger/ibc/context/execution.rs index ae84afa614e..ec0708ce2af 100644 --- a/core/src/ledger/ibc/context/execution.rs +++ b/core/src/ledger/ibc/context/execution.rs @@ -3,8 +3,8 @@ use borsh::{BorshDeserialize, BorshSerialize}; use super::super::{IbcActions, IbcCommonContext}; +use crate::ibc::core::events::IbcEvent; use crate::ibc::core::ics02_client::client_state::ClientState; -use crate::ibc::core::ics02_client::client_type::ClientType; use crate::ibc::core::ics02_client::consensus_state::ConsensusState; use crate::ibc::core::ics02_client::error::ClientError; use crate::ibc::core::ics03_connection::connection::ConnectionEnd; @@ -18,12 +18,11 @@ use crate::ibc::core::ics04_channel::packet::{Receipt, Sequence}; use crate::ibc::core::ics24_host::identifier::{ClientId, ConnectionId}; use crate::ibc::core::ics24_host::path::{ AckPath, ChannelEndPath, ClientConnectionPath, ClientConsensusStatePath, - ClientStatePath, ClientTypePath, CommitmentPath, ConnectionPath, Path, - ReceiptPath, SeqAckPath, SeqRecvPath, SeqSendPath, + ClientStatePath, CommitmentPath, ConnectionPath, Path, ReceiptPath, + SeqAckPath, SeqRecvPath, SeqSendPath, }; +use crate::ibc::core::timestamp::Timestamp; use crate::ibc::core::{ContextError, ExecutionContext, ValidationContext}; -use crate::ibc::events::IbcEvent; -use crate::ibc::timestamp::Timestamp; use crate::ibc::Height; use crate::ibc_proto::protobuf::Protobuf; use crate::ledger::ibc::storage; @@ -33,25 +32,6 @@ impl ExecutionContext for IbcActions<'_, C> where C: IbcCommonContext, { - fn store_client_type( - &mut self, - client_type_path: ClientTypePath, - client_type: ClientType, - ) -> Result<(), ContextError> { - let path = Path::ClientType(client_type_path); - let key = storage::ibc_key(path.to_string()) - .expect("Creating a key for the client state shouldn't fail"); - let bytes = client_type.as_str().as_bytes().to_vec(); - self.ctx.borrow_mut().write(&key, bytes).map_err(|_| { - ContextError::ClientError(ClientError::Other { - description: format!( - "Writing the client state failed: Key {}", - key - ), - }) - }) - } - fn store_client_state( &mut self, client_state_path: ClientStatePath, @@ -60,7 +40,7 @@ where let path = Path::ClientState(client_state_path); let key = storage::ibc_key(path.to_string()) .expect("Creating a key for the client state shouldn't fail"); - let bytes = client_state.encode_vec().expect("encoding shouldn't fail"); + let bytes = client_state.encode_vec(); self.ctx.borrow_mut().write(&key, bytes).map_err(|_| { ContextError::ClientError(ClientError::Other { description: format!( @@ -79,9 +59,7 @@ where let path = Path::ClientConsensusState(consensus_state_path); let key = storage::ibc_key(path.to_string()) .expect("Creating a key for the client state shouldn't fail"); - let bytes = consensus_state - .encode_vec() - .expect("encoding shouldn't fail"); + let bytes = consensus_state.encode_vec(); self.ctx.borrow_mut().write(&key, bytes).map_err(|_| { ContextError::ClientError(ClientError::Other { description: format!( @@ -140,7 +118,7 @@ where host_height: Height, ) -> Result<(), ContextError> { let key = storage::client_update_height_key(&client_id); - let bytes = host_height.encode_vec().expect("encoding shouldn't fail"); + let bytes = host_height.encode_vec(); self.ctx.borrow_mut().write(&key, bytes).map_err(|_| { ContextError::ClientError(ClientError::Other { description: format!( @@ -159,9 +137,7 @@ where let path = Path::Connection(connection_path.clone()); let key = storage::ibc_key(path.to_string()) .expect("Creating a key for the client state shouldn't fail"); - let bytes = connection_end - .encode_vec() - .expect("encoding shouldn't fail"); + let bytes = connection_end.encode_vec(); self.ctx.borrow_mut().write(&key, bytes).map_err(|_| { ContextError::ConnectionError(ConnectionError::Other { description: format!( @@ -321,7 +297,7 @@ where let path = Path::ChannelEnd(path.clone()); let key = storage::ibc_key(path.to_string()) .expect("Creating a key for the client state shouldn't fail"); - let bytes = channel_end.encode_vec().expect("encoding shouldn't fail"); + let bytes = channel_end.encode_vec(); self.ctx.borrow_mut().write(&key, bytes).map_err(|_| { ContextError::ChannelError(ChannelError::Other { description: format!( diff --git a/core/src/ledger/ibc/context/router.rs b/core/src/ledger/ibc/context/router.rs index 62d676c3a21..dfa0d9be820 100644 --- a/core/src/ledger/ibc/context/router.rs +++ b/core/src/ledger/ibc/context/router.rs @@ -3,9 +3,8 @@ use std::rc::Rc; use super::super::{IbcActions, IbcCommonContext}; -use crate::ibc::core::context::Router; use crate::ibc::core::ics24_host::identifier::PortId; -use crate::ibc::core::ics26_routing::context::{Module, ModuleId}; +use crate::ibc::core::router::{Module, ModuleId, Router}; impl Router for IbcActions<'_, C> where diff --git a/core/src/ledger/ibc/context/transfer_mod.rs b/core/src/ledger/ibc/context/transfer_mod.rs index 8280f7c36b1..0684432dab2 100644 --- a/core/src/ledger/ibc/context/transfer_mod.rs +++ b/core/src/ledger/ibc/context/transfer_mod.rs @@ -3,7 +3,6 @@ use std::cell::RefCell; use std::fmt::Debug; use std::rc::Rc; -use std::str::FromStr; use super::common::IbcCommonContext; use crate::ibc::applications::transfer::coin::PrefixedCoin; @@ -22,6 +21,7 @@ use crate::ibc::applications::transfer::context::{ use crate::ibc::applications::transfer::denom::PrefixedDenom; use crate::ibc::applications::transfer::error::TokenTransferError; use crate::ibc::applications::transfer::MODULE_ID_STR; +use crate::ibc::core::events::IbcEvent; use crate::ibc::core::ics02_client::client_state::ClientState; use crate::ibc::core::ics02_client::consensus_state::ConsensusState; use crate::ibc::core::ics03_connection::connection::ConnectionEnd; @@ -33,9 +33,9 @@ use crate::ibc::core::ics04_channel::context::{ SendPacketExecutionContext, SendPacketValidationContext, }; use crate::ibc::core::ics04_channel::error::{ChannelError, PacketError}; -use crate::ibc::core::ics04_channel::handler::ModuleExtras; -use crate::ibc::core::ics04_channel::msgs::acknowledgement::Acknowledgement; -use crate::ibc::core::ics04_channel::packet::{Packet, Sequence}; +use crate::ibc::core::ics04_channel::packet::{ + Acknowledgement, Packet, Sequence, +}; use crate::ibc::core::ics04_channel::Version; use crate::ibc::core::ics24_host::identifier::{ ChannelId, ClientId, ConnectionId, PortId, @@ -43,10 +43,9 @@ use crate::ibc::core::ics24_host::identifier::{ use crate::ibc::core::ics24_host::path::{ ChannelEndPath, ClientConsensusStatePath, CommitmentPath, SeqSendPath, }; -use crate::ibc::core::ics26_routing::context::{Module, ModuleId}; +use crate::ibc::core::router::{Module, ModuleExtras, ModuleId}; use crate::ibc::core::ContextError; -use crate::ibc::events::IbcEvent; -use crate::ibc::signer::Signer; +use crate::ibc::Signer; use crate::ledger::ibc::storage; use crate::types::address::{Address, InternalAddress}; use crate::types::token; @@ -81,7 +80,7 @@ where /// Get the module ID pub fn module_id(&self) -> ModuleId { - ModuleId::from_str(MODULE_ID_STR).expect("should be parsable") + ModuleId::new(MODULE_ID_STR.to_string()) } } @@ -593,7 +592,7 @@ pub mod testing { impl DummyTransferModule { /// Get the module ID pub fn module_id(&self) -> ModuleId { - ModuleId::from_str(MODULE_ID_STR).expect("should be parsable") + ModuleId::new(MODULE_ID_STR.to_string()) } } diff --git a/core/src/ledger/ibc/context/validation.rs b/core/src/ledger/ibc/context/validation.rs index 9e138208830..9ad3dd26542 100644 --- a/core/src/ledger/ibc/context/validation.rs +++ b/core/src/ledger/ibc/context/validation.rs @@ -4,8 +4,6 @@ use prost::Message; use super::super::{IbcActions, IbcCommonContext}; use crate::ibc::clients::ics07_tendermint::consensus_state::ConsensusState as TmConsensusState; -#[cfg(any(feature = "ibc-mocks-abcipp", feature = "ibc-mocks"))] -use crate::ibc::core::ics02_client::client_state::downcast_client_state; use crate::ibc::core::ics02_client::client_state::ClientState; use crate::ibc::core::ics02_client::consensus_state::ConsensusState; use crate::ibc::core::ics02_client::error::ClientError; @@ -25,12 +23,12 @@ use crate::ibc::core::ics24_host::path::{ AckPath, ChannelEndPath, ClientConsensusStatePath, CommitmentPath, Path, ReceiptPath, SeqAckPath, SeqRecvPath, SeqSendPath, }; +use crate::ibc::core::timestamp::Timestamp; use crate::ibc::core::{ContextError, ValidationContext}; use crate::ibc::hosts::tendermint::ValidateSelfClientContext; #[cfg(any(feature = "ibc-mocks-abcipp", feature = "ibc-mocks"))] use crate::ibc::mock::client_state::MockClientState; -use crate::ibc::timestamp::Timestamp; -use crate::ibc::Height; +use crate::ibc::{Height, Signer}; use crate::ibc_proto::google::protobuf::Any; use crate::ibc_proto::protobuf::Protobuf; use crate::ledger::ibc::storage; @@ -260,14 +258,8 @@ where ) -> Result<(), ContextError> { #[cfg(any(feature = "ibc-mocks-abcipp", feature = "ibc-mocks"))] { - let client_state = self - .decode_client_state(counterparty_client_state.clone()) - .map_err(|_| ClientError::Other { - description: "Decoding the client state failed".to_string(), - })?; - - if let Some(_mock) = - downcast_client_state::(client_state.as_ref()) + if MockClientState::try_from(counterparty_client_state.clone()) + .is_ok() { return Ok(()); } @@ -496,6 +488,14 @@ where _ => unreachable!("The parameter should be initialized"), } } + + fn validate_message_signer( + &self, + _signer: &Signer, + ) -> Result<(), ContextError> { + // The signer of a transaction should be validated + Ok(()) + } } impl ValidateSelfClientContext for IbcActions<'_, C> diff --git a/core/src/ledger/ibc/mod.rs b/core/src/ledger/ibc/mod.rs index b56e8ce54a2..75ff6659145 100644 --- a/core/src/ledger/ibc/mod.rs +++ b/core/src/ledger/ibc/mod.rs @@ -9,7 +9,6 @@ use std::fmt::Debug; use std::rc::Rc; use std::time::Duration; -use borsh::BorshDeserialize; pub use context::common::IbcCommonContext; pub use context::storage::{IbcStorageContext, ProofSpec}; pub use context::transfer_mod::{ModuleWrapper, TransferModule}; @@ -18,21 +17,16 @@ use thiserror::Error; use crate::ibc::applications::transfer::denom::TracePrefix; use crate::ibc::applications::transfer::error::TokenTransferError; -use crate::ibc::applications::transfer::msgs::transfer::{ - MsgTransfer, TYPE_URL as MSG_TRANSFER_TYPE_URL, -}; +use crate::ibc::applications::transfer::msgs::transfer::MsgTransfer; use crate::ibc::applications::transfer::packet::PacketData; -use crate::ibc::applications::transfer::relay::send_transfer::{ +use crate::ibc::applications::transfer::{ send_transfer_execute, send_transfer_validate, }; -use crate::ibc::core::context::Router; use crate::ibc::core::ics04_channel::msgs::PacketMsg; use crate::ibc::core::ics23_commitment::specs::ProofSpecs; use crate::ibc::core::ics24_host::identifier::{ChainId as IbcChainId, PortId}; -use crate::ibc::core::ics26_routing::context::{Module, ModuleId}; -use crate::ibc::core::ics26_routing::error::RouterError; -use crate::ibc::core::ics26_routing::msgs::MsgEnvelope; -use crate::ibc::core::{execute, validate}; +use crate::ibc::core::router::{Module, ModuleId, Router}; +use crate::ibc::core::{execute, validate, MsgEnvelope, RouterError}; use crate::ibc_proto::google::protobuf::Any; use crate::types::chain::ChainId; @@ -115,66 +109,32 @@ where /// Execute according to the message in an IBC transaction or VP pub fn execute(&mut self, tx_data: &[u8]) -> Result<(), Error> { - let msg = Any::decode(tx_data).map_err(Error::DecodingData)?; - match msg.type_url.as_str() { - MSG_TRANSFER_TYPE_URL => { - let msg = - MsgTransfer::try_from(msg).map_err(Error::TokenTransfer)?; + let any_msg = Any::decode(tx_data).map_err(Error::DecodingData)?; + match MsgTransfer::try_from(any_msg.clone()) { + Ok(msg) => { let port_id = msg.port_id_on_a.clone(); match self.get_route_mut_by_port(&port_id) { Some(_module) => { let mut module = TransferModule::new(self.ctx.clone()); - // restore the denom if it is hashed - let msg = self.restore_denom(msg)?; send_transfer_execute(&mut module, msg) .map_err(Error::TokenTransfer) } None => Err(Error::NoModule), } } - _ => { - execute(self, msg.clone()).map_err(Error::Execution)?; + Err(_) => { + let envelope = + MsgEnvelope::try_from(any_msg).map_err(Error::Execution)?; + execute(self, envelope.clone()).map_err(Error::Execution)?; // the current ibc-rs execution doesn't store the denom for the // token hash when transfer with MsgRecvPacket - self.store_denom(msg) + self.store_denom(envelope) } } } - /// Restore the denom when it is hashed - fn restore_denom(&self, msg: MsgTransfer) -> Result { - let mut msg = msg; - // lookup the original denom with the IBC token hash - if let Some(token_hash) = - storage::token_hash_from_denom(&msg.token.denom).map_err(|e| { - Error::Denom(format!("Invalid denom: error {}", e)) - })? - { - let denom_key = storage::ibc_denom_key(token_hash); - let denom = match self.ctx.borrow().read(&denom_key) { - Ok(Some(v)) => String::try_from_slice(&v[..]).map_err(|e| { - Error::Denom(format!( - "Decoding the denom string failed: {}", - e - )) - })?, - _ => { - return Err(Error::Denom(format!( - "No original denom: denom_key {}", - denom_key - ))); - } - }; - msg.token.denom = denom; - } - Ok(msg) - } - /// Store the denom when transfer with MsgRecvPacket - fn store_denom(&mut self, msg: Any) -> Result<(), Error> { - let envelope = MsgEnvelope::try_from(msg).map_err(|e| { - Error::Denom(format!("Decoding the message failed: {}", e)) - })?; + fn store_denom(&mut self, envelope: MsgEnvelope) -> Result<(), Error> { match envelope { MsgEnvelope::Packet(PacketMsg::Recv(msg)) => { let data = match serde_json::from_slice::( @@ -205,24 +165,24 @@ where /// Validate according to the message in IBC VP pub fn validate(&self, tx_data: &[u8]) -> Result<(), Error> { - let msg = Any::decode(tx_data).map_err(Error::DecodingData)?; - match msg.type_url.as_str() { - MSG_TRANSFER_TYPE_URL => { - let msg = - MsgTransfer::try_from(msg).map_err(Error::TokenTransfer)?; + let any_msg = Any::decode(tx_data).map_err(Error::DecodingData)?; + match MsgTransfer::try_from(any_msg.clone()) { + Ok(msg) => { let port_id = msg.port_id_on_a.clone(); match self.get_route_by_port(&port_id) { Some(_module) => { let module = TransferModule::new(self.ctx.clone()); - // restore the denom if it is hashed - let msg = self.restore_denom(msg)?; send_transfer_validate(&module, msg) .map_err(Error::TokenTransfer) } None => Err(Error::NoModule), } } - _ => validate(self, msg).map_err(Error::Validation), + Err(_) => { + let envelope = MsgEnvelope::try_from(any_msg) + .map_err(Error::Validation)?; + validate(self, envelope).map_err(Error::Validation) + } } } } diff --git a/core/src/ledger/ibc/storage.rs b/core/src/ledger/ibc/storage.rs index 1a47680f004..9a80766c47d 100644 --- a/core/src/ledger/ibc/storage.rs +++ b/core/src/ledger/ibc/storage.rs @@ -8,14 +8,13 @@ use thiserror::Error; use crate::ibc::core::ics02_client::height::Height; use crate::ibc::core::ics04_channel::packet::Sequence; use crate::ibc::core::ics24_host::identifier::{ - ChannelId, ClientId, ConnectionId, PortChannelId, PortId, + ChannelId, ClientId, ConnectionId, PortId, }; use crate::ibc::core::ics24_host::path::{ AckPath, ChannelEndPath, ClientConnectionPath, ClientConsensusStatePath, - ClientStatePath, ClientTypePath, CommitmentPath, ConnectionPath, PortPath, + ClientStatePath, CommitmentPath, ConnectionPath, Path, PortPath, ReceiptPath, SeqAckPath, SeqRecvPath, SeqSendPath, }; -use crate::ibc::core::ics24_host::Path; use crate::types::address::{Address, InternalAddress, HASH_HEX_LEN}; use crate::types::storage::{self, DbKeySeg, Key, KeySeg}; @@ -70,13 +69,6 @@ pub fn channel_counter_key() -> Key { .expect("Creating a key for the channel counter shouldn't fail") } -/// Returns a key for the client type -pub fn client_type_key(client_id: &ClientId) -> Key { - let path = Path::ClientType(ClientTypePath(client_id.clone())); - ibc_key(path.to_string()) - .expect("Creating a key for the client state shouldn't fail") -} - /// Returns a key for the client state pub fn client_state_key(client_id: &ClientId) -> Key { let path = Path::ClientState(ClientStatePath(client_id.clone())); @@ -117,11 +109,9 @@ pub fn connection_key(conn_id: &ConnectionId) -> Key { } /// Returns a key for the channel end -pub fn channel_key(port_channel_id: &PortChannelId) -> Key { - let path = Path::ChannelEnd(ChannelEndPath( - port_channel_id.port_id.clone(), - port_channel_id.channel_id.clone(), - )); +pub fn channel_key(port_id: &PortId, channel_id: &ChannelId) -> Key { + let path = + Path::ChannelEnd(ChannelEndPath(port_id.clone(), channel_id.clone())); ibc_key(path.to_string()) .expect("Creating a key for the channel shouldn't fail") } @@ -141,31 +131,22 @@ pub fn port_key(port_id: &PortId) -> Key { } /// Returns a key for nextSequenceSend -pub fn next_sequence_send_key(port_channel_id: &PortChannelId) -> Key { - let path = Path::SeqSend(SeqSendPath( - port_channel_id.port_id.clone(), - port_channel_id.channel_id.clone(), - )); +pub fn next_sequence_send_key(port_id: &PortId, channel_id: &ChannelId) -> Key { + let path = Path::SeqSend(SeqSendPath(port_id.clone(), channel_id.clone())); ibc_key(path.to_string()) .expect("Creating a key for nextSequenceSend shouldn't fail") } /// Returns a key for nextSequenceRecv -pub fn next_sequence_recv_key(port_channel_id: &PortChannelId) -> Key { - let path = Path::SeqRecv(SeqRecvPath( - port_channel_id.port_id.clone(), - port_channel_id.channel_id.clone(), - )); +pub fn next_sequence_recv_key(port_id: &PortId, channel_id: &ChannelId) -> Key { + let path = Path::SeqRecv(SeqRecvPath(port_id.clone(), channel_id.clone())); ibc_key(path.to_string()) .expect("Creating a key for nextSequenceRecv shouldn't fail") } /// Returns a key for nextSequenceAck -pub fn next_sequence_ack_key(port_channel_id: &PortChannelId) -> Key { - let path = Path::SeqAck(SeqAckPath( - port_channel_id.port_id.clone(), - port_channel_id.channel_id.clone(), - )); +pub fn next_sequence_ack_key(port_id: &PortId, channel_id: &ChannelId) -> Key { + let path = Path::SeqAck(SeqAckPath(port_id.clone(), channel_id.clone())); ibc_key(path.to_string()) .expect("Creating a key for nextSequenceAck shouldn't fail") } @@ -295,7 +276,7 @@ pub fn connection_id(key: &Key) -> Result { /// Returns a pair of port ID and channel ID from the given channel/sequence key /// `#IBC//ports//channels/` -pub fn port_channel_id(key: &Key) -> Result { +pub fn port_channel_id(key: &Key) -> Result<(PortId, ChannelId)> { match &key.segments[..] { [ DbKeySeg::AddressSeg(addr), @@ -316,10 +297,7 @@ pub fn port_channel_id(key: &Key) -> Result { .map_err(|e| Error::InvalidKey(e.to_string()))?; let channel_id = ChannelId::from_str(&channel.raw()) .map_err(|e| Error::InvalidKey(e.to_string()))?; - Ok(PortChannelId { - port_id, - channel_id, - }) + Ok((port_id, channel_id)) } _ => Err(Error::InvalidKey(format!( "The key doesn't have port ID and channel ID: Key {}", diff --git a/core/src/types/address.rs b/core/src/types/address.rs index 0576511cec4..d587d202804 100644 --- a/core/src/types/address.rs +++ b/core/src/types/address.rs @@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; use thiserror::Error; -use crate::ibc::signer::Signer; +use crate::ibc::Signer; use crate::types::ethereum_events::EthAddress; use crate::types::key; use crate::types::key::PublicKeyHash; diff --git a/core/src/types/ibc.rs b/core/src/types/ibc.rs index 5e7514aea3d..7a412ecb054 100644 --- a/core/src/types/ibc.rs +++ b/core/src/types/ibc.rs @@ -52,7 +52,9 @@ mod ibc_rs_conversion { use thiserror::Error; use super::IbcEvent; - use crate::ibc::events::{Error as IbcEventError, IbcEvent as RawIbcEvent}; + use crate::ibc::core::events::{ + Error as IbcEventError, IbcEvent as RawIbcEvent, + }; use crate::tendermint_proto::abci::Event as AbciEvent; #[allow(missing_docs)] @@ -69,7 +71,7 @@ mod ibc_rs_conversion { type Error = Error; fn try_from(e: RawIbcEvent) -> Result { - let event_type = e.event_type().as_str().to_string(); + let event_type = e.event_type().to_string(); let abci_event = AbciEvent::try_from(e).map_err(Error::IbcEvent)?; let attributes: HashMap<_, _> = abci_event .attributes diff --git a/shared/src/ledger/args.rs b/shared/src/ledger/args.rs index 309ef97b945..2d426d55103 100644 --- a/shared/src/ledger/args.rs +++ b/shared/src/ledger/args.rs @@ -159,6 +159,8 @@ pub struct TxIbcTransfer { pub timeout_height: Option, /// Timeout timestamp offset pub timeout_sec_offset: Option, + /// Memo + pub memo: Option, /// Path to the TX WASM code file pub tx_code_path: PathBuf, } diff --git a/shared/src/ledger/events/log/dumb_queries.rs b/shared/src/ledger/events/log/dumb_queries.rs index 08dad37cd05..5ff7c8d54f4 100644 --- a/shared/src/ledger/events/log/dumb_queries.rs +++ b/shared/src/ledger/events/log/dumb_queries.rs @@ -67,7 +67,6 @@ impl QueryMatcher { use crate::ibc::core::ics02_client::events::{ CLIENT_ID_ATTRIBUTE_KEY, CONSENSUS_HEIGHTS_ATTRIBUTE_KEY, }; - use crate::ibc::events::IbcEventType; let mut attributes = HashMap::new(); attributes @@ -79,9 +78,7 @@ impl QueryMatcher { .to_string(), ); Self { - event_type: EventType::Ibc( - IbcEventType::UpdateClient.as_str().to_string(), - ), + event_type: EventType::Ibc("update_client".to_string()), attributes, } } diff --git a/shared/src/ledger/ibc/vp/mod.rs b/shared/src/ledger/ibc/vp/mod.rs index d6b1ef62fab..ec106880667 100644 --- a/shared/src/ledger/ibc/vp/mod.rs +++ b/shared/src/ledger/ibc/vp/mod.rs @@ -298,25 +298,30 @@ mod tests { use super::super::storage::{ ack_key, calc_hash, channel_counter_key, channel_key, client_connections_key, client_counter_key, client_state_key, - client_type_key, client_update_height_key, client_update_timestamp_key, - commitment_key, connection_counter_key, connection_key, - consensus_state_key, ibc_denom_key, next_sequence_ack_key, - next_sequence_recv_key, next_sequence_send_key, receipt_key, + client_update_height_key, client_update_timestamp_key, commitment_key, + connection_counter_key, connection_key, consensus_state_key, + ibc_denom_key, next_sequence_ack_key, next_sequence_recv_key, + next_sequence_send_key, receipt_key, }; use super::{get_dummy_header, *}; use crate::core::ledger::storage::testing::TestWlStorage; - use crate::core::types::address::testing::established_address_1; + use crate::core::types::address::testing::{ + established_address_1, established_address_2, + }; use crate::core::types::address::{nam, InternalAddress}; use crate::core::types::storage::Epoch; use crate::ibc::applications::transfer::acknowledgement::TokenTransferAcknowledgement; use crate::ibc::applications::transfer::coin::PrefixedCoin; use crate::ibc::applications::transfer::denom::TracePrefix; use crate::ibc::applications::transfer::events::{ - AckEvent, DenomTraceEvent, TimeoutEvent, TransferEvent, + AckEvent, DenomTraceEvent, RecvEvent, TimeoutEvent, TransferEvent, }; use crate::ibc::applications::transfer::msgs::transfer::MsgTransfer; use crate::ibc::applications::transfer::packet::PacketData; use crate::ibc::applications::transfer::VERSION; + use crate::ibc::core::events::{ + IbcEvent as RawIbcEvent, MessageEvent, ModuleEvent, + }; use crate::ibc::core::ics02_client::client_state::ClientState; use crate::ibc::core::ics02_client::events::{CreateClient, UpdateClient}; use crate::ibc::core::ics02_client::msgs::create_client::MsgCreateClient; @@ -345,36 +350,30 @@ mod tests { OpenTry as ChanOpenTry, ReceivePacket, SendPacket, TimeoutPacket, WriteAcknowledgement, }; - use crate::ibc::core::ics04_channel::msgs::acknowledgement::{ - Acknowledgement, MsgAcknowledgement, + use crate::ibc::core::ics04_channel::msgs::{ + MsgAcknowledgement, MsgChannelOpenAck, MsgChannelOpenConfirm, + MsgChannelOpenInit, MsgChannelOpenTry, MsgRecvPacket, MsgTimeout, + MsgTimeoutOnClose, + }; + use crate::ibc::core::ics04_channel::packet::{ + Acknowledgement, Packet, Sequence, }; - use crate::ibc::core::ics04_channel::msgs::chan_open_ack::MsgChannelOpenAck; - use crate::ibc::core::ics04_channel::msgs::chan_open_confirm::MsgChannelOpenConfirm; - use crate::ibc::core::ics04_channel::msgs::chan_open_init::MsgChannelOpenInit; - use crate::ibc::core::ics04_channel::msgs::chan_open_try::MsgChannelOpenTry; - use crate::ibc::core::ics04_channel::msgs::recv_packet::MsgRecvPacket; - use crate::ibc::core::ics04_channel::msgs::timeout::MsgTimeout; - use crate::ibc::core::ics04_channel::msgs::timeout_on_close::MsgTimeoutOnClose; - use crate::ibc::core::ics04_channel::packet::{Packet, Sequence}; use crate::ibc::core::ics04_channel::timeout::TimeoutHeight; use crate::ibc::core::ics04_channel::Version as ChanVersion; use crate::ibc::core::ics23_commitment::commitment::{ CommitmentPrefix, CommitmentProofBytes, }; use crate::ibc::core::ics24_host::identifier::{ - ChannelId, ClientId, ConnectionId, PortChannelId, PortId, + ChannelId, ClientId, ConnectionId, PortId, }; - use crate::ibc::events::{IbcEvent as RawIbcEvent, ModuleEvent}; + use crate::ibc::core::timestamp::Timestamp; + use crate::ibc::core::Msg; use crate::ibc::mock::client_state::{ client_type, MockClientState, MOCK_CLIENT_TYPE, }; use crate::ibc::mock::consensus_state::MockConsensusState; use crate::ibc::mock::header::MockHeader; - use crate::ibc::signer::Signer; - use crate::ibc::timestamp::Timestamp; - use crate::ibc::tx_msg::Msg; use crate::ibc::Height; - use crate::ibc_proto::cosmos::base::v1beta1::Coin; use crate::ibc_proto::google::protobuf::Any; use crate::ibc_proto::ibc::core::connection::v1::MsgConnectionOpenTry as RawMsgConnectionOpenTry; use crate::ibc_proto::protobuf::Protobuf; @@ -447,12 +446,6 @@ mod tests { fn insert_init_client(wl_storage: &mut TestWlStorage) { // insert a mock client type let client_id = get_client_id(); - let client_type_key = client_type_key(&client_id); - let client_type = client_type().as_str().as_bytes().to_vec(); - wl_storage - .write_log - .write(&client_type_key, client_type) - .expect("write failed"); // insert a mock client state let client_state_key = client_state_key(&get_client_id()); let height = Height::new(0, 1).unwrap(); @@ -461,8 +454,7 @@ mod tests { timestamp: Timestamp::now(), }; let client_state = MockClientState::new(header); - let bytes = Protobuf::::encode_vec(&client_state) - .expect("encoding failed"); + let bytes = Protobuf::::encode_vec(&client_state); wl_storage .write_log .write(&client_state_key, bytes) @@ -470,8 +462,7 @@ mod tests { // insert a mock consensus state let consensus_key = consensus_state_key(&client_id, height); let consensus_state = MockConsensusState::new(header); - let bytes = Protobuf::::encode_vec(&consensus_state) - .expect("encoding failed"); + let bytes = Protobuf::::encode_vec(&consensus_state); wl_storage .write_log .write(&consensus_key, bytes) @@ -499,10 +490,7 @@ mod tests { Height::new(0, host_height.0).expect("invalid height"); wl_storage .write_log - .write( - &client_update_height_key, - host_height.encode_vec().expect("encoding failed"), - ) + .write(&client_update_height_key, host_height.encode_vec()) .expect("write failed"); wl_storage.write_log.commit_tx(); } @@ -511,13 +499,6 @@ mod tests { ConnectionId::new(0) } - fn get_port_channel_id() -> PortChannelId { - PortChannelId { - port_id: get_port_id(), - channel_id: get_channel_id(), - } - } - fn get_port_id() -> PortId { PortId::transfer() } @@ -534,6 +515,7 @@ mod tests { vec![ConnVersion::default()], Duration::new(0, 0), ) + .unwrap() } fn get_conn_counterparty() -> ConnCounterparty { @@ -557,6 +539,7 @@ mod tests { vec![get_connection_id()], ChanVersion::new(VERSION.to_string()), ) + .unwrap() } fn get_channel_counterparty() -> ChanCounterparty { @@ -603,14 +586,7 @@ mod tests { sequence: Sequence, counterparty: &ChanCounterparty, ) -> Packet { - let coin: PrefixedCoin = - msg.token.clone().try_into().expect("invalid token"); - let packet_data = PacketData { - token: coin, - sender: msg.sender.clone(), - receiver: msg.receiver.clone(), - }; - let data = serde_json::to_vec(&packet_data) + let data = serde_json::to_vec(&msg.packet_data) .expect("Encoding PacketData failed"); Packet { @@ -660,27 +636,17 @@ mod tests { timestamp: Timestamp::now(), }; let client_id = get_client_id(); - // client type - let client_type_key = client_type_key(&client_id); - let client_type = client_type(); - let bytes = client_type.as_str().as_bytes().to_vec(); - wl_storage - .write_log - .write(&client_type_key, bytes) - .expect("write failed"); - keys_changed.insert(client_type_key); // message let client_state = MockClientState::new(header); let consensus_state = MockConsensusState::new(header); let msg = MsgCreateClient { client_state: client_state.into(), consensus_state: consensus_state.clone().into(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // client state let client_state_key = client_state_key(&get_client_id()); - let bytes = Protobuf::::encode_vec(&client_state) - .expect("encoding failed"); + let bytes = Protobuf::::encode_vec(&client_state); wl_storage .write_log .write(&client_state_key, bytes) @@ -688,8 +654,7 @@ mod tests { keys_changed.insert(client_state_key); // client consensus let consensus_key = consensus_state_key(&client_id, height); - let bytes = Protobuf::::encode_vec(&consensus_state) - .expect("encoding failed"); + let bytes = Protobuf::::encode_vec(&consensus_state); wl_storage .write_log .write(&consensus_key, bytes) @@ -720,10 +685,7 @@ mod tests { Height::new(0, host_height.0).expect("invalid height"); wl_storage .write_log - .write( - &client_update_height_key, - host_height.encode_vec().expect("encoding failed"), - ) + .write(&client_update_height_key, host_height.encode_vec()) .expect("write failed"); keys_changed.insert(client_update_height_key); // client counter @@ -733,10 +695,10 @@ mod tests { let event = RawIbcEvent::CreateClient(CreateClient::new( client_id, - client_type, + client_type(), client_state.latest_height(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Client); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -803,23 +765,22 @@ mod tests { height, timestamp: Timestamp::now(), }; - let client_id = get_client_id(); - // insert only client type - let client_type_key = client_type_key(&client_id); - let client_type = client_type(); - let bytes = client_type.as_str().as_bytes().to_vec(); + // insert only client state + let client_state = MockClientState::new(header); + let client_state_key = client_state_key(&get_client_id()); + let bytes = Protobuf::::encode_vec(&client_state); wl_storage .write_log - .write(&client_type_key, bytes) + .write(&client_state_key, bytes) .expect("write failed"); - keys_changed.insert(client_type_key); + keys_changed.insert(client_state_key); let client_state = MockClientState::new(header); let consensus_state = MockConsensusState::new(header); // make a correct message let msg = MsgCreateClient { client_state: client_state.into(), consensus_state: consensus_state.into(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; let tx_index = TxIndex::default(); @@ -887,12 +848,11 @@ mod tests { let msg = MsgUpdateClient { client_id: client_id.clone(), header: header.into(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // client state let client_state = MockClientState::new(header); - let bytes = Protobuf::::encode_vec(&client_state) - .expect("encoding failed"); + let bytes = Protobuf::::encode_vec(&client_state); wl_storage .write_log .write(&client_state_key, bytes) @@ -901,8 +861,7 @@ mod tests { // consensus state let consensus_key = consensus_state_key(&client_id, height); let consensus_state = MockConsensusState::new(header); - let bytes = Protobuf::::encode_vec(&consensus_state) - .expect("encoding failed"); + let bytes = Protobuf::::encode_vec(&consensus_state); wl_storage .write_log .write(&consensus_key, bytes) @@ -933,10 +892,7 @@ mod tests { Height::new(0, host_height.0).expect("invalid height"); wl_storage .write_log - .write( - &client_update_height_key, - host_height.encode_vec().expect("encoding failed"), - ) + .write(&client_update_height_key, host_height.encode_vec()) .expect("write failed"); keys_changed.insert(client_update_height_key); // event @@ -948,7 +904,7 @@ mod tests { vec![consensus_height], header.into(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Client); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1015,7 +971,7 @@ mod tests { counterparty, version: Some(ConnVersion::default()), delay_period: Duration::new(100, 0), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // insert an INIT connection @@ -1027,8 +983,9 @@ mod tests { msg.counterparty.clone(), vec![msg.version.clone().unwrap()], msg.delay_period, - ); - let bytes = conn.encode_vec().expect("encoding failed"); + ) + .expect("invalid connection"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1053,7 +1010,7 @@ mod tests { msg.client_id_on_a.clone(), msg.counterparty.client_id().clone(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Connection); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1122,7 +1079,7 @@ mod tests { counterparty, version: Some(ConnVersion::default()), delay_period: Duration::new(100, 0), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // insert an Init connection @@ -1134,8 +1091,9 @@ mod tests { msg.counterparty.clone(), vec![msg.version.clone().unwrap()], msg.delay_period, - ); - let bytes = conn.encode_vec().expect("encoding failed"); + ) + .expect("invalid connection"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1246,8 +1204,9 @@ mod tests { msg.counterparty.clone(), msg.versions_on_a.clone(), msg.delay_period, - ); - let bytes = conn.encode_vec().expect("encoding failed"); + ) + .expect("invalid connection"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1273,7 +1232,7 @@ mod tests { msg.counterparty.connection_id().cloned().unwrap(), msg.counterparty.client_id().clone(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Connection); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1324,7 +1283,7 @@ mod tests { // insert an Init connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Init); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1343,7 +1302,7 @@ mod tests { // update the connection to Open let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1370,7 +1329,7 @@ mod tests { proofs_height_on_b: proof_height, consensus_height_of_a_on_b: client_state.latest_height(), version: ConnVersion::default(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // event let event = RawIbcEvent::OpenAckConnection(ConnOpenAck::new( @@ -1379,7 +1338,7 @@ mod tests { msg.conn_id_on_b.clone(), counterparty.client_id().clone(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Connection); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1431,7 +1390,7 @@ mod tests { // insert a TryOpen connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::TryOpen); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1441,7 +1400,7 @@ mod tests { // update the connection to Open let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1454,7 +1413,7 @@ mod tests { conn_id_on_b: get_connection_id(), proof_conn_end_on_a: dummy_proof(), proof_height_on_a: proof_height, - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // event let counterparty = get_conn_counterparty(); @@ -1464,7 +1423,7 @@ mod tests { counterparty.connection_id().cloned().unwrap(), counterparty.client_id().clone(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Connection); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1517,7 +1476,7 @@ mod tests { let conn_id = get_connection_id(); let conn_key = connection_key(&conn_id); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1540,12 +1499,12 @@ mod tests { connection_hops_on_a: vec![conn_id.clone()], port_id_on_b: get_port_id(), ordering: Order::Unordered, - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), version_proposal: ChanVersion::new(VERSION.to_string()), }; // insert an Init channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let mut counterparty = get_channel_counterparty(); counterparty.channel_id = None; let channel = ChannelEnd::new( @@ -1554,8 +1513,9 @@ mod tests { counterparty.clone(), msg.connection_hops_on_a.clone(), msg.version_proposal.clone(), - ); - let bytes = channel.encode_vec().expect("encoding failed"); + ) + .unwrap(); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -1566,15 +1526,15 @@ mod tests { increment_counter(&mut wl_storage, &chan_counter_key); keys_changed.insert(chan_counter_key); // sequences - let port_channel_id = - PortChannelId::new(get_channel_id(), msg.port_id_on_a.clone()); - let send_key = next_sequence_send_key(&port_channel_id); + let channel_id = get_channel_id(); + let port_id = msg.port_id_on_a.clone(); + let send_key = next_sequence_send_key(&port_id, &channel_id); increment_counter(&mut wl_storage, &send_key); keys_changed.insert(send_key); - let recv_key = next_sequence_recv_key(&port_channel_id); + let recv_key = next_sequence_recv_key(&port_id, &channel_id); increment_counter(&mut wl_storage, &recv_key); keys_changed.insert(recv_key); - let ack_key = next_sequence_ack_key(&port_channel_id); + let ack_key = next_sequence_ack_key(&port_id, &channel_id); increment_counter(&mut wl_storage, &ack_key); keys_changed.insert(ack_key); // event @@ -1585,7 +1545,7 @@ mod tests { conn_id, msg.version_proposal.clone(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1637,7 +1597,7 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) @@ -1668,15 +1628,14 @@ mod tests { proof_chan_end_on_a: dummy_proof(), proof_height_on_a: proof_height, ordering: Order::Unordered, - signer: Signer::from_str("account0").expect("invalid signer"), - previous_channel_id: ChannelId::default().to_string(), + signer: "account0".to_string().into(), version_proposal: ChanVersion::default(), }; // insert a TryOpen channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::TryOpen, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -1687,15 +1646,15 @@ mod tests { increment_counter(&mut wl_storage, &chan_counter_key); keys_changed.insert(chan_counter_key); // sequences - let port_channel_id = - PortChannelId::new(get_channel_id(), msg.port_id_on_a.clone()); - let send_key = next_sequence_send_key(&port_channel_id); + let channel_id = get_channel_id(); + let port_id = msg.port_id_on_a.clone(); + let send_key = next_sequence_send_key(&port_id, &channel_id); increment_counter(&mut wl_storage, &send_key); keys_changed.insert(send_key); - let recv_key = next_sequence_recv_key(&port_channel_id); + let recv_key = next_sequence_recv_key(&port_id, &channel_id); increment_counter(&mut wl_storage, &recv_key); keys_changed.insert(recv_key); - let ack_key = next_sequence_ack_key(&port_channel_id); + let ack_key = next_sequence_ack_key(&port_id, &channel_id); increment_counter(&mut wl_storage, &ack_key); keys_changed.insert(ack_key); // event @@ -1707,7 +1666,7 @@ mod tests { conn_id, msg.version_supported_on_a.clone(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1759,15 +1718,15 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) .expect("write failed"); // insert an Init channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::Init, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -1794,12 +1753,12 @@ mod tests { version_on_b: ChanVersion::new(VERSION.to_string()), proof_chan_end_on_b: dummy_proof(), proof_height_on_b: proof_height, - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // update the channel to Open let channel = get_channel(ChanState::Open, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -1813,7 +1772,7 @@ mod tests { counterparty.channel_id().cloned().unwrap(), get_connection_id(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1865,15 +1824,15 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) .expect("write failed"); // insert a TryOpen channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::TryOpen, Order::Ordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -1897,12 +1856,12 @@ mod tests { chan_id_on_b: get_channel_id(), proof_chan_end_on_a: dummy_proof(), proof_height_on_a: proof_height, - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // update the channel to Open let channel = get_channel(ChanState::Open, Order::Ordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -1917,7 +1876,7 @@ mod tests { counterparty.channel_id().cloned().unwrap(), get_connection_id(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -1970,15 +1929,15 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) .expect("write failed"); // insert an Open channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::Open, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -2007,19 +1966,21 @@ mod tests { let msg = MsgTransfer { port_id_on_a: get_port_id(), chan_id_on_a: get_channel_id(), - token: Coin { - denom: nam().to_string(), - amount: 100u64.to_string(), + packet_data: PacketData { + token: PrefixedCoin { + denom: nam().to_string().parse().unwrap(), + amount: 100u64.into(), + }, + sender: sender.to_string().into(), + receiver: "receiver".to_string().into(), + memo: "memo".to_string().into(), }, - sender: Signer::from_str(&sender.to_string()) - .expect("invalid signer"), - receiver: Signer::from_str("receiver").expect("invalid signer"), - timeout_height_on_b: TimeoutHeight::Never, + timeout_height_on_b: TimeoutHeight::At(Height::new(0, 10).unwrap()), timeout_timestamp_on_b: Timestamp::none(), }; // the sequence send - let seq_key = next_sequence_send_key(&get_port_channel_id()); + let seq_key = next_sequence_send_key(&get_port_id(), &get_channel_id()); let sequence = get_next_seq(&wl_storage, &seq_key); wl_storage .write_log @@ -2040,10 +2001,13 @@ mod tests { keys_changed.insert(commitment_key); // event let transfer_event = TransferEvent { - sender: msg.sender.clone(), - receiver: msg.receiver.clone(), + sender: msg.packet_data.sender.clone(), + receiver: msg.packet_data.receiver.clone(), + amount: msg.packet_data.token.amount, + denom: msg.packet_data.token.denom.clone(), + memo: msg.packet_data.memo.clone(), }; - let event = RawIbcEvent::AppModule(ModuleEvent::from(transfer_event)); + let event = RawIbcEvent::Module(ModuleEvent::from(transfer_event)); wl_storage .write_log .emit_ibc_event(event.try_into().unwrap()); @@ -2052,7 +2016,7 @@ mod tests { Order::Unordered, get_connection_id(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -2102,15 +2066,15 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) .expect("write failed"); // insert an open channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::Open, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -2128,18 +2092,21 @@ mod tests { .unwrap(); // prepare data - let receiver = established_address_1(); + let sender = established_address_1(); + let receiver = established_address_2(); let transfer_msg = MsgTransfer { port_id_on_a: get_port_id(), chan_id_on_a: get_channel_id(), - token: Coin { - denom: nam().to_string(), - amount: 100u64.to_string(), + packet_data: PacketData { + token: PrefixedCoin { + denom: nam().to_string().parse().unwrap(), + amount: 100u64.into(), + }, + sender: sender.to_string().into(), + receiver: receiver.to_string().into(), + memo: "memo".to_string().into(), }, - sender: Signer::from_str("sender").expect("invalid signer"), - receiver: Signer::from_str(&receiver.to_string()) - .expect("invalid signer"), - timeout_height_on_b: TimeoutHeight::Never, + timeout_height_on_b: TimeoutHeight::At(Height::new(0, 10).unwrap()), timeout_timestamp_on_b: Timestamp::none(), }; let counterparty = get_channel_counterparty(); @@ -2153,7 +2120,7 @@ mod tests { packet: packet.clone(), proof_commitment_on_a: dummy_proof(), proof_height_on_a: Height::new(0, 1).unwrap(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // the sequence send @@ -2183,8 +2150,7 @@ mod tests { .expect("write failed"); keys_changed.insert(ack_key); // denom - let mut coin: PrefixedCoin = - transfer_msg.token.try_into().expect("invalid token"); + let mut coin = transfer_msg.packet_data.token; coin.denom.add_trace_prefix(TracePrefix::new( packet.port_id_on_b.clone(), packet.chan_id_on_b.clone(), @@ -2198,12 +2164,23 @@ mod tests { .expect("write failed"); keys_changed.insert(denom_key); // event + let recv_event = RecvEvent { + sender: sender.to_string().into(), + receiver: receiver.to_string().into(), + denom: nam().to_string().parse().unwrap(), + amount: 100u64.into(), + memo: "memo".to_string().into(), + success: true, + }; + let event = RawIbcEvent::Module(ModuleEvent::from(recv_event)); + wl_storage + .write_log + .emit_ibc_event(event.try_into().unwrap()); let denom_trace_event = DenomTraceEvent { trace_hash: Some(trace_hash), denom: coin.denom, }; - let event = - RawIbcEvent::AppModule(ModuleEvent::from(denom_trace_event)); + let event = RawIbcEvent::Module(ModuleEvent::from(denom_trace_event)); wl_storage .write_log .emit_ibc_event(event.try_into().unwrap()); @@ -2212,7 +2189,7 @@ mod tests { Order::Unordered, get_connection_id(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -2225,7 +2202,7 @@ mod tests { acknowledgement, get_connection_id(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -2275,15 +2252,15 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) .expect("write failed"); // insert an Open channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::Open, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -2293,14 +2270,16 @@ mod tests { let transfer_msg = MsgTransfer { port_id_on_a: get_port_id(), chan_id_on_a: get_channel_id(), - token: Coin { - denom: nam().to_string(), - amount: 100u64.to_string(), + packet_data: PacketData { + token: PrefixedCoin { + denom: nam().to_string().parse().unwrap(), + amount: 100u64.into(), + }, + sender: sender.to_string().into(), + receiver: "receiver".to_string().into(), + memo: "memo".to_string().into(), }, - sender: Signer::from_str(&sender.to_string()) - .expect("invalid signer"), - receiver: Signer::from_str("receiver").expect("invalid signer"), - timeout_height_on_b: TimeoutHeight::Never, + timeout_height_on_b: TimeoutHeight::At(Height::new(0, 10).unwrap()), timeout_timestamp_on_b: Timestamp::none(), }; let sequence = 1.into(); @@ -2334,13 +2313,12 @@ mod tests { // prepare data let transfer_ack = TokenTransferAcknowledgement::success(); - let acknowledgement = Acknowledgement::from(transfer_ack.clone()); let msg = MsgAcknowledgement { packet: packet.clone(), - acknowledgement, + acknowledgement: transfer_ack.clone().into(), proof_acked_on_b: dummy_proof(), proof_height_on_b: Height::new(0, 1).unwrap(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // delete the commitment @@ -2353,12 +2331,14 @@ mod tests { let data = serde_json::from_slice::(&packet.data) .expect("decoding packet data failed"); let ack_event = AckEvent { + sender: data.sender, receiver: data.receiver, denom: data.token.denom, amount: data.token.amount, + memo: data.memo, acknowledgement: transfer_ack, }; - let event = RawIbcEvent::AppModule(ModuleEvent::from(ack_event)); + let event = RawIbcEvent::Module(ModuleEvent::from(ack_event)); wl_storage .write_log .emit_ibc_event(event.try_into().unwrap()); @@ -2367,7 +2347,7 @@ mod tests { Order::Unordered, get_connection_id(), )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -2417,15 +2397,15 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) .expect("write failed"); // insert an Open channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::Open, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -2439,17 +2419,18 @@ mod tests { .write(&balance_key, amount.try_to_vec().unwrap()) .expect("write failed"); // commitment - let sender = established_address_1(); let transfer_msg = MsgTransfer { port_id_on_a: get_port_id(), chan_id_on_a: get_channel_id(), - token: Coin { - denom: nam().to_string(), - amount: 100u64.to_string(), + packet_data: PacketData { + token: PrefixedCoin { + denom: nam().to_string().parse().unwrap(), + amount: 100u64.into(), + }, + sender: established_address_1().to_string().into(), + receiver: "receiver".to_string().into(), + memo: "memo".to_string().into(), }, - sender: Signer::from_str(&sender.to_string()) - .expect("invalid signer"), - receiver: Signer::from_str("receiver").expect("invalid signer"), timeout_height_on_b: TimeoutHeight::Never, timeout_timestamp_on_b: (Timestamp::now() - Duration::new(10, 0)) .unwrap(), @@ -2489,7 +2470,7 @@ mod tests { next_seq_recv_on_b: sequence, proof_unreceived_on_b: dummy_proof(), proof_height_on_b: Height::new(0, 1).unwrap(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // delete the commitment @@ -2505,8 +2486,9 @@ mod tests { refund_receiver: data.sender, refund_denom: data.token.denom, refund_amount: data.token.amount, + memo: data.memo, }; - let event = RawIbcEvent::AppModule(ModuleEvent::from(timeout_event)); + let event = RawIbcEvent::Module(ModuleEvent::from(timeout_event)); wl_storage .write_log .emit_ibc_event(event.try_into().unwrap()); @@ -2514,7 +2496,7 @@ mod tests { packet, Order::Unordered, )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); @@ -2564,15 +2546,15 @@ mod tests { // insert an open connection let conn_key = connection_key(&get_connection_id()); let conn = get_connection(ConnState::Open); - let bytes = conn.encode_vec().expect("encoding failed"); + let bytes = conn.encode_vec(); wl_storage .write_log .write(&conn_key, bytes) .expect("write failed"); // insert an Open channel - let channel_key = channel_key(&get_port_channel_id()); + let channel_key = channel_key(&get_port_id(), &get_channel_id()); let channel = get_channel(ChanState::Open, Order::Unordered); - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); wl_storage .write_log .write(&channel_key, bytes) @@ -2590,14 +2572,16 @@ mod tests { let transfer_msg = MsgTransfer { port_id_on_a: get_port_id(), chan_id_on_a: get_channel_id(), - token: Coin { - denom: nam().to_string(), - amount: 100u64.to_string(), + packet_data: PacketData { + token: PrefixedCoin { + denom: nam().to_string().parse().unwrap(), + amount: 100u64.into(), + }, + sender: sender.to_string().into(), + receiver: "receiver".to_string().into(), + memo: "memo".to_string().into(), }, - sender: Signer::from_str(&sender.to_string()) - .expect("invalid signer"), - receiver: Signer::from_str("receiver").expect("invalid signer"), - timeout_height_on_b: TimeoutHeight::Never, + timeout_height_on_b: TimeoutHeight::At(Height::new(0, 10).unwrap()), timeout_timestamp_on_b: Timestamp::none(), }; let sequence = 1.into(); @@ -2636,7 +2620,7 @@ mod tests { proof_unreceived_on_b: dummy_proof(), proof_close_on_b: dummy_proof(), proof_height_on_b: Height::new(0, 1).unwrap(), - signer: Signer::from_str("account0").expect("invalid signer"), + signer: "account0".to_string().into(), }; // delete the commitment @@ -2652,8 +2636,9 @@ mod tests { refund_receiver: data.sender, refund_denom: data.token.denom, refund_amount: data.token.amount, + memo: data.memo, }; - let event = RawIbcEvent::AppModule(ModuleEvent::from(timeout_event)); + let event = RawIbcEvent::Module(ModuleEvent::from(timeout_event)); wl_storage .write_log .emit_ibc_event(event.try_into().unwrap()); @@ -2661,7 +2646,7 @@ mod tests { packet, Order::Unordered, )); - let message_event = RawIbcEvent::Message(event.event_type()); + let message_event = RawIbcEvent::Message(MessageEvent::Channel); wl_storage .write_log .emit_ibc_event(message_event.try_into().unwrap()); diff --git a/shared/src/ledger/signing.rs b/shared/src/ledger/signing.rs index 430ef6e77ed..5c1e6a975c2 100644 --- a/shared/src/ledger/signing.rs +++ b/shared/src/ledger/signing.rs @@ -21,9 +21,7 @@ use prost::Message; use serde::{Deserialize, Serialize}; use zeroize::Zeroizing; -use crate::ibc::applications::transfer::msgs::transfer::{ - MsgTransfer, TYPE_URL as MSG_TRANSFER_TYPE_URL, -}; +use crate::ibc::applications::transfer::msgs::transfer::MsgTransfer; use crate::ibc_proto::google::protobuf::Any; use crate::ledger::masp::make_asset_type; use crate::ledger::parameters::storage as parameter_storage; @@ -945,7 +943,7 @@ pub async fn to_ledger_vector< ) .await; } else if code_hash == ibc_hash { - let msg = Any::decode( + let any_msg = Any::decode( tx.data() .ok_or_else(|| std::io::Error::from(ErrorKind::InvalidData))? .as_ref(), @@ -955,21 +953,19 @@ pub async fn to_ledger_vector< tv.name = "IBC 0".to_string(); tv.output.push("Type : IBC".to_string()); - match msg.type_url.as_str() { - MSG_TRANSFER_TYPE_URL => { - let transfer = MsgTransfer::try_from(msg).map_err(|_| { - std::io::Error::from(ErrorKind::InvalidData) - })?; + match MsgTransfer::try_from(any_msg.clone()) { + Ok(transfer) => { let transfer_token = format!( "{} {}", - transfer.token.amount, transfer.token.denom + transfer.packet_data.token.amount, + transfer.packet_data.token.denom ); tv.output.extend(vec![ format!("Source port : {}", transfer.port_id_on_a), format!("Source channel : {}", transfer.chan_id_on_a), format!("Token : {}", transfer_token), - format!("Sender : {}", transfer.sender), - format!("Receiver : {}", transfer.receiver), + format!("Sender : {}", transfer.packet_data.sender), + format!("Receiver : {}", transfer.packet_data.receiver), format!( "Timeout height : {}", transfer.timeout_height_on_b @@ -983,8 +979,8 @@ pub async fn to_ledger_vector< format!("Source port : {}", transfer.port_id_on_a), format!("Source channel : {}", transfer.chan_id_on_a), format!("Token : {}", transfer_token), - format!("Sender : {}", transfer.sender), - format!("Receiver : {}", transfer.receiver), + format!("Sender : {}", transfer.packet_data.sender), + format!("Receiver : {}", transfer.packet_data.receiver), format!( "Timeout height : {}", transfer.timeout_height_on_b @@ -996,7 +992,7 @@ pub async fn to_ledger_vector< ]); } _ => { - for line in format!("{:#?}", msg).split('\n') { + for line in format!("{:#?}", any_msg).split('\n') { let stripped = line.trim_start(); tv.output.push(format!("Part : {}", stripped)); tv.output_expert.push(format!("Part : {}", stripped)); diff --git a/shared/src/ledger/tx.rs b/shared/src/ledger/tx.rs index 76365ee10be..aa9050519e4 100644 --- a/shared/src/ledger/tx.rs +++ b/shared/src/ledger/tx.rs @@ -2,7 +2,6 @@ use std::borrow::Cow; use std::collections::{BTreeMap, HashMap, HashSet}; use std::fs::File; -use std::str::FromStr; use std::time::Duration; use borsh::BorshSerialize; @@ -21,7 +20,7 @@ use namada_core::ledger::governance::cli::onchain::{ }; use namada_core::ledger::governance::storage::proposal::ProposalType; use namada_core::ledger::governance::storage::vote::StorageProposalVote; -use namada_core::types::address::{masp, Address}; +use namada_core::types::address::{masp, Address, InternalAddress}; use namada_core::types::dec::Dec; use namada_core::types::token::MaspDenom; use namada_core::types::transaction::governance::{ @@ -35,13 +34,14 @@ use thiserror::Error; use super::rpc::query_wasm_code_hash; use super::signing; use crate::ibc::applications::transfer::msgs::transfer::MsgTransfer; +use crate::ibc::applications::transfer::packet::PacketData; +use crate::ibc::applications::transfer::PrefixedCoin; use crate::ibc::core::ics04_channel::timeout::TimeoutHeight; -use crate::ibc::signer::Signer; -use crate::ibc::timestamp::Timestamp as IbcTimestamp; -use crate::ibc::tx_msg::Msg; +use crate::ibc::core::timestamp::Timestamp as IbcTimestamp; +use crate::ibc::core::Msg; use crate::ibc::Height as IbcHeight; -use crate::ibc_proto::cosmos::base::v1beta1::Coin; use crate::ledger::args::{self, InputAmount}; +use crate::ledger::ibc::storage::ibc_denom_key; use crate::ledger::masp::{ShieldedContext, ShieldedTransfer, ShieldedUtils}; use crate::ledger::rpc::{ self, format_denominated_amount, validate_amount, TxBroadcastData, @@ -1347,6 +1347,7 @@ pub async fn build_ibc_transfer( channel_id, timeout_height, timeout_sec_offset, + memo, tx_code_path, }: args::TxIbcTransfer, gas_payer: &common::PublicKey, @@ -1374,15 +1375,30 @@ pub async fn build_ibc_transfer( .await .unwrap(); + let ibc_denom = match &token { + Address::Internal(InternalAddress::IbcToken(hash)) => { + let ibc_denom_key = ibc_denom_key(hash); + rpc::query_storage_value::(client, &ibc_denom_key) + .await + .ok_or_else(|| Error::TokenDoesNotExist(token.clone()))? + } + _ => token.to_string(), + }; let amount = amount .to_string_native() .split('.') .next() .expect("invalid amount") .to_string(); - let token = Coin { - denom: token.to_string(), - amount, + let token = PrefixedCoin { + denom: ibc_denom.parse().expect("Invalid IBC denom"), + amount: amount.parse().expect("Invalid amount"), + }; + let packet_data = PacketData { + token, + sender: source.to_string().into(), + receiver: receiver.into(), + memo: memo.unwrap_or_default().into(), }; // this height should be that of the destination chain, not this chain @@ -1407,9 +1423,7 @@ pub async fn build_ibc_transfer( let msg = MsgTransfer { port_id_on_a: port_id, chan_id_on_a: channel_id, - token, - sender: Signer::from_str(&source.to_string()).expect("invalid signer"), - receiver: Signer::from_str(&receiver).expect("invalid signer"), + packet_data, timeout_height_on_b: timeout_height, timeout_timestamp_on_b: timeout_timestamp, }; diff --git a/tests/Cargo.toml b/tests/Cargo.toml index b8c4d10c073..674bce95385 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -40,8 +40,6 @@ clap.workspace = true concat-idents.workspace = true derivative.workspace = true hyper = {version = "0.14.20", features = ["full"]} -ibc-relayer-types.workspace = true -ibc-relayer.workspace = true lazy_static.workspace = true num-traits.workspace = true prost.workspace = true @@ -50,6 +48,7 @@ serde_json.workspace = true serde.workspace = true sha2.workspace = true tempfile.workspace = true +tendermint-light-client.workspace = true test-log.workspace = true tokio = {workspace = true, features = ["full"]} tracing-subscriber.workspace = true diff --git a/tests/src/e2e/ibc_tests.rs b/tests/src/e2e/ibc_tests.rs index 52cb6ca9c04..bbc959908fe 100644 --- a/tests/src/e2e/ibc_tests.rs +++ b/tests/src/e2e/ibc_tests.rs @@ -12,56 +12,43 @@ use core::convert::TryFrom; use core::str::FromStr; use core::time::Duration; +use std::collections::HashMap; use color_eyre::eyre::Result; use eyre::eyre; -use ibc_relayer::client_state::AnyClientState; -use ibc_relayer::config::types::{MaxMsgNum, MaxTxSize, Memo}; -use ibc_relayer::config::{AddressType, ChainConfig, GasPrice, PacketFilter}; -use ibc_relayer::event::ibc_event_try_from_abci_event; -use ibc_relayer::keyring::Store; -use ibc_relayer::light_client::tendermint::LightClient as TmLightClient; -use ibc_relayer::light_client::{LightClient, Verified}; -use ibc_relayer_types::clients::ics07_tendermint::client_state::{ +use namada::ibc::applications::transfer::VERSION as ICS20_VERSION; +use namada::ibc::clients::ics07_tendermint::client_state::{ AllowUpdate, ClientState as TmClientState, }; -use ibc_relayer_types::clients::ics07_tendermint::consensus_state::ConsensusState as TmConsensusState; -use ibc_relayer_types::core::ics02_client::msgs::create_client::MsgCreateClient; -use ibc_relayer_types::core::ics02_client::msgs::update_client::MsgUpdateClient; -use ibc_relayer_types::core::ics02_client::trust_threshold::TrustThreshold; -use ibc_relayer_types::core::ics03_connection::connection::Counterparty as ConnCounterparty; -use ibc_relayer_types::core::ics03_connection::msgs::conn_open_ack::MsgConnectionOpenAck; -use ibc_relayer_types::core::ics03_connection::msgs::conn_open_confirm::MsgConnectionOpenConfirm; -use ibc_relayer_types::core::ics03_connection::msgs::conn_open_init::MsgConnectionOpenInit; -use ibc_relayer_types::core::ics03_connection::msgs::conn_open_try::MsgConnectionOpenTry; -use ibc_relayer_types::core::ics03_connection::version::Version as ConnVersion; -use ibc_relayer_types::core::ics04_channel::channel::{ - ChannelEnd, Counterparty as ChanCounterparty, Order as ChanOrder, - State as ChanState, +use namada::ibc::clients::ics07_tendermint::consensus_state::ConsensusState as TmConsensusState; +use namada::ibc::clients::ics07_tendermint::header::Header as IbcTmHeader; +use namada::ibc::clients::ics07_tendermint::trust_threshold::TrustThreshold; +use namada::ibc::core::ics02_client::client_state::ClientState; +use namada::ibc::core::ics02_client::msgs::create_client::MsgCreateClient; +use namada::ibc::core::ics02_client::msgs::update_client::MsgUpdateClient; +use namada::ibc::core::ics03_connection::connection::Counterparty as ConnCounterparty; +use namada::ibc::core::ics03_connection::msgs::conn_open_ack::MsgConnectionOpenAck; +use namada::ibc::core::ics03_connection::msgs::conn_open_confirm::MsgConnectionOpenConfirm; +use namada::ibc::core::ics03_connection::msgs::conn_open_init::MsgConnectionOpenInit; +use namada::ibc::core::ics03_connection::msgs::conn_open_try::MsgConnectionOpenTry; +use namada::ibc::core::ics03_connection::version::Version as ConnVersion; +use namada::ibc::core::ics04_channel::channel::Order as ChanOrder; +use namada::ibc::core::ics04_channel::msgs::{ + MsgAcknowledgement, MsgChannelOpenAck, MsgChannelOpenConfirm, + MsgChannelOpenInit, MsgChannelOpenTry, MsgRecvPacket, MsgTimeout, }; -use ibc_relayer_types::core::ics04_channel::msgs::acknowledgement::MsgAcknowledgement; -use ibc_relayer_types::core::ics04_channel::msgs::chan_open_ack::MsgChannelOpenAck; -use ibc_relayer_types::core::ics04_channel::msgs::chan_open_confirm::MsgChannelOpenConfirm; -use ibc_relayer_types::core::ics04_channel::msgs::chan_open_init::MsgChannelOpenInit; -use ibc_relayer_types::core::ics04_channel::msgs::chan_open_try::MsgChannelOpenTry; -use ibc_relayer_types::core::ics04_channel::msgs::recv_packet::MsgRecvPacket; -use ibc_relayer_types::core::ics04_channel::msgs::timeout::MsgTimeout; -use ibc_relayer_types::core::ics04_channel::packet::Packet; -use ibc_relayer_types::core::ics04_channel::version::Version as ChanVersion; -use ibc_relayer_types::core::ics23_commitment::commitment::{ +use namada::ibc::core::ics04_channel::packet::Packet; +use namada::ibc::core::ics04_channel::timeout::TimeoutHeight; +use namada::ibc::core::ics04_channel::Version as ChanVersion; +use namada::ibc::core::ics23_commitment::commitment::{ CommitmentPrefix, CommitmentProofBytes, }; -use ibc_relayer_types::core::ics23_commitment::merkle::convert_tm_to_ics_merkle_proof; -use ibc_relayer_types::core::ics24_host::identifier::{ - ChainId, ClientId, ConnectionId, PortChannelId, PortId, +use namada::ibc::core::ics23_commitment::merkle::MerkleProof; +use namada::ibc::core::ics24_host::identifier::{ + ChainId, ChannelId, ClientId, ConnectionId, PortId, }; -use ibc_relayer_types::events::IbcEvent; -use ibc_relayer_types::proofs::{ConsensusProof, Proofs}; -use ibc_relayer_types::signer::Signer; -use ibc_relayer_types::tx_msg::Msg; -use ibc_relayer_types::Height; -use namada::ibc::core::ics24_host::identifier::PortChannelId as IbcPortChannelId; -use namada::ibc::Height as IbcHeight; +use namada::ibc::core::Msg; +use namada::ibc::{Height, Signer}; use namada::ibc_proto::google::protobuf::Any; use namada::ledger::events::EventType; use namada::ledger::ibc::storage::*; @@ -70,6 +57,8 @@ use namada::ledger::pos::{self, PosParams}; use namada::ledger::queries::RPC; use namada::ledger::storage::ics23_specs::ibc_proof_specs; use namada::ledger::storage::traits::Sha256Hasher; +use namada::tendermint::abci::Event as AbciEvent; +use namada::tendermint::block::Height as TmHeight; use namada::types::address::{Address, InternalAddress}; use namada::types::key::PublicKey; use namada::types::storage::{BlockHeight, Key}; @@ -82,11 +71,11 @@ use namada_apps::config::ethereum_bridge; use namada_apps::config::genesis::genesis_config::GenesisConfig; use namada_apps::facade::tendermint::block::Header as TmHeader; use namada_apps::facade::tendermint::merkle::proof::Proof as TmProof; -use namada_apps::facade::tendermint::trust_threshold::TrustThresholdFraction; use namada_apps::facade::tendermint_config::net::Address as TendermintAddress; use namada_apps::facade::tendermint_rpc::{Client, HttpClient, Url}; use prost::Message; use setup::constants::*; +use tendermint_light_client::components::io::{Io, ProdIo as TmLightClientIo}; use super::helpers::wait_for_wasm_pre_compile; use super::setup::set_ethereum_bridge_mode; @@ -150,14 +139,15 @@ fn run_ledger_ibc() -> Result<()> { let (conn_id_a, conn_id_b) = connection_handshake(&test_a, &test_b, &client_id_a, &client_id_b)?; - let (port_channel_id_a, port_channel_id_b) = channel_handshake( - &test_a, - &test_b, - &client_id_a, - &client_id_b, - &conn_id_a, - &conn_id_b, - )?; + let ((port_id_a, channel_id_a), (port_id_b, channel_id_b)) = + channel_handshake( + &test_a, + &test_b, + &client_id_a, + &client_id_b, + &conn_id_a, + &conn_id_b, + )?; // Transfer 100000 from the normal account on Chain A to Chain B transfer_token( @@ -165,13 +155,14 @@ fn run_ledger_ibc() -> Result<()> { &test_b, &client_id_a, &client_id_b, - &port_channel_id_a, + &port_id_a, + &channel_id_a, )?; - check_balances(&port_channel_id_b, &test_a, &test_b)?; + check_balances(&port_id_b, &channel_id_b, &test_a, &test_b)?; // Transfer 50000 received over IBC on Chain B - transfer_received_token(&port_channel_id_b, &test_b)?; - check_balances_after_non_ibc(&port_channel_id_b, &test_b)?; + transfer_received_token(&port_id_b, &channel_id_b, &test_b)?; + check_balances_after_non_ibc(&port_id_b, &channel_id_b, &test_b)?; // Transfer 50000 back from the origin-specific account on Chain B to Chain // A @@ -180,14 +171,21 @@ fn run_ledger_ibc() -> Result<()> { &test_b, &client_id_a, &client_id_b, - &port_channel_id_b, + &port_id_b, + &channel_id_b, )?; - check_balances_after_back(&port_channel_id_b, &test_a, &test_b)?; + check_balances_after_back(&port_id_b, &channel_id_b, &test_a, &test_b)?; // Transfer a token and it will time out and refund - transfer_timeout(&test_a, &test_b, &client_id_a, &port_channel_id_a)?; + transfer_timeout( + &test_a, + &test_b, + &client_id_a, + &port_id_a, + &channel_id_a, + )?; // The balance should not be changed - check_balances_after_back(&port_channel_id_b, &test_a, &test_b)?; + check_balances_after_back(&port_id_b, &channel_id_b, &test_a, &test_b)?; // Skip tests for closing a channel and timeout_on_close since the transfer // channel cannot be closed @@ -218,7 +216,7 @@ fn create_client(test_a: &Test, test_b: &Test) -> Result<(ClientId, ClientId)> { let message = MsgCreateClient { client_state: client_state.into(), consensus_state: make_consensus_state(test_b, height)?.into(), - signer: Signer::from_str("test_a").expect("invalid signer"), + signer: signer(), }; let height_a = submit_ibc_tx(test_a, message, ALBERT, ALBERT_KEY, false)?; @@ -228,23 +226,16 @@ fn create_client(test_a: &Test, test_b: &Test) -> Result<(ClientId, ClientId)> { let message = MsgCreateClient { client_state: client_state.into(), consensus_state: make_consensus_state(test_a, height)?.into(), - signer: Signer::from_str("test_b").expect("invalid signer"), + signer: signer(), }; let height_b = submit_ibc_tx(test_b, message, ALBERT, ALBERT_KEY, false)?; - // convert the client IDs from `ibc_relayer_type` to `ibc` - let client_id_a = match get_event(test_a, height_a)? { - Some(IbcEvent::CreateClient(event)) => { - ClientId::from_str(event.client_id().as_str()).unwrap() - } - _ => return Err(eyre!("Transaction failed")), - }; - let client_id_b = match get_event(test_b, height_b)? { - Some(IbcEvent::CreateClient(event)) => { - ClientId::from_str(event.client_id().as_str()).unwrap() - } - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_a, height_a)?; + let client_id_a = get_client_id_from_events(&events) + .ok_or(eyre!("Transaction failed"))?; + let events = get_events(test_b, height_b)?; + let client_id_b = get_client_id_from_events(&events) + .ok_or(eyre!("Transaction failed"))?; // `client_id_a` represents the ID of the B's client on Chain A Ok((client_id_a, client_id_b)) @@ -307,7 +298,7 @@ fn update_client_with_height( target_height: Height, ) -> Result<()> { // check the current(stale) state on the target chain - let key = client_state_key(&target_client_id.as_str().parse().unwrap()); + let key = client_state_key(target_client_id); let (value, _) = query_value_with_proof(target_test, &key, None)?; let cs = match value { Some(v) => Any::decode(&v[..]) @@ -329,7 +320,6 @@ fn update_client_with_height( target_client_id, trusted_height, target_height, - client_state, ) } @@ -339,34 +329,33 @@ fn update_client( client_id: &ClientId, trusted_height: Height, target_height: Height, - client_state: TmClientState, ) -> Result<()> { - let config = dummy_chain_config(src_test); - let pk = get_validator_pk(src_test, &Who::Validator(0)).unwrap(); - let peer_id = id_from_pk(&PublicKey::try_from_pk(&pk).unwrap()); - let mut light_client = - TmLightClient::from_config(&config, peer_id).unwrap(); - let Verified { target, supporting } = light_client - .header_and_minimal_set( - trusted_height, - target_height, - &AnyClientState::Tendermint(client_state), - ) - .map_err(|e| eyre!("Building the header failed: {}", e))?; - - for header in supporting { - let message = MsgUpdateClient { - header: header.into(), - client_id: client_id.clone(), - signer: Signer::from_str("test").expect("invalid signer"), - }; - submit_ibc_tx(target_test, message, ALBERT, ALBERT_KEY, false)?; - } + let io = make_light_client_io(src_test); + + let height = TmHeight::try_from(trusted_height.revision_height()) + .expect("invalid height"); + let trusted_block = io + .fetch_light_block(height.into()) + .expect("the light client couldn't get a light block"); + + let height = TmHeight::try_from(target_height.revision_height()) + .expect("invalid height"); + let target_block = io + .fetch_light_block(height.into()) + .expect("the light client couldn't get a light block"); + + let header = IbcTmHeader { + signed_header: target_block.signed_header, + validator_set: target_block.validators, + trusted_height: Height::new(0, u64::from(trusted_block.height())) + .expect("invalid height"), + trusted_next_validator_set: trusted_block.next_validators, + }; let message = MsgUpdateClient { - header: target.into(), + header: header.into(), client_id: client_id.clone(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: signer(), }; submit_ibc_tx(target_test, message, ALBERT, ALBERT_KEY, false)?; @@ -378,40 +367,16 @@ fn update_client( Ok(()) } -fn dummy_chain_config(test: &Test) -> ChainConfig { +fn make_light_client_io(test: &Test) -> TmLightClientIo { let addr = format!("http://{}", get_actor_rpc(test, &Who::Validator(0))); let rpc_addr = Url::from_str(&addr).unwrap(); - // use only id and rpc_addr - ChainConfig { - id: ChainId::new(test.net.chain_id.as_str().to_string(), 0), - r#type: ibc_relayer::chain::ChainType::CosmosSdk, - rpc_addr: rpc_addr.clone(), - websocket_addr: rpc_addr.clone(), - grpc_addr: rpc_addr, - rpc_timeout: Duration::new(10, 0), - account_prefix: "dummy".to_string(), - key_name: "dummy".to_string(), - key_store_type: Store::default(), - store_prefix: "dummy".to_string(), - default_gas: None, - max_gas: None, - gas_adjustment: None, - gas_multiplier: None, - fee_granter: None, - max_msg_num: MaxMsgNum::default(), - max_tx_size: MaxTxSize::default(), - clock_drift: Duration::new(5, 0), - max_block_time: Duration::new(5, 0), - trusting_period: None, - memo_prefix: Memo::default(), - proof_specs: Some(ibc_proof_specs::().into()), - sequential_batch_tx: true, - trust_threshold: TrustThresholdFraction::ONE_THIRD, - gas_price: GasPrice::new(0.0, "dummy".to_string()), - packet_filter: PacketFilter::default(), - address_type: AddressType::Cosmos, - extension_options: Vec::new(), - } + let rpc_client = HttpClient::new(rpc_addr).unwrap(); + let rpc_timeout = Duration::new(10, 0); + + let pk = get_validator_pk(test, &Who::Validator(0)).unwrap(); + let peer_id = id_from_pk(&PublicKey::try_from_pk(&pk).unwrap()); + + TmLightClientIo::new(peer_id, rpc_client, Some(rpc_timeout)) } fn connection_handshake( @@ -421,68 +386,66 @@ fn connection_handshake( client_id_b: &ClientId, ) -> Result<(ConnectionId, ConnectionId)> { let msg = MsgConnectionOpenInit { - client_id: client_id_a.clone(), + client_id_on_a: client_id_a.clone(), counterparty: ConnCounterparty::new( client_id_b.clone(), None, commitment_prefix(), ), version: Some(ConnVersion::default()), - delay_period: Duration::new(1, 0), - signer: Signer::from_str("test_a").expect("invalid signer"), + delay_period: Duration::new(0, 0), + signer: signer(), }; // OpenInitConnection on Chain A let height = submit_ibc_tx(test_a, msg, ALBERT, ALBERT_KEY, false)?; - let conn_id_a = match get_event(test_a, height)? { - Some(IbcEvent::OpenInitConnection(event)) => event - .connection_id() - .cloned() - .ok_or(eyre!("No connection ID is set"))?, - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_a, height)?; + let conn_id_a = get_connection_id_from_events(&events) + .ok_or(eyre!("No connection ID is set"))?; // get the proofs from Chain A let height_a = query_height(test_a)?; - let (client_state, proofs) = - get_connection_proofs(test_a, client_id_a, &conn_id_a, height_a)?; + let conn_proof = get_connection_proof(test_a, &conn_id_a, height_a)?; + let (client_state, client_state_proof, consensus_proof) = + get_client_states(test_a, client_id_a, height_a)?; let counterparty = ConnCounterparty::new( client_id_a.clone(), Some(conn_id_a.clone()), commitment_prefix(), ); - let msg = MsgConnectionOpenTry { - previous_connection_id: None, - client_id: client_id_b.clone(), - client_state: Some(client_state.into()), + let msg = make_msg_conn_open_try( + client_id_b.clone(), + client_state, counterparty, - counterparty_versions: vec![ConnVersion::default()], - proofs, - delay_period: Duration::new(1, 0), - signer: Signer::from_str("test_b").expect("invalid signer"), - }; + conn_proof, + client_state_proof, + consensus_proof, + height_a, + ); // Update the client state of Chain A on Chain B update_client_with_height(test_a, test_b, client_id_b, height_a)?; // OpenTryConnection on Chain B let height = submit_ibc_tx(test_b, msg, ALBERT, ALBERT_KEY, false)?; - let conn_id_b = match get_event(test_b, height)? { - Some(IbcEvent::OpenTryConnection(event)) => event - .connection_id() - .cloned() - .ok_or(eyre!("No connection ID is set"))?, - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_b, height)?; + let conn_id_b = get_connection_id_from_events(&events) + .ok_or(eyre!("No connection ID is set"))?; // get the A's proofs on Chain B let height_b = query_height(test_b)?; - let (client_state, proofs) = - get_connection_proofs(test_b, client_id_b, &conn_id_b, height_b)?; + let conn_proof = get_connection_proof(test_b, &conn_id_b, height_b)?; + let (client_state, client_state_proof, consensus_proof) = + get_client_states(test_b, client_id_b, height_b)?; + let consensus_height_of_a_on_b = client_state.latest_height(); let msg = MsgConnectionOpenAck { - connection_id: conn_id_a.clone(), - counterparty_connection_id: conn_id_b.clone(), - client_state: Some(client_state.into()), - proofs, + conn_id_on_a: conn_id_a.clone(), + conn_id_on_b: conn_id_b.clone(), + client_state_of_a_on_b: client_state.into(), + proof_conn_end_on_b: conn_proof, + proof_client_state_of_a_on_b: client_state_proof, + proof_consensus_state_of_a_on_b: consensus_proof, + proofs_height_on_b: height_b, + consensus_height_of_a_on_b, version: ConnVersion::default(), - signer: Signer::from_str("test_a").expect("invalid signer"), + signer: signer(), }; // Update the client state of Chain B on Chain A update_client_with_height(test_b, test_a, client_id_a, height_b)?; @@ -491,12 +454,12 @@ fn connection_handshake( // get the proofs on Chain A let height_a = query_height(test_a)?; - let (_, proofs) = - get_connection_proofs(test_a, client_id_a, &conn_id_a, height_a)?; + let proof = get_connection_proof(test_a, &conn_id_a, height_a)?; let msg = MsgConnectionOpenConfirm { - connection_id: conn_id_b.clone(), - proofs, - signer: Signer::from_str("test_b").expect("invalid signer"), + conn_id_on_b: conn_id_b.clone(), + proof_conn_end_on_a: proof, + proof_height_on_a: height_a, + signer: signer(), }; // Update the client state of Chain A on Chain B update_client_with_height(test_a, test_b, client_id_b, height_a)?; @@ -507,31 +470,16 @@ fn connection_handshake( } // get the proofs on the target height -fn get_connection_proofs( +fn get_connection_proof( test: &Test, - client_id: &ClientId, conn_id: &ConnectionId, target_height: Height, -) -> Result<(TmClientState, Proofs)> { +) -> Result { // we need proofs at the height of the previous block let query_height = target_height.decrement().unwrap(); - let key = connection_key(&conn_id.as_str().parse().unwrap()); + let key = connection_key(conn_id); let (_, tm_proof) = query_value_with_proof(test, &key, Some(query_height))?; - let connection_proof = convert_proof(tm_proof)?; - - let (client_state, client_state_proof, consensus_proof) = - get_client_states(test, client_id, query_height)?; - - let proofs = Proofs::new( - connection_proof, - Some(client_state_proof), - Some(consensus_proof), - None, - target_height, - ) - .map_err(|e| eyre!("Creating proofs failed: error {}", e))?; - - Ok((client_state, proofs)) + convert_proof(tm_proof) } fn channel_handshake( @@ -541,80 +489,63 @@ fn channel_handshake( client_id_b: &ClientId, conn_id_a: &ConnectionId, conn_id_b: &ConnectionId, -) -> Result<(PortChannelId, PortChannelId)> { +) -> Result<((PortId, ChannelId), (PortId, ChannelId))> { // OpenInitChannel on Chain A let port_id = PortId::transfer(); - let counterparty = ChanCounterparty::new(port_id.clone(), None); - let channel = ChannelEnd::new( - ChanState::Init, - ChanOrder::Unordered, - counterparty, - vec![conn_id_a.clone()], - ChanVersion::ics20(), - ); + let connection_hops_on_a = vec![conn_id_a.clone()]; + let channel_version = ChanVersion::new(ICS20_VERSION.to_string()); let msg = MsgChannelOpenInit { - port_id: port_id.clone(), - channel, - signer: Signer::from_str("test_a").expect("invalid signer"), + port_id_on_a: port_id.clone(), + connection_hops_on_a, + port_id_on_b: port_id.clone(), + ordering: ChanOrder::Unordered, + signer: signer(), + version_proposal: channel_version.clone(), }; let height = submit_ibc_tx(test_a, msg, ALBERT, ALBERT_KEY, false)?; - let channel_id_a = - match get_event(test_a, height)? { - Some(IbcEvent::OpenInitChannel(event)) => event - .channel_id() - .cloned() - .ok_or(eyre!("No channel ID is set"))?, - _ => return Err(eyre!("Transaction failed")), - }; - let port_channel_id_a = - PortChannelId::new(channel_id_a.clone(), port_id.clone()); + let events = get_events(test_a, height)?; + let channel_id_a = get_channel_id_from_events(&events) + .ok_or(eyre!("Transaction failed"))?; // get the proofs from Chain A let height_a = query_height(test_a)?; - let proofs = - get_channel_proofs(test_a, client_id_a, &port_channel_id_a, height_a)?; - let counterparty = - ChanCounterparty::new(port_id.clone(), Some(channel_id_a.clone())); - let channel = ChannelEnd::new( - ChanState::TryOpen, - ChanOrder::Unordered, - counterparty, - vec![conn_id_b.clone()], - ChanVersion::ics20(), - ); + let proof_chan_end_on_a = + get_channel_proof(test_a, &port_id, &channel_id_a, height_a)?; + let connection_hops_on_b = vec![conn_id_b.clone()]; + #[allow(deprecated)] let msg = MsgChannelOpenTry { - port_id: port_id.clone(), - previous_channel_id: None, - channel, - counterparty_version: ChanVersion::ics20(), - proofs, - signer: Signer::from_str("test_b").expect("invalid signer"), + port_id_on_b: port_id.clone(), + connection_hops_on_b, + port_id_on_a: port_id.clone(), + chan_id_on_a: channel_id_a.clone(), + version_supported_on_a: channel_version.clone(), + proof_chan_end_on_a, + proof_height_on_a: height_a, + ordering: ChanOrder::Unordered, + signer: signer(), + version_proposal: channel_version.clone(), }; + // Update the client state of Chain A on Chain B update_client_with_height(test_a, test_b, client_id_b, height_a)?; // OpenTryChannel on Chain B let height = submit_ibc_tx(test_b, msg, ALBERT, ALBERT_KEY, false)?; - let channel_id_b = match get_event(test_b, height)? { - Some(IbcEvent::OpenTryChannel(event)) => event - .channel_id() - .cloned() - .ok_or(eyre!("No channel ID is set"))?, - _ => return Err(eyre!("Transaction failed")), - }; - let port_channel_id_b = - PortChannelId::new(channel_id_b.clone(), port_id.clone()); + let events = get_events(test_b, height)?; + let channel_id_b = get_channel_id_from_events(&events) + .ok_or(eyre!("Transaction failed"))?; // get the A's proofs on Chain B let height_b = query_height(test_b)?; - let proofs = - get_channel_proofs(test_b, client_id_b, &port_channel_id_b, height_b)?; + let proof_chan_end_on_b = + get_channel_proof(test_b, &port_id, &channel_id_b, height_b)?; let msg = MsgChannelOpenAck { - port_id: port_id.clone(), - channel_id: channel_id_a, - counterparty_channel_id: channel_id_b.clone(), - counterparty_version: ChanVersion::ics20(), - proofs, - signer: Signer::from_str("test_a").expect("invalid signer"), + port_id_on_a: port_id.clone(), + chan_id_on_a: channel_id_a.clone(), + chan_id_on_b: channel_id_b.clone(), + version_on_b: channel_version, + proof_chan_end_on_b, + proof_height_on_b: height_b, + signer: signer(), }; // Update the client state of Chain B on Chain A update_client_with_height(test_b, test_a, client_id_a, height_b)?; @@ -623,49 +554,34 @@ fn channel_handshake( // get the proofs on Chain A let height_a = query_height(test_a)?; - let proofs = - get_channel_proofs(test_a, client_id_a, &port_channel_id_a, height_a)?; + let proof_chan_end_on_a = + get_channel_proof(test_a, &port_id, &channel_id_a, height_a)?; let msg = MsgChannelOpenConfirm { - port_id, - channel_id: channel_id_b, - proofs, - signer: Signer::from_str("test_b").expect("invalid signer"), + port_id_on_b: port_id.clone(), + chan_id_on_b: channel_id_b.clone(), + proof_chan_end_on_a, + proof_height_on_a: height_a, + signer: signer(), }; // Update the client state of Chain A on Chain B update_client_with_height(test_a, test_b, client_id_b, height_a)?; // OpenConfirmChannel on Chain B submit_ibc_tx(test_b, msg, ALBERT, ALBERT_KEY, false)?; - Ok((port_channel_id_a, port_channel_id_b)) + Ok(((port_id.clone(), channel_id_a), (port_id, channel_id_b))) } -fn get_channel_proofs( +fn get_channel_proof( test: &Test, - client_id: &ClientId, - port_channel_id: &PortChannelId, + port_id: &PortId, + channel_id: &ChannelId, target_height: Height, -) -> Result { +) -> Result { // we need proofs at the height of the previous block let query_height = target_height.decrement().unwrap(); - let port_channel_id = IbcPortChannelId::new( - port_channel_id.channel_id.as_str().parse().unwrap(), - port_channel_id.port_id.as_str().parse().unwrap(), - ); - let key = channel_key(&port_channel_id); + let key = channel_key(port_id, channel_id); let (_, tm_proof) = query_value_with_proof(test, &key, Some(query_height))?; - let proof = convert_proof(tm_proof)?; - - let (_, client_state_proof, consensus_proof) = - get_client_states(test, client_id, query_height)?; - - Proofs::new( - proof, - Some(client_state_proof), - Some(consensus_proof), - None, - target_height, - ) - .map_err(|e| eyre!("Creating proofs failed: error {}", e)) + convert_proof(tm_proof) } // get the client state, the proof of the client state, and the proof of the @@ -674,10 +590,12 @@ fn get_client_states( test: &Test, client_id: &ClientId, target_height: Height, // should have been already decremented -) -> Result<(TmClientState, CommitmentProofBytes, ConsensusProof)> { - let key = client_state_key(&client_id.as_str().parse().unwrap()); +) -> Result<(TmClientState, CommitmentProofBytes, CommitmentProofBytes)> { + // we need proofs at the height of the previous block + let query_height = target_height.decrement().unwrap(); + let key = client_state_key(client_id); let (value, tm_proof) = - query_value_with_proof(test, &key, Some(target_height))?; + query_value_with_proof(test, &key, Some(query_height))?; let cs = match value { Some(v) => Any::decode(&v[..]) .map_err(|e| eyre!("Decoding the client state failed: {}", e))?, @@ -693,14 +611,10 @@ fn get_client_states( let client_state_proof = convert_proof(tm_proof)?; let height = client_state.latest_height(); - let ibc_height = IbcHeight::new(0, height.revision_height()).unwrap(); - let key = - consensus_state_key(&client_id.as_str().parse().unwrap(), ibc_height); - let (_, tm_proof) = - query_value_with_proof(test, &key, Some(target_height))?; - let proof = convert_proof(tm_proof)?; - let consensus_proof = ConsensusProof::new(proof, height) - .map_err(|e| eyre!("Creating ConsensusProof failed: error {}", e))?; + let ibc_height = Height::new(0, height.revision_height()).unwrap(); + let key = consensus_state_key(client_id, ibc_height); + let (_, tm_proof) = query_value_with_proof(test, &key, Some(query_height))?; + let consensus_proof = convert_proof(tm_proof)?; Ok((client_state, client_state_proof, consensus_proof)) } @@ -710,7 +624,8 @@ fn transfer_token( test_b: &Test, client_id_a: &ClientId, client_id_b: &ClientId, - port_channel_id_a: &PortChannelId, + port_id_a: &PortId, + channel_id_a: &ChannelId, ) -> Result<()> { // Send a token from Chain A let receiver = find_address(test_b, BERTHA)?; @@ -721,33 +636,34 @@ fn transfer_token( NAM, &Amount::native_whole(100000), ALBERT_KEY, - port_channel_id_a, + port_id_a, + channel_id_a, None, false, )?; - let packet = match get_event(test_a, height)? { - Some(IbcEvent::SendPacket(event)) => event.packet, - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_a, height)?; + let packet = + get_packet_from_events(&events).ok_or(eyre!("Transaction failed"))?; check_ibc_packet_query(test_a, &"send_packet".parse().unwrap(), &packet)?; let height_a = query_height(test_a)?; - let proofs = get_commitment_proof(test_a, &packet, height_a)?; + let proof_commitment_on_a = + get_commitment_proof(test_a, &packet, height_a)?; let msg = MsgRecvPacket { packet, - proofs, - signer: Signer::from_str("test_b").expect("invalid signer"), + proof_commitment_on_a, + proof_height_on_a: height_a, + signer: signer(), }; // Update the client state of Chain A on Chain B update_client_with_height(test_a, test_b, client_id_b, height_a)?; // Receive the token on Chain B let height = submit_ibc_tx(test_b, msg, ALBERT, ALBERT_KEY, false)?; - let (acknowledgement, packet) = match get_event(test_b, height)? { - Some(IbcEvent::WriteAcknowledgement(event)) => { - (event.ack, event.packet) - } - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_b, height)?; + let packet = + get_packet_from_events(&events).ok_or(eyre!("Transaction failed"))?; + let ack = + get_ack_from_events(&events).ok_or(eyre!("Transaction failed"))?; check_ibc_packet_query( test_b, &"write_acknowledgement".parse().unwrap(), @@ -756,12 +672,13 @@ fn transfer_token( // get the proof on Chain B let height_b = query_height(test_b)?; - let proofs = get_ack_proof(test_b, &packet, height_b)?; + let proof_acked_on_b = get_ack_proof(test_b, &packet, height_b)?; let msg = MsgAcknowledgement { packet, - acknowledgement: acknowledgement.into(), - proofs, - signer: Signer::from_str("test_a").expect("invalid signer"), + acknowledgement: ack.try_into().expect("invalid ack"), + proof_acked_on_b, + proof_height_on_b: height_b, + signer: signer(), }; // Update the client state of Chain B on Chain A update_client_with_height(test_b, test_a, client_id_a, height_b)?; @@ -772,15 +689,13 @@ fn transfer_token( } fn transfer_received_token( - port_channel_id: &PortChannelId, + port_id: &PortId, + channel_id: &ChannelId, test: &Test, ) -> Result<()> { - let xan = find_address(test, NAM)?; + let nam = find_address(test, NAM)?; // token received via the port and channel - let denom = format!( - "{}/{}/{}", - port_channel_id.port_id, port_channel_id.channel_id, xan - ); + let denom = format!("{port_id}/{channel_id}/{nam}"); let ibc_token = ibc_token(denom).to_string(); let rpc = get_actor_rpc(test, &Who::Validator(0)); @@ -817,16 +732,14 @@ fn transfer_back( test_b: &Test, client_id_a: &ClientId, client_id_b: &ClientId, - port_channel_id_b: &PortChannelId, + port_id_b: &PortId, + channel_id_b: &ChannelId, ) -> Result<()> { - let xan = find_address(test_b, NAM)?.to_string(); + let nam = find_address(test_b, NAM)?.to_string(); let receiver = find_address(test_a, ALBERT)?; // Chain A was the source for the sent token - let denom_raw = format!( - "{}/{}/{}", - port_channel_id_b.port_id, port_channel_id_b.channel_id, xan - ); + let denom_raw = format!("{}/{}/{}", port_id_b, channel_id_b, nam); let ibc_token = ibc_token(denom_raw).to_string(); // Send a token from Chain B let height = transfer( @@ -836,41 +749,42 @@ fn transfer_back( ibc_token, &Amount::native_whole(50000), BERTHA_KEY, - port_channel_id_b, + port_id_b, + channel_id_b, None, false, )?; - let packet = match get_event(test_b, height)? { - Some(IbcEvent::SendPacket(event)) => event.packet, - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_b, height)?; + let packet = + get_packet_from_events(&events).ok_or(eyre!("Transaction failed"))?; let height_b = query_height(test_b)?; - let proofs = get_commitment_proof(test_b, &packet, height_b)?; + let proof = get_commitment_proof(test_b, &packet, height_b)?; let msg = MsgRecvPacket { packet, - proofs, - signer: Signer::from_str("test_a").expect("invalid signer"), + proof_commitment_on_a: proof, + proof_height_on_a: height_b, + signer: signer(), }; // Update the client state of Chain B on Chain A update_client_with_height(test_b, test_a, client_id_a, height_b)?; // Receive the token on Chain A let height = submit_ibc_tx(test_a, msg, ALBERT, ALBERT_KEY, false)?; - let (acknowledgement, packet) = match get_event(test_a, height)? { - Some(IbcEvent::WriteAcknowledgement(event)) => { - (event.ack, event.packet) - } - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_a, height)?; + let packet = + get_packet_from_events(&events).ok_or(eyre!("Transaction failed"))?; + let ack = + get_ack_from_events(&events).ok_or(eyre!("Transaction failed"))?; // get the proof on Chain A let height_a = query_height(test_a)?; - let proofs = get_ack_proof(test_a, &packet, height_a)?; + let proof_acked_on_b = get_ack_proof(test_a, &packet, height_a)?; let msg = MsgAcknowledgement { packet, - acknowledgement: acknowledgement.into(), - proofs, - signer: Signer::from_str("test_b").expect("invalid signer"), + acknowledgement: ack.try_into().expect("invalid ack"), + proof_acked_on_b, + proof_height_on_b: height_a, + signer: signer(), }; // Update the client state of Chain A on Chain B update_client_with_height(test_a, test_b, client_id_b, height_a)?; @@ -884,7 +798,8 @@ fn transfer_timeout( test_a: &Test, test_b: &Test, client_id_a: &ClientId, - port_channel_id_a: &PortChannelId, + port_id_a: &PortId, + channel_id_a: &ChannelId, ) -> Result<()> { let receiver = find_address(test_b, BERTHA)?; @@ -896,25 +811,27 @@ fn transfer_timeout( NAM, &Amount::native_whole(100000), ALBERT_KEY, - port_channel_id_a, + port_id_a, + channel_id_a, Some(Duration::new(5, 0)), false, )?; - let packet = match get_event(test_a, height)? { - Some(IbcEvent::SendPacket(event)) => event.packet, - _ => return Err(eyre!("Transaction failed")), - }; + let events = get_events(test_a, height)?; + let packet = + get_packet_from_events(&events).ok_or(eyre!("Transaction failed"))?; // wait for the timeout sleep(5); let height_b = query_height(test_b)?; - let proofs = get_receipt_absence_proof(test_b, &packet, height_b)?; + let proof_unreceived_on_b = + get_receipt_absence_proof(test_b, &packet, height_b)?; let msg = MsgTimeout { - next_sequence_recv: packet.sequence, packet, - proofs, - signer: Signer::from_str("test_a").expect("invalid signer"), + next_seq_recv_on_b: 1.into(), // not used + proof_unreceived_on_b, + proof_height_on_b: height_b, + signer: signer(), }; // Update the client state of Chain B on Chain A update_client_with_height(test_b, test_a, client_id_a, height_b)?; @@ -928,57 +845,45 @@ fn get_commitment_proof( test: &Test, packet: &Packet, target_height: Height, -) -> Result { +) -> Result { // we need proofs at the height of the previous block let query_height = target_height.decrement().unwrap(); let key = commitment_key( - &packet.source_port.as_str().parse().unwrap(), - &packet.source_channel.as_str().parse().unwrap(), - u64::from(packet.sequence).into(), + &packet.port_id_on_a, + &packet.chan_id_on_a, + packet.seq_on_a, ); let (_, tm_proof) = query_value_with_proof(test, &key, Some(query_height))?; - let commitment_proof = convert_proof(tm_proof)?; - - Proofs::new(commitment_proof, None, None, None, target_height) - .map_err(|e| eyre!("Creating proofs failed: error {}", e)) + convert_proof(tm_proof) } fn get_ack_proof( test: &Test, packet: &Packet, target_height: Height, -) -> Result { +) -> Result { // we need proofs at the height of the previous block let query_height = target_height.decrement().unwrap(); - let key = ack_key( - &packet.destination_port.as_str().parse().unwrap(), - &packet.destination_channel.as_str().parse().unwrap(), - u64::from(packet.sequence).into(), - ); + let key = + ack_key(&packet.port_id_on_b, &packet.chan_id_on_b, packet.seq_on_a); let (_, tm_proof) = query_value_with_proof(test, &key, Some(query_height))?; - let ack_proof = convert_proof(tm_proof)?; - - Proofs::new(ack_proof, None, None, None, target_height) - .map_err(|e| eyre!("Creating proofs failed: error {}", e)) + convert_proof(tm_proof) } fn get_receipt_absence_proof( test: &Test, packet: &Packet, target_height: Height, -) -> Result { +) -> Result { // we need proofs at the height of the previous block let query_height = target_height.decrement().unwrap(); let key = receipt_key( - &packet.destination_port.as_str().parse().unwrap(), - &packet.destination_channel.as_str().parse().unwrap(), - u64::from(packet.sequence).into(), + &packet.port_id_on_b, + &packet.chan_id_on_b, + packet.seq_on_a, ); let (_, tm_proof) = query_value_with_proof(test, &key, Some(query_height))?; - let absence_proof = convert_proof(tm_proof)?; - - Proofs::new(absence_proof, None, None, None, target_height) - .map_err(|e| eyre!("Creating proofs failed: error {}", e)) + convert_proof(tm_proof) } fn commitment_prefix() -> CommitmentPrefix { @@ -1038,7 +943,8 @@ fn transfer( token: impl AsRef, amount: &Amount, signer: impl AsRef, - port_channel_id: &PortChannelId, + port_id: &PortId, + channel_id: &ChannelId, timeout_sec: Option, wait_reveal_pk: bool, ) -> Result { @@ -1046,8 +952,8 @@ fn transfer( let receiver = receiver.to_string(); let amount = amount.to_string_native(); - let port_id = port_channel_id.port_id.to_string(); - let channel_id = port_channel_id.channel_id.to_string(); + let channel_id = channel_id.to_string(); + let port_id = port_id.to_string(); let mut tx_args = vec![ "ibc-transfer", "--source", @@ -1149,40 +1055,6 @@ fn query_header(test: &Test, height: Height) -> Result { } } -fn get_event(test: &Test, height: u32) -> Result> { - let rpc = get_actor_rpc(test, &Who::Validator(0)); - let ledger_address = TendermintAddress::from_str(&rpc).unwrap(); - let client = HttpClient::new(ledger_address).unwrap(); - - let response = test - .async_runtime() - .block_on(client.block_results(height)) - .map_err(|e| eyre!("block_results() for an IBC event failed: {}", e))?; - let tx_results = response.txs_results.ok_or_else(|| { - eyre!("No transaction has been executed: height {}", height) - })?; - for result in tx_results { - if result.code.is_err() { - return Err(eyre!( - "The transaction failed: code {:?}, log {}", - result.code, - result.log - )); - } - } - let events = response - .end_block_events - .ok_or_else(|| eyre!("IBC event was not found: height {}", height))?; - for event in &events { - match ibc_event_try_from_abci_event(event) { - Ok(ibc_event) => return Ok(Some(ibc_event)), - Err(_) => continue, - } - } - // No IBC event was found - Ok(None) -} - fn check_ibc_update_query( test: &Test, client_id: &ClientId, @@ -1193,7 +1065,7 @@ fn check_ibc_update_query( let client = HttpClient::new(ledger_address).unwrap(); match test.async_runtime().block_on(RPC.shell().ibc_client_update( &client, - &client_id.as_str().parse().unwrap(), + client_id, &consensus_height, )) { Ok(Some(event)) => { @@ -1216,11 +1088,11 @@ fn check_ibc_packet_query( match test.async_runtime().block_on(RPC.shell().ibc_packet( &client, event_type, - &packet.source_port.as_str().parse().unwrap(), - &packet.source_channel.as_str().parse().unwrap(), - &packet.destination_port.as_str().parse().unwrap(), - &packet.destination_channel.as_str().parse().unwrap(), - &packet.sequence.to_string().parse().unwrap(), + &packet.port_id_on_a, + &packet.chan_id_on_a, + &packet.port_id_on_b, + &packet.chan_id_on_b, + &packet.seq_on_a, )) { Ok(Some(event)) => { println!("Found the packet event: {:?}", event); @@ -1252,8 +1124,19 @@ fn query_value_with_proof( } fn convert_proof(tm_proof: TmProof) -> Result { - let merkle_proof = convert_tm_to_ics_merkle_proof(&tm_proof) - .map_err(|e| eyre!("Proof conversion to MerkleProof failed: {}", e))?; + use namada::ibc_proto::ibc::core::commitment::v1::MerkleProof as RawMerkleProof; + use namada::ibc_proto::ics23::CommitmentProof; + + let mut proofs = Vec::new(); + + for op in &tm_proof.ops { + let mut parsed = CommitmentProof { proof: None }; + prost::Message::merge(&mut parsed, op.data.as_slice()) + .expect("merging CommitmentProof failed"); + proofs.push(parsed); + } + + let merkle_proof = MerkleProof::from(RawMerkleProof { proofs }); CommitmentProofBytes::try_from(merkle_proof).map_err(|e| { eyre!("Proof conversion to CommitmentProofBytes failed: {}", e) }) @@ -1261,7 +1144,8 @@ fn convert_proof(tm_proof: TmProof) -> Result { /// Check balances after IBC transfer fn check_balances( - dest_port_channel_id: &PortChannelId, + dest_port_id: &PortId, + dest_channel_id: &ChannelId, test_a: &Test, test_b: &Test, ) -> Result<()> { @@ -1283,10 +1167,7 @@ fn check_balances( client.assert_success(); // Check the balance on Chain B - let denom = format!( - "{}/{}/{}", - &dest_port_channel_id.port_id, &dest_port_channel_id.channel_id, &token, - ); + let denom = format!("{}/{}/{}", &dest_port_id, &dest_channel_id, &token,); let ibc_token = ibc_token(denom).to_string(); let rpc_b = get_actor_rpc(test_b, &Who::Validator(0)); let query_args = vec![ @@ -1301,15 +1182,13 @@ fn check_balances( /// Check balances after non IBC transfer fn check_balances_after_non_ibc( - port_channel_id: &PortChannelId, + port_id: &PortId, + channel_id: &ChannelId, test: &Test, ) -> Result<()> { // Check the balance on Chain B let token = find_address(test, NAM)?; - let denom = format!( - "{}/{}/{}", - port_channel_id.port_id, port_channel_id.channel_id, token - ); + let denom = format!("{}/{}/{}", port_id, channel_id, token); let ibc_token = ibc_token(denom).to_string(); // Check the source @@ -1336,7 +1215,8 @@ fn check_balances_after_non_ibc( /// Check balances after IBC transfer back fn check_balances_after_back( - dest_port_channel_id: &PortChannelId, + dest_port_id: &PortId, + dest_channel_id: &ChannelId, test_a: &Test, test_b: &Test, ) -> Result<()> { @@ -1358,10 +1238,7 @@ fn check_balances_after_back( client.assert_success(); // Check the balance on Chain B - let denom = format!( - "{}/{}/{}", - &dest_port_channel_id.port_id, &dest_port_channel_id.channel_id, &token, - ); + let denom = format!("{}/{}/{}", dest_port_id, dest_channel_id, &token,); let ibc_token = ibc_token(denom).to_string(); let rpc_b = get_actor_rpc(test_b, &Who::Validator(0)); let query_args = vec![ @@ -1373,3 +1250,146 @@ fn check_balances_after_back( client.assert_success(); Ok(()) } + +fn signer() -> Signer { + "signer".to_string().into() +} + +/// Helper function to make the MsgConnectionOpenTry because it has a private +/// field +fn make_msg_conn_open_try( + client_id: ClientId, + client_state: TmClientState, + counterparty: ConnCounterparty, + conn_proof: CommitmentProofBytes, + client_state_proof: CommitmentProofBytes, + consensus_proof: CommitmentProofBytes, + proofs_height: Height, +) -> MsgConnectionOpenTry { + use namada::ibc_proto::ibc::core::connection::v1::MsgConnectionOpenTry as RawMsgConnectionOpenTry; + + let consensus_height = client_state.latest_height(); + #[allow(deprecated)] + RawMsgConnectionOpenTry { + client_id: client_id.as_str().to_string(), + client_state: Some(client_state.into()), + counterparty: Some(counterparty.into()), + delay_period: 0, + counterparty_versions: vec![ConnVersion::default().into()], + proof_init: conn_proof.into(), + proof_height: Some(proofs_height.into()), + proof_client: client_state_proof.into(), + proof_consensus: consensus_proof.into(), + consensus_height: Some(consensus_height.into()), + signer: "signer".to_string(), + previous_connection_id: ConnectionId::default().to_string(), + } + .try_into() + .expect("invalid message") +} + +fn get_client_id_from_events(events: &Vec) -> Option { + get_attribute_from_events(events, "client_id").map(|v| v.parse().unwrap()) +} + +fn get_connection_id_from_events( + events: &Vec, +) -> Option { + get_attribute_from_events(events, "connection_id") + .map(|v| v.parse().unwrap()) +} + +fn get_channel_id_from_events(events: &Vec) -> Option { + get_attribute_from_events(events, "channel_id").map(|v| v.parse().unwrap()) +} + +fn get_ack_from_events(events: &Vec) -> Option> { + get_attribute_from_events(events, "packet_ack") + .map(|v| Vec::from(v.as_bytes())) +} + +fn get_attribute_from_events( + events: &Vec, + key: &str, +) -> Option { + for event in events { + let attributes = get_attributes_from_event(event); + if let Some(value) = attributes.get(key) { + return Some(value.clone()); + } + } + None +} + +fn get_packet_from_events(events: &Vec) -> Option { + for event in events { + let attributes = get_attributes_from_event(event); + if !attributes.contains_key("packet_src_port") { + continue; + } + let mut packet = Packet::default(); + for (key, val) in attributes { + match key.as_str() { + "packet_src_port" => packet.port_id_on_a = val.parse().unwrap(), + "packet_src_channel" => { + packet.chan_id_on_a = val.parse().unwrap() + } + "packet_dst_port" => packet.port_id_on_b = val.parse().unwrap(), + "packet_dst_channel" => { + packet.chan_id_on_b = val.parse().unwrap() + } + "packet_timeout_height" => { + packet.timeout_height_on_b = match Height::from_str(&val) { + Ok(height) => TimeoutHeight::At(height), + Err(_) => TimeoutHeight::Never, + } + } + "packet_timeout_timestamp" => { + packet.timeout_timestamp_on_b = val.parse().unwrap() + } + "packet_sequence" => { + packet.seq_on_a = u64::from_str(&val).unwrap().into() + } + "packet_data" => packet.data = Vec::from(val.as_bytes()), + _ => {} + } + } + return Some(packet); + } + None +} + +fn get_attributes_from_event(event: &AbciEvent) -> HashMap { + event + .attributes + .iter() + .map(|tag| (tag.key.to_string(), tag.value.to_string())) + .collect() +} + +fn get_events(test: &Test, height: u32) -> Result> { + let rpc = get_actor_rpc(test, &Who::Validator(0)); + let ledger_address = TendermintAddress::from_str(&rpc).unwrap(); + let client = HttpClient::new(ledger_address).unwrap(); + + let response = test + .async_runtime() + .block_on(client.block_results(height)) + .map_err(|e| eyre!("block_results() for an IBC event failed: {}", e))?; + let tx_results = response.txs_results.ok_or_else(|| { + eyre!("No transaction has been executed: height {}", height) + })?; + for result in tx_results { + if result.code.is_err() { + return Err(eyre!( + "The transaction failed: code {:?}, log {}", + result.code, + result.log + )); + } + } + + response + .end_block_events + .ok_or_else(|| eyre!("IBC event was not found: height {}", height)) +} diff --git a/tests/src/vm_host_env/ibc.rs b/tests/src/vm_host_env/ibc.rs index 5858abe7d3f..f88be446fe0 100644 --- a/tests/src/vm_host_env/ibc.rs +++ b/tests/src/vm_host_env/ibc.rs @@ -1,6 +1,5 @@ use core::time::Duration; use std::collections::HashMap; -use std::str::FromStr; use namada::ibc::applications::transfer::acknowledgement::TokenTransferAcknowledgement; use namada::ibc::applications::transfer::coin::PrefixedCoin; @@ -24,16 +23,11 @@ use namada::ibc::core::ics03_connection::version::Version as ConnVersion; use namada::ibc::core::ics04_channel::channel::{ ChannelEnd, Counterparty as ChanCounterparty, Order, State as ChanState, }; -use namada::ibc::core::ics04_channel::msgs::acknowledgement::MsgAcknowledgement; -use namada::ibc::core::ics04_channel::msgs::chan_close_confirm::MsgChannelCloseConfirm; -use namada::ibc::core::ics04_channel::msgs::chan_close_init::MsgChannelCloseInit; -use namada::ibc::core::ics04_channel::msgs::chan_open_ack::MsgChannelOpenAck; -use namada::ibc::core::ics04_channel::msgs::chan_open_confirm::MsgChannelOpenConfirm; -use namada::ibc::core::ics04_channel::msgs::chan_open_init::MsgChannelOpenInit; -use namada::ibc::core::ics04_channel::msgs::chan_open_try::MsgChannelOpenTry; -use namada::ibc::core::ics04_channel::msgs::recv_packet::MsgRecvPacket; -use namada::ibc::core::ics04_channel::msgs::timeout::MsgTimeout; -use namada::ibc::core::ics04_channel::msgs::timeout_on_close::MsgTimeoutOnClose; +use namada::ibc::core::ics04_channel::msgs::{ + MsgAcknowledgement, MsgChannelCloseConfirm, MsgChannelCloseInit, + MsgChannelOpenAck, MsgChannelOpenConfirm, MsgChannelOpenInit, + MsgChannelOpenTry, MsgRecvPacket, MsgTimeout, MsgTimeoutOnClose, +}; pub use namada::ibc::core::ics04_channel::packet::{Packet, Sequence}; use namada::ibc::core::ics04_channel::timeout::TimeoutHeight; use namada::ibc::core::ics04_channel::Version as ChanVersion; @@ -41,15 +35,13 @@ use namada::ibc::core::ics23_commitment::commitment::{ CommitmentPrefix, CommitmentProofBytes, }; pub use namada::ibc::core::ics24_host::identifier::{ - ChannelId, ClientId, ConnectionId, PortChannelId, PortId, + ChannelId, ClientId, ConnectionId, PortId, }; +use namada::ibc::core::timestamp::Timestamp; use namada::ibc::mock::client_state::{MockClientState, MOCK_CLIENT_TYPE}; use namada::ibc::mock::consensus_state::MockConsensusState; use namada::ibc::mock::header::MockHeader; -use namada::ibc::signer::Signer; -use namada::ibc::timestamp::Timestamp; use namada::ibc::Height; -use namada::ibc_proto::cosmos::base::v1beta1::Coin; use namada::ibc_proto::google::protobuf::Any; use namada::ibc_proto::ibc::core::commitment::v1::MerkleProof; use namada::ibc_proto::ibc::core::connection::v1::MsgConnectionOpenTry as RawMsgConnectionOpenTry; @@ -58,9 +50,9 @@ use namada::ibc_proto::protobuf::Protobuf; use namada::ledger::gas::VpGasMeter; pub use namada::ledger::ibc::storage::{ ack_key, channel_counter_key, channel_key, client_counter_key, - client_state_key, client_type_key, client_update_height_key, - client_update_timestamp_key, commitment_key, connection_counter_key, - connection_key, consensus_state_key, ibc_token, next_sequence_ack_key, + client_state_key, client_update_height_key, client_update_timestamp_key, + commitment_key, connection_counter_key, connection_key, + consensus_state_key, ibc_token, next_sequence_ack_key, next_sequence_recv_key, next_sequence_send_key, port_key, receipt_key, }; use namada::ledger::ibc::vp::{ @@ -296,23 +288,12 @@ pub fn prepare_client() -> (ClientId, Any, HashMap>) { // client state let client_id = client_id(); let key = client_state_key(&client_id); - let bytes = client_state - .into_box() - .encode_vec() - .expect("encoding failed"); - writes.insert(key, bytes); - // client type - let key = client_type_key(&client_id); - let client_type = client_state.client_type(); - let bytes = client_type.as_str().as_bytes().to_vec(); + let bytes = client_state.into_box().encode_vec(); writes.insert(key, bytes); // consensus state let height = client_state.latest_height(); let key = consensus_state_key(&client_id, height); - let bytes = consensus_state - .into_box() - .encode_vec() - .expect("encoding failed"); + let bytes = consensus_state.into_box().encode_vec(); writes.insert(key, bytes); // client update time let key = client_update_timestamp_key(&client_id); @@ -337,7 +318,7 @@ pub fn prepare_client() -> (ClientId, Any, HashMap>) { let height = env.wl_storage.storage.get_block_height().0; Height::new(0, height.0).expect("invalid height") }); - let bytes = height.encode_vec().expect("encoding failed"); + let bytes = height.encode_vec(); writes.insert(key, bytes); // client counter let key = client_counter_key(); @@ -366,15 +347,15 @@ pub fn prepare_opened_connection( let conn_id = ConnectionId::new(0); let key = connection_key(&conn_id); - let msg = msg_connection_open_init(client_id.clone()); let conn = ConnectionEnd::new( ConnState::Open, - msg.client_id_on_a.clone(), - msg.counterparty.clone(), - vec![msg.version.clone().unwrap_or_default()], - msg.delay_period, - ); - let bytes = conn.encode_vec().expect("encoding failed"); + client_id.clone(), + dummy_connection_counterparty(), + vec![ConnVersion::default()], + Duration::new(0, 0), + ) + .expect("invalid connection"); + let bytes = conn.encode_vec(); writes.insert(key, bytes); // connection counter let key = connection_counter_key(); @@ -396,20 +377,19 @@ pub fn prepare_opened_channel( writes.insert(key, 0_u64.to_be_bytes().to_vec()); // channel let channel_id = ChannelId::new(0); - let port_channel_id = - PortChannelId::new(channel_id.clone(), port_id.clone()); - let key = channel_key(&port_channel_id); + let key = channel_key(&port_id, &channel_id); let mut channel = ChannelEnd::new( ChanState::Open, Order::Unordered, dummy_channel_counterparty(), vec![conn_id.clone()], ChanVersion::new(VERSION.to_string()), - ); + ) + .expect("invalid channel"); if is_ordered { channel.ordering = Order::Ordered; } - let bytes = channel.encode_vec().expect("encoding failed"); + let bytes = channel.encode_vec(); writes.insert(key, bytes); (port_id, channel_id, writes) @@ -420,7 +400,7 @@ pub fn msg_create_client() -> MsgCreateClient { MsgCreateClient { client_state: client_state.into(), consensus_state: consensus_state.into(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -434,7 +414,7 @@ pub fn msg_update_client(client_id: ClientId) -> MsgUpdateClient { MsgUpdateClient { client_id, header, - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -458,17 +438,24 @@ pub fn msg_upgrade_client(client_id: ClientId) -> MsgUpgradeClient { consensus_state, proof_upgrade_client, proof_upgrade_consensus_state, - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } pub fn msg_connection_open_init(client_id: ClientId) -> MsgConnectionOpenInit { + let client_type = ClientType::new(MOCK_CLIENT_TYPE.to_string()).unwrap(); + let counterparty_client_id = ClientId::new(client_type, 42).unwrap(); + let commitment_prefix = + CommitmentPrefix::try_from(COMMITMENT_PREFIX.to_vec()).unwrap(); + let counterparty = + ConnCounterparty::new(counterparty_client_id, None, commitment_prefix); + MsgConnectionOpenInit { client_id_on_a: client_id, - counterparty: dummy_connection_counterparty(), + counterparty, version: None, delay_period: Duration::new(0, 0), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -514,7 +501,7 @@ pub fn msg_connection_open_ack( proofs_height_on_b: dummy_proof_height(), consensus_height_of_a_on_b: consensus_height, version: ConnVersion::default(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -525,7 +512,7 @@ pub fn msg_connection_open_confirm( conn_id_on_b: connection_id, proof_conn_end_on_a: dummy_proof(), proof_height_on_a: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -538,7 +525,7 @@ fn dummy_proof_height() -> Height { } fn dummy_connection_counterparty() -> ConnCounterparty { - let client_type = ClientType::new(MOCK_CLIENT_TYPE.to_string()); + let client_type = ClientType::new(MOCK_CLIENT_TYPE.to_string()).unwrap(); let client_id = ClientId::new(client_type, 42).expect("invalid client ID"); let conn_id = ConnectionId::new(12); let commitment_prefix = @@ -556,7 +543,7 @@ pub fn msg_channel_open_init( connection_hops_on_a: vec![conn_id], port_id_on_b: PortId::transfer(), ordering: Order::Unordered, - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), version_proposal: ChanVersion::new(VERSION.to_string()), } } @@ -576,8 +563,7 @@ pub fn msg_channel_open_try( proof_chan_end_on_a: dummy_proof(), proof_height_on_a: dummy_proof_height(), ordering: Order::Unordered, - signer: Signer::from_str("test").expect("invalid signer"), - previous_channel_id: ChannelId::default().to_string(), + signer: "test".to_string().into(), version_proposal: ChanVersion::default(), } } @@ -594,7 +580,7 @@ pub fn msg_channel_open_ack( version_on_b: ChanVersion::new(VERSION.to_string()), proof_chan_end_on_b: dummy_proof(), proof_height_on_b: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -607,7 +593,7 @@ pub fn msg_channel_open_confirm( chan_id_on_b: channel_id, proof_chan_end_on_a: dummy_proof(), proof_height_on_a: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -618,7 +604,7 @@ pub fn msg_channel_close_init( MsgChannelCloseInit { port_id_on_a: port_id, chan_id_on_a: channel_id, - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -631,7 +617,7 @@ pub fn msg_channel_close_confirm( chan_id_on_b: channel_id, proof_chan_end_on_a: dummy_proof(), proof_height_on_a: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -648,22 +634,24 @@ pub fn unorder_channel(channel: &mut ChannelEnd) { pub fn msg_transfer( port_id: PortId, channel_id: ChannelId, - token: String, + denom: String, sender: &Address, ) -> MsgTransfer { let timestamp = (Timestamp::now() + Duration::from_secs(100)).unwrap(); MsgTransfer { port_id_on_a: port_id, chan_id_on_a: channel_id, - token: Coin { - denom: token, - amount: 100u64.to_string(), + packet_data: PacketData { + token: PrefixedCoin { + denom: denom.parse().expect("invalid denom"), + amount: 100.into(), + }, + sender: sender.to_string().into(), + receiver: address::testing::gen_established_address() + .to_string() + .into(), + memo: "memo".to_string().into(), }, - sender: Signer::from_str(&sender.to_string()).expect("invalid signer"), - receiver: Signer::from_str( - &address::testing::gen_established_address().to_string(), - ) - .expect("invalid signer"), timeout_height_on_b: TimeoutHeight::Never, timeout_timestamp_on_b: timestamp, } @@ -679,7 +667,7 @@ pub fn msg_packet_recv(packet: Packet) -> MsgRecvPacket { packet, proof_commitment_on_a: dummy_proof(), proof_height_on_a: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -690,7 +678,7 @@ pub fn msg_packet_ack(packet: Packet) -> MsgAcknowledgement { acknowledgement: packet_ack.into(), proof_acked_on_b: dummy_proof(), proof_height_on_b: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -707,12 +695,12 @@ pub fn received_packet( denom: token.parse().expect("invalid denom"), amount: 100.into(), }; - let sender = address::testing::gen_established_address().to_string(); + let sender = address::testing::gen_established_address(); let data = PacketData { token: coin, - sender: Signer::from_str(&sender).expect("invalid signer"), - receiver: Signer::from_str(&receiver.to_string()) - .expect("invalid signer"), + sender: sender.to_string().into(), + receiver: receiver.to_string().into(), + memo: "memo".to_string().into(), }; Packet { seq_on_a: sequence, @@ -732,7 +720,7 @@ pub fn msg_timeout(packet: Packet, next_sequence_recv: Sequence) -> MsgTimeout { next_seq_recv_on_b: next_sequence_recv, proof_unreceived_on_b: dummy_proof(), proof_height_on_b: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -746,7 +734,7 @@ pub fn msg_timeout_on_close( proof_unreceived_on_b: dummy_proof(), proof_close_on_b: dummy_proof(), proof_height_on_b: dummy_proof_height(), - signer: Signer::from_str("test").expect("invalid signer"), + signer: "test".to_string().into(), } } @@ -755,11 +743,11 @@ pub fn packet_from_message( sequence: Sequence, counterparty: &ChanCounterparty, ) -> Packet { - let coin = PrefixedCoin::try_from(msg.token.clone()).expect("invalid coin"); let packet_data = PacketData { - token: coin, - sender: msg.sender.clone(), - receiver: msg.receiver.clone(), + token: msg.packet_data.token.clone(), + sender: msg.packet_data.sender.clone(), + receiver: msg.packet_data.receiver.clone(), + memo: "memo".to_string().into(), }; let data = serde_json::to_vec(&packet_data).expect("Encoding PacketData failed"); diff --git a/tests/src/vm_host_env/mod.rs b/tests/src/vm_host_env/mod.rs index 28ec228ae5f..878d93aeef6 100644 --- a/tests/src/vm_host_env/mod.rs +++ b/tests/src/vm_host_env/mod.rs @@ -21,7 +21,7 @@ mod tests { use std::panic; use itertools::Itertools; - use namada::ibc::tx_msg::Msg; + use namada::ibc::core::Msg; use namada::ledger::ibc::storage as ibc_storage; use namada::ledger::ibc::vp::{ get_dummy_header as tm_dummy_header, Error as IbcError, @@ -1247,8 +1247,7 @@ mod tests { // Start a transaction to send a packet // Set this chain is the sink zone - let hashed_denom = ibc_token.to_string(); - let msg = ibc::msg_transfer(port_id, channel_id, hashed_denom, &sender); + let msg = ibc::msg_transfer(port_id, channel_id, denom, &sender); let mut tx_data = vec![]; msg.to_any().encode(&mut tx_data).expect("encoding failed"); diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 3f3d9458cbe..d04b6b73b81 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -278,28 +278,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" -[[package]] -name = "async-stream" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - [[package]] name = "async-trait" version = "0.1.68" @@ -311,22 +289,6 @@ dependencies = [ "syn 2.0.16", ] -[[package]] -name = "async-tungstenite" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00550829ef8e2c4115250d0ee43305649b0fa95f78a32ce5b07da0b73d95c5c" -dependencies = [ - "futures-io", - "futures-util", - "log", - "pin-project-lite", - "tokio", - "tokio-rustls 0.22.0", - "tungstenite", - "webpki-roots 0.21.1", -] - [[package]] name = "async_io_stream" version = "0.3.3" @@ -356,51 +318,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "axum" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" -dependencies = [ - "async-trait", - "axum-core", - "bitflags 1.3.2", - "bytes", - "futures-util", - "http", - "http-body", - "hyper", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "mime", - "rustversion", - "tower-layer", - "tower-service", -] - [[package]] name = "backtrace" version = "0.3.67" @@ -416,12 +333,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - [[package]] name = "base16ct" version = "0.2.0" @@ -464,12 +375,6 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - [[package]] name = "bellman" version = "0.13.1" @@ -533,39 +438,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" -[[package]] -name = "bitcoin" -version = "0.29.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0694ea59225b0c5f3cb405ff3f670e4828358ed26aec49dc352f730f0cb1a8a3" -dependencies = [ - "bech32 0.9.1", - "bitcoin_hashes", - "secp256k1", - "serde", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" -dependencies = [ - "serde", -] - [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitflags" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" - [[package]] name = "bitvec" version = "0.17.4" @@ -706,17 +584,40 @@ name = "borsh" version = "0.9.4" source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" dependencies = [ - "borsh-derive", + "borsh-derive 0.9.4", "hashbrown 0.11.2", ] +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", + "hashbrown 0.12.3", +] + [[package]] name = "borsh-derive" version = "0.9.4" source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.9.4", + "borsh-schema-derive-internal 0.9.4", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -732,6 +633,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "borsh-schema-derive-internal" version = "0.9.4" @@ -742,6 +654,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "bs58" version = "0.4.0" @@ -791,12 +714,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "bytecount" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" - [[package]] name = "byteorder" version = "1.4.3" @@ -830,19 +747,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo_metadata" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.17", - "serde", - "serde_json", -] - [[package]] name = "cargo_metadata" version = "0.15.4" @@ -953,18 +857,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.11" +version = "4.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d" +checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.3.11" +version = "4.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b" +checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" dependencies = [ "anstream", "anstyle", @@ -995,7 +899,7 @@ dependencies = [ "digest 0.10.6", "getrandom 0.2.9", "hmac 0.12.1", - "k256 0.13.1", + "k256", "lazy_static", "serde", "sha2 0.10.6", @@ -1254,18 +1158,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array 0.14.7", - "rand_core 0.6.4", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.5.2" @@ -1408,15 +1300,6 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" -[[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", -] - [[package]] name = "der" version = "0.7.7" @@ -1494,16 +1377,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.3.7" @@ -1515,17 +1388,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "displaydoc" version = "0.2.4" @@ -1555,7 +1417,7 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "add9a102807b524ec050363f09e06f1504214b0e1c7797f64261c891022dce8b" dependencies = [ - "bitflags 1.3.2", + "bitflags", "byteorder", "lazy_static", "proc-macro-error", @@ -1575,28 +1437,16 @@ dependencies = [ "memmap2", ] -[[package]] -name = "ecdsa" -version = "0.14.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] - [[package]] name = "ecdsa" version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428" dependencies = [ - "der 0.7.7", + "der", "digest 0.10.6", - "elliptic-curve 0.13.5", - "rfc6979 0.4.0", + "elliptic-curve", + "rfc6979", "signature 2.1.0", "spki", ] @@ -1642,58 +1492,27 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ed25519-dalek-bip32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "hmac 0.12.1", - "sha2 0.10.6", -] - [[package]] name = "either" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" -[[package]] -name = "elliptic-curve" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.6", - "ff 0.12.1", - "generic-array 0.14.7", - "group 0.12.1", - "rand_core 0.6.4", - "sec1 0.3.0", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "elliptic-curve" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.2", + "base16ct", + "crypto-bigint", "digest 0.10.6", "ff 0.13.0", "generic-array 0.14.7", "group 0.13.0", "pkcs8", "rand_core 0.6.4", - "sec1 0.7.2", + "sec1", "subtle 2.4.1", "zeroize", ] @@ -1716,7 +1535,7 @@ dependencies = [ "base64 0.13.1", "bytes", "hex", - "k256 0.13.1", + "k256", "log", "rand 0.8.5", "rlp", @@ -1802,15 +1621,6 @@ dependencies = [ "libc", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check", -] - [[package]] name = "eth-keystore" version = "0.5.0" @@ -1830,7 +1640,7 @@ dependencies = [ "sha2 0.10.6", "sha3", "thiserror", - "uuid 0.8.2", + "uuid", ] [[package]] @@ -2031,13 +1841,13 @@ checksum = "6da5fa198af0d3be20c19192df2bd9590b92ce09a8421e793bec8851270f1b05" dependencies = [ "arrayvec", "bytes", - "cargo_metadata 0.15.4", + "cargo_metadata", "chrono", - "elliptic-curve 0.13.5", + "elliptic-curve", "ethabi", "generic-array 0.14.7", "hex", - "k256 0.13.1", + "k256", "num_enum", "once_cell", "open-fastrlp", @@ -2140,7 +1950,7 @@ dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve 0.13.5", + "elliptic-curve", "eth-keystore", "ethers-core", "hex", @@ -2197,7 +2007,7 @@ dependencies = [ "bincode", "blake2", "blake2b_simd", - "borsh", + "borsh 0.9.4", "digest 0.10.6", "ed25519-dalek", "either", @@ -2496,12 +2306,6 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - [[package]] name = "gloo-timers" version = "0.2.6" @@ -2639,15 +2443,6 @@ dependencies = [ "fxhash", ] -[[package]] -name = "hdpath" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ae1615f843ce3981b47468f3f7c435ac17deb33c2261e64d7f1e87f5c11acc" -dependencies = [ - "byteorder", -] - [[package]] name = "headers" version = "0.3.8" @@ -2655,7 +2450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" dependencies = [ "base64 0.13.1", - "bitflags 1.3.2", + "bitflags", "bytes", "headers-core", "http", @@ -2801,22 +2596,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "humantime-serde" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" -dependencies = [ - "humantime", - "serde", -] - [[package]] name = "hyper" version = "0.14.26" @@ -2853,9 +2632,9 @@ dependencies = [ "http", "hyper", "hyper-rustls", - "rustls-native-certs 0.5.0", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", + "tokio-rustls", "tower-service", "webpki 0.21.4", ] @@ -2871,25 +2650,13 @@ dependencies = [ "hyper", "log", "rustls 0.19.1", - "rustls-native-certs 0.5.0", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", + "tokio-rustls", "webpki 0.21.4", "webpki-roots 0.21.1", ] -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - [[package]] name = "iana-time-zone" version = "0.1.56" @@ -2915,8 +2682,8 @@ dependencies = [ [[package]] name = "ibc" -version = "0.36.0" -source = "git+https://github.com/heliaxdev/cosmos-ibc-rs.git?rev=634f4ede136d045dd6f1ff8f4984dd0006aa15f0#634f4ede136d045dd6f1ff8f4984dd0006aa15f0" +version = "0.41.0" +source = "git+https://github.com/heliaxdev/cosmos-ibc-rs.git?rev=38a827d3901e590b2935ee5b6b81b4d67c399560#38a827d3901e590b2935ee5b6b81b4d67c399560" dependencies = [ "bytes", "cfg-if 1.0.0", @@ -2947,113 +2714,26 @@ dependencies = [ [[package]] name = "ibc-proto" -version = "0.26.0" -source = "git+https://github.com/heliaxdev/ibc-proto-rs.git?rev=bb16e17a4d9260d5f20516a8eda43fa52377fad2#bb16e17a4d9260d5f20516a8eda43fa52377fad2" +version = "0.30.0" +source = "git+https://github.com/heliaxdev/ibc-proto-rs.git?rev=31892ee743b2af017d5629b2af419ee20b6100c7#31892ee743b2af017d5629b2af419ee20b6100c7" dependencies = [ - "base64 0.13.1", + "base64 0.21.0", + "borsh 0.10.3", "bytes", "flex-error", + "parity-scale-codec", "prost", + "scale-info", "serde", "subtle-encoding", "tendermint-proto", - "tonic", ] [[package]] -name = "ibc-relayer" -version = "0.22.0" -source = "git+https://github.com/heliaxdev/hermes.git?rev=fea6928dace1af3e38c5b223f933c1d07720811d#fea6928dace1af3e38c5b223f933c1d07720811d" -dependencies = [ - "anyhow", - "async-stream", - "bech32 0.9.1", - "bitcoin", - "bs58", - "bytes", - "crossbeam-channel 0.5.8", - "digest 0.10.6", - "dirs-next", - "ed25519", - "ed25519-dalek", - "ed25519-dalek-bip32", - "flex-error", - "futures", - "generic-array 0.14.7", - "hdpath", - "hex", - "http", - "humantime", - "humantime-serde", - "ibc-proto", - "ibc-relayer-types", - "itertools", - "moka", - "num-bigint 0.4.3", - "num-rational 0.4.1", - "prost", - "regex", - "retry", - "ripemd", - "secp256k1", - "semver 1.0.17", - "serde", - "serde_derive", - "serde_json", - "sha2 0.10.6", - "signature 1.6.4", - "strum", - "subtle-encoding", - "tendermint", - "tendermint-light-client", - "tendermint-light-client-verifier", - "tendermint-proto", - "tendermint-rpc", - "thiserror", - "tiny-bip39 1.0.0", - "tiny-keccak", - "tokio", - "toml 0.5.11", - "tonic", - "tracing", - "uuid 1.3.2", -] - -[[package]] -name = "ibc-relayer-types" -version = "0.22.0" -source = "git+https://github.com/heliaxdev/hermes.git?rev=fea6928dace1af3e38c5b223f933c1d07720811d#fea6928dace1af3e38c5b223f933c1d07720811d" -dependencies = [ - "bytes", - "derive_more", - "dyn-clone", - "erased-serde", - "flex-error", - "ibc-proto", - "ics23", - "itertools", - "num-rational 0.4.1", - "primitive-types", - "prost", - "safe-regex", - "serde", - "serde_derive", - "serde_json", - "subtle-encoding", - "tendermint", - "tendermint-light-client-verifier", - "tendermint-proto", - "tendermint-rpc", - "tendermint-testgen", - "time", - "uint", -] - -[[package]] -name = "ics23" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca44b684ce1859cff746ff46f5765ab72e12e3c06f76a8356db8f9a2ecf43f17" +name = "ics23" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca44b684ce1859cff746ff46f5765ab72e12e3c06f76a8356db8f9a2ecf43f17" dependencies = [ "anyhow", "bytes", @@ -3149,7 +2829,7 @@ name = "index-set" version = "0.7.1" source = "git+https://github.com/heliaxdev/index-set?tag=v0.7.1#dc24cdbbe3664514d59f1a4c4031863fc565f1c2" dependencies = [ - "borsh", + "borsh 0.9.4", "serde", ] @@ -3183,15 +2863,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "input_buffer" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97967975f448f1a7ddb12b0bc41069d09ed6a1c161a92687e057325db35d413" -dependencies = [ - "bytes", -] - [[package]] name = "instant" version = "0.1.12" @@ -3232,12 +2903,13 @@ checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ "hermit-abi 0.3.1", - "rustix 0.38.4", + "io-lifetimes", + "rustix", "windows-sys 0.48.0", ] @@ -3279,18 +2951,6 @@ dependencies = [ "subtle 2.4.1", ] -[[package]] -name = "k256" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" -dependencies = [ - "cfg-if 1.0.0", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.6", -] - [[package]] name = "k256" version = "0.13.1" @@ -3298,8 +2958,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if 1.0.0", - "ecdsa 0.16.7", - "elliptic-curve 0.13.5", + "ecdsa", + "elliptic-curve", "once_cell", "sha2 0.10.6", "signature 2.1.0", @@ -3328,9 +2988,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" [[package]] name = "libloading" @@ -3414,12 +3074,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" -[[package]] -name = "linux-raw-sys" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" - [[package]] name = "lock_api" version = "0.4.9" @@ -3471,7 +3125,7 @@ name = "masp_note_encryption" version = "0.2.0" source = "git+https://github.com/anoma/masp?rev=252a6059565b125c1444e9e7d0b7c8da0fba8f8f#252a6059565b125c1444e9e7d0b7c8da0fba8f8f" dependencies = [ - "borsh", + "borsh 0.9.4", "chacha20 0.9.1", "chacha20poly1305", "cipher 0.4.4", @@ -3490,7 +3144,7 @@ dependencies = [ "blake2b_simd", "blake2s_simd", "bls12_381", - "borsh", + "borsh 0.9.4", "byteorder", "ff 0.12.1", "fpe", @@ -3539,12 +3193,6 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matchit" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" - [[package]] name = "maybe-uninit" version = "2.0.0" @@ -3670,29 +3318,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94c7128ba23c81f6471141b90f17654f89ef44a56e14b8a4dd0fddfccd655277" -[[package]] -name = "moka" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b9268097a2cf211ac9955b1cc95e80fa84fff5c2d13ba292916445dc8a311f" -dependencies = [ - "crossbeam-channel 0.5.8", - "crossbeam-epoch", - "crossbeam-utils 0.8.15", - "num_cpus", - "once_cell", - "parking_lot", - "quanta", - "rustc_version 0.4.0", - "scheduled-thread-pool", - "skeptic", - "smallvec", - "tagptr", - "thiserror", - "triomphe", - "uuid 1.3.2", -] - [[package]] name = "more-asserts" version = "0.2.2" @@ -3711,7 +3336,7 @@ version = "0.21.0" dependencies = [ "async-trait", "bimap", - "borsh", + "borsh 0.9.4", "circular-queue", "clru", "data-encoding", @@ -3748,7 +3373,7 @@ dependencies = [ "tempfile", "tendermint-rpc", "thiserror", - "tiny-bip39 0.8.2", + "tiny-bip39", "tiny-hderive", "tokio", "toml 0.5.11", @@ -3773,7 +3398,7 @@ dependencies = [ "ark-ec", "ark-serialize", "bech32 0.8.1", - "borsh", + "borsh 0.9.4", "chrono", "data-encoding", "derivative", @@ -3821,7 +3446,7 @@ dependencies = [ name = "namada_ethereum_bridge" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "ethers", "eyre", "itertools", @@ -3850,7 +3475,7 @@ dependencies = [ name = "namada_proof_of_stake" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "data-encoding", "derivative", "namada_core", @@ -3864,7 +3489,7 @@ dependencies = [ name = "namada_test_utils" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "namada_core", "strum", ] @@ -3879,8 +3504,6 @@ dependencies = [ "concat-idents", "derivative", "hyper", - "ibc-relayer", - "ibc-relayer-types", "lazy_static", "namada", "namada_core", @@ -3894,6 +3517,7 @@ dependencies = [ "serde_json", "sha2 0.9.9", "tempfile", + "tendermint-light-client", "test-log", "tokio", "tracing", @@ -3904,7 +3528,7 @@ dependencies = [ name = "namada_tx_prelude" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "masp_primitives", "namada_core", "namada_macros", @@ -3918,7 +3542,7 @@ dependencies = [ name = "namada_vm_env" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "masp_primitives", "namada_core", ] @@ -3927,7 +3551,7 @@ dependencies = [ name = "namada_vp_prelude" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "namada_core", "namada_macros", "namada_proof_of_stake", @@ -3940,7 +3564,7 @@ dependencies = [ name = "namada_wasm" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "getrandom 0.2.9", "masp_primitives", "namada", @@ -4010,7 +3634,6 @@ dependencies = [ "autocfg", "num-integer", "num-traits", - "serde", ] [[package]] @@ -4086,7 +3709,6 @@ dependencies = [ "num-bigint 0.4.3", "num-integer", "num-traits", - "serde", ] [[package]] @@ -4463,7 +4085,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.7", + "der", "spki", ] @@ -4577,7 +4199,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" dependencies = [ "bit-set", - "bitflags 1.3.2", + "bitflags", "byteorder", "lazy_static", "num-traits", @@ -4664,33 +4286,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "pulldown-cmark" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d9cc634bc78768157b5cbfe988ffcd1dcba95cd2b2f03a88316c08c6d00ed63" -dependencies = [ - "bitflags 1.3.2", - "memchr", - "unicase", -] - -[[package]] -name = "quanta" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e31331286705f455e56cca62e0e717158474ff02b7936c1fa596d983f4ae27" -dependencies = [ - "crossbeam-utils 0.8.15", - "libc", - "mach", - "once_cell", - "raw-cpuid", - "wasi 0.10.2+wasi-snapshot-preview1", - "web-sys", - "winapi", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -4798,15 +4393,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "raw-cpuid" -version = "10.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "rayon" version = "1.5.3" @@ -4853,7 +4439,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] @@ -4862,7 +4448,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] @@ -4925,7 +4511,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76e189c2369884dce920945e2ddf79b3dff49e071a167dd1817fa9c4c00d512e" dependencies = [ - "bitflags 1.3.2", + "bitflags", "libc", "mach", "winapi", @@ -4974,23 +4560,6 @@ dependencies = [ "winreg", ] -[[package]] -name = "retry" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9166d72162de3575f950507683fac47e30f6f2c3836b71b7fbc61aa517c9c5f4" - -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac 0.12.1", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -5025,17 +4594,6 @@ dependencies = [ "digest 0.10.6", ] -[[package]] -name = "ripemd160" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "rkyv" version = "0.7.41" @@ -5125,24 +4683,11 @@ version = "0.37.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" dependencies = [ - "bitflags 1.3.2", + "bitflags", "errno", "io-lifetimes", "libc", - "linux-raw-sys 0.3.7", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" -dependencies = [ - "bitflags 2.3.3", - "errno", - "libc", - "linux-raw-sys 0.4.3", + "linux-raw-sys", "windows-sys 0.48.0", ] @@ -5183,27 +4728,6 @@ dependencies = [ "security-framework", ] -[[package]] -name = "rustls-native-certs" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" -dependencies = [ - "openssl-probe", - "rustls-pemfile", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" -dependencies = [ - "base64 0.21.0", -] - [[package]] name = "rustversion" version = "1.0.12" @@ -5326,15 +4850,6 @@ dependencies = [ "windows-sys 0.42.0", ] -[[package]] -name = "scheduled-thread-pool" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" -dependencies = [ - "parking_lot", -] - [[package]] name = "scopeguard" version = "1.1.0" @@ -5379,61 +4894,27 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" -[[package]] -name = "sec1" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" -dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array 0.14.7", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "sec1" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ - "base16ct 0.2.0", - "der 0.7.7", + "base16ct", + "der", "generic-array 0.14.7", "pkcs8", "subtle 2.4.1", "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys", - "serde", -] - -[[package]] -name = "secp256k1-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" -dependencies = [ - "cc", -] - [[package]] name = "security-framework" version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -5571,19 +5052,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha-1" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "sha1" version = "0.10.5" @@ -5664,10 +5132,6 @@ name = "signature" version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.6", - "rand_core 0.6.4", -] [[package]] name = "signature" @@ -5691,21 +5155,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc47a29ce97772ca5c927f75bac34866b16d64e07f330c3248e2d7226623901b" -[[package]] -name = "skeptic" -version = "0.13.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" -dependencies = [ - "bytecount", - "cargo_metadata 0.14.2", - "error-chain", - "glob", - "pulldown-cmark", - "tempfile", - "walkdir", -] - [[package]] name = "slab" version = "0.4.8" @@ -5745,7 +5194,7 @@ name = "sparse-merkle-tree" version = "0.3.1-pre" source = "git+https://github.com/heliaxdev/sparse-merkle-tree?rev=e086b235ed6e68929bf73f617dd61cd17b000a56#e086b235ed6e68929bf73f617dd61cd17b000a56" dependencies = [ - "borsh", + "borsh 0.9.4", "cfg-if 1.0.0", "ics23", "sha2 0.9.9", @@ -5764,7 +5213,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", - "der 0.7.7", + "der", ] [[package]] @@ -5869,18 +5318,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - [[package]] name = "tap" version = "1.0.1" @@ -5902,7 +5339,7 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "redox_syscall 0.3.5", - "rustix 0.37.19", + "rustix", "windows-sys 0.45.0", ] @@ -5917,12 +5354,10 @@ dependencies = [ "ed25519-dalek", "flex-error", "futures", - "k256 0.11.6", "num-traits", "once_cell", "prost", "prost-types", - "ripemd160", "serde", "serde_bytes", "serde_json", @@ -6005,7 +5440,6 @@ version = "0.23.6" source = "git+https://github.com/heliaxdev/tendermint-rs.git?rev=b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7#b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7" dependencies = [ "async-trait", - "async-tungstenite", "bytes", "flex-error", "futures", @@ -6028,7 +5462,7 @@ dependencies = [ "tokio", "tracing", "url", - "uuid 0.8.2", + "uuid", "walkdir", ] @@ -6132,25 +5566,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "tiny-bip39" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" -dependencies = [ - "anyhow", - "hmac 0.12.1", - "once_cell", - "pbkdf2 0.11.0", - "rand 0.8.5", - "rustc-hash", - "sha2 0.10.6", - "thiserror", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - [[package]] name = "tiny-hderive" version = "0.3.0" @@ -6207,16 +5622,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.1.0" @@ -6239,28 +5644,6 @@ dependencies = [ "webpki 0.21.4", ] -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls 0.20.8", - "tokio", - "webpki 0.22.0", -] - -[[package]] -name = "tokio-stream" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.8" @@ -6318,41 +5701,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tonic" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.13.1", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "rustls-native-certs 0.6.2", - "rustls-pemfile", - "tokio", - "tokio-rustls 0.23.4", - "tokio-stream", - "tokio-util", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", -] - [[package]] name = "tonic-build" version = "0.8.4" @@ -6366,32 +5714,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - [[package]] name = "tower-service" version = "0.3.2" @@ -6456,42 +5778,17 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "triomphe" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1ee9bd9239c339d714d657fac840c6d2a4f9c45f4f9ec7b0975113458be78db" - [[package]] name = "try-lock" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" -[[package]] -name = "tungstenite" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ada8297e8d70872fa9a551d93250a9f407beb9f37ef86494eb20012a2ff7c24" -dependencies = [ - "base64 0.13.1", - "byteorder", - "bytes", - "http", - "httparse", - "input_buffer", - "log", - "rand 0.8.5", - "sha-1", - "url", - "utf-8", -] - [[package]] name = "tx_template" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "getrandom 0.2.9", "namada_tests", "namada_tx_prelude", @@ -6528,15 +5825,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.13" @@ -6597,12 +5885,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "utf8parse" version = "0.2.1" @@ -6619,15 +5901,6 @@ dependencies = [ "serde", ] -[[package]] -name = "uuid" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dad5567ad0cf5b760e5665964bec1b47dfd077ba8a2544b513f3556d3d239a2" -dependencies = [ - "getrandom 0.2.9", -] - [[package]] name = "version_check" version = "0.9.4" @@ -6638,7 +5911,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" name = "vp_template" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "getrandom 0.2.9", "namada_tests", "namada_vp_prelude", @@ -6680,12 +5953,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" diff --git a/wasm_for_tests/wasm_source/Cargo.lock b/wasm_for_tests/wasm_source/Cargo.lock index 82b1af7dd10..4fe9bd4b197 100644 --- a/wasm_for_tests/wasm_source/Cargo.lock +++ b/wasm_for_tests/wasm_source/Cargo.lock @@ -278,28 +278,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" -[[package]] -name = "async-stream" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - [[package]] name = "async-trait" version = "0.1.68" @@ -311,22 +289,6 @@ dependencies = [ "syn 2.0.16", ] -[[package]] -name = "async-tungstenite" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00550829ef8e2c4115250d0ee43305649b0fa95f78a32ce5b07da0b73d95c5c" -dependencies = [ - "futures-io", - "futures-util", - "log", - "pin-project-lite", - "tokio", - "tokio-rustls 0.22.0", - "tungstenite", - "webpki-roots 0.21.1", -] - [[package]] name = "async_io_stream" version = "0.3.3" @@ -356,51 +318,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "axum" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" -dependencies = [ - "async-trait", - "axum-core", - "bitflags 1.3.2", - "bytes", - "futures-util", - "http", - "http-body", - "hyper", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "mime", - "rustversion", - "tower-layer", - "tower-service", -] - [[package]] name = "backtrace" version = "0.3.67" @@ -416,12 +333,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - [[package]] name = "base16ct" version = "0.2.0" @@ -464,12 +375,6 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - [[package]] name = "bellman" version = "0.13.1" @@ -533,39 +438,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" -[[package]] -name = "bitcoin" -version = "0.29.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0694ea59225b0c5f3cb405ff3f670e4828358ed26aec49dc352f730f0cb1a8a3" -dependencies = [ - "bech32 0.9.1", - "bitcoin_hashes", - "secp256k1", - "serde", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" -dependencies = [ - "serde", -] - [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitflags" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" - [[package]] name = "bitvec" version = "0.17.4" @@ -706,17 +584,40 @@ name = "borsh" version = "0.9.4" source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" dependencies = [ - "borsh-derive", + "borsh-derive 0.9.4", "hashbrown 0.11.2", ] +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", + "hashbrown 0.12.3", +] + [[package]] name = "borsh-derive" version = "0.9.4" source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.9.4", + "borsh-schema-derive-internal 0.9.4", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -732,6 +633,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "borsh-schema-derive-internal" version = "0.9.4" @@ -742,6 +654,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "bs58" version = "0.4.0" @@ -791,12 +714,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "bytecount" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" - [[package]] name = "byteorder" version = "1.4.3" @@ -830,19 +747,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo_metadata" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.17", - "serde", - "serde_json", -] - [[package]] name = "cargo_metadata" version = "0.15.4" @@ -953,18 +857,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.11" +version = "4.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d" +checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.3.11" +version = "4.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b" +checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" dependencies = [ "anstream", "anstyle", @@ -995,7 +899,7 @@ dependencies = [ "digest 0.10.6", "getrandom 0.2.9", "hmac 0.12.1", - "k256 0.13.1", + "k256", "lazy_static", "serde", "sha2 0.10.6", @@ -1254,18 +1158,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array 0.14.7", - "rand_core 0.6.4", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.5.2" @@ -1408,15 +1300,6 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" -[[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", -] - [[package]] name = "der" version = "0.7.7" @@ -1494,16 +1377,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.3.7" @@ -1515,17 +1388,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "displaydoc" version = "0.2.4" @@ -1555,7 +1417,7 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "add9a102807b524ec050363f09e06f1504214b0e1c7797f64261c891022dce8b" dependencies = [ - "bitflags 1.3.2", + "bitflags", "byteorder", "lazy_static", "proc-macro-error", @@ -1575,28 +1437,16 @@ dependencies = [ "memmap2", ] -[[package]] -name = "ecdsa" -version = "0.14.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] - [[package]] name = "ecdsa" version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428" dependencies = [ - "der 0.7.7", + "der", "digest 0.10.6", - "elliptic-curve 0.13.5", - "rfc6979 0.4.0", + "elliptic-curve", + "rfc6979", "signature 2.1.0", "spki", ] @@ -1642,58 +1492,27 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ed25519-dalek-bip32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "hmac 0.12.1", - "sha2 0.10.6", -] - [[package]] name = "either" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" -[[package]] -name = "elliptic-curve" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.6", - "ff 0.12.1", - "generic-array 0.14.7", - "group 0.12.1", - "rand_core 0.6.4", - "sec1 0.3.0", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "elliptic-curve" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.2", + "base16ct", + "crypto-bigint", "digest 0.10.6", "ff 0.13.0", "generic-array 0.14.7", "group 0.13.0", "pkcs8", "rand_core 0.6.4", - "sec1 0.7.2", + "sec1", "subtle 2.4.1", "zeroize", ] @@ -1716,7 +1535,7 @@ dependencies = [ "base64 0.13.1", "bytes", "hex", - "k256 0.13.1", + "k256", "log", "rand 0.8.5", "rlp", @@ -1802,15 +1621,6 @@ dependencies = [ "libc", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check", -] - [[package]] name = "eth-keystore" version = "0.5.0" @@ -1830,7 +1640,7 @@ dependencies = [ "sha2 0.10.6", "sha3", "thiserror", - "uuid 0.8.2", + "uuid", ] [[package]] @@ -2031,13 +1841,13 @@ checksum = "6da5fa198af0d3be20c19192df2bd9590b92ce09a8421e793bec8851270f1b05" dependencies = [ "arrayvec", "bytes", - "cargo_metadata 0.15.4", + "cargo_metadata", "chrono", - "elliptic-curve 0.13.5", + "elliptic-curve", "ethabi", "generic-array 0.14.7", "hex", - "k256 0.13.1", + "k256", "num_enum", "once_cell", "open-fastrlp", @@ -2140,7 +1950,7 @@ dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve 0.13.5", + "elliptic-curve", "eth-keystore", "ethers-core", "hex", @@ -2197,7 +2007,7 @@ dependencies = [ "bincode", "blake2", "blake2b_simd", - "borsh", + "borsh 0.9.4", "digest 0.10.6", "ed25519-dalek", "either", @@ -2496,12 +2306,6 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - [[package]] name = "gloo-timers" version = "0.2.6" @@ -2639,15 +2443,6 @@ dependencies = [ "fxhash", ] -[[package]] -name = "hdpath" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ae1615f843ce3981b47468f3f7c435ac17deb33c2261e64d7f1e87f5c11acc" -dependencies = [ - "byteorder", -] - [[package]] name = "headers" version = "0.3.8" @@ -2655,7 +2450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" dependencies = [ "base64 0.13.1", - "bitflags 1.3.2", + "bitflags", "bytes", "headers-core", "http", @@ -2801,22 +2596,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "humantime-serde" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" -dependencies = [ - "humantime", - "serde", -] - [[package]] name = "hyper" version = "0.14.26" @@ -2853,9 +2632,9 @@ dependencies = [ "http", "hyper", "hyper-rustls", - "rustls-native-certs 0.5.0", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", + "tokio-rustls", "tower-service", "webpki 0.21.4", ] @@ -2871,25 +2650,13 @@ dependencies = [ "hyper", "log", "rustls 0.19.1", - "rustls-native-certs 0.5.0", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", + "tokio-rustls", "webpki 0.21.4", "webpki-roots 0.21.1", ] -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - [[package]] name = "iana-time-zone" version = "0.1.56" @@ -2915,8 +2682,8 @@ dependencies = [ [[package]] name = "ibc" -version = "0.36.0" -source = "git+https://github.com/heliaxdev/cosmos-ibc-rs.git?rev=634f4ede136d045dd6f1ff8f4984dd0006aa15f0#634f4ede136d045dd6f1ff8f4984dd0006aa15f0" +version = "0.41.0" +source = "git+https://github.com/heliaxdev/cosmos-ibc-rs.git?rev=1797c2b38eb4a718a63a171f59948f08b427bb1f#1797c2b38eb4a718a63a171f59948f08b427bb1f" dependencies = [ "bytes", "cfg-if 1.0.0", @@ -2947,113 +2714,26 @@ dependencies = [ [[package]] name = "ibc-proto" -version = "0.26.0" -source = "git+https://github.com/heliaxdev/ibc-proto-rs.git?rev=bb16e17a4d9260d5f20516a8eda43fa52377fad2#bb16e17a4d9260d5f20516a8eda43fa52377fad2" +version = "0.30.0" +source = "git+https://github.com/heliaxdev/ibc-proto-rs.git?rev=349582059c0cf1f4cdce9e93b33552687c9df54a#349582059c0cf1f4cdce9e93b33552687c9df54a" dependencies = [ - "base64 0.13.1", + "base64 0.21.0", + "borsh 0.10.3", "bytes", "flex-error", + "parity-scale-codec", "prost", + "scale-info", "serde", "subtle-encoding", "tendermint-proto", - "tonic", ] [[package]] -name = "ibc-relayer" -version = "0.22.0" -source = "git+https://github.com/heliaxdev/hermes.git?rev=fea6928dace1af3e38c5b223f933c1d07720811d#fea6928dace1af3e38c5b223f933c1d07720811d" -dependencies = [ - "anyhow", - "async-stream", - "bech32 0.9.1", - "bitcoin", - "bs58", - "bytes", - "crossbeam-channel 0.5.8", - "digest 0.10.6", - "dirs-next", - "ed25519", - "ed25519-dalek", - "ed25519-dalek-bip32", - "flex-error", - "futures", - "generic-array 0.14.7", - "hdpath", - "hex", - "http", - "humantime", - "humantime-serde", - "ibc-proto", - "ibc-relayer-types", - "itertools", - "moka", - "num-bigint 0.4.3", - "num-rational 0.4.1", - "prost", - "regex", - "retry", - "ripemd", - "secp256k1", - "semver 1.0.17", - "serde", - "serde_derive", - "serde_json", - "sha2 0.10.6", - "signature 1.6.4", - "strum", - "subtle-encoding", - "tendermint", - "tendermint-light-client", - "tendermint-light-client-verifier", - "tendermint-proto", - "tendermint-rpc", - "thiserror", - "tiny-bip39 1.0.0", - "tiny-keccak", - "tokio", - "toml 0.5.11", - "tonic", - "tracing", - "uuid 1.3.2", -] - -[[package]] -name = "ibc-relayer-types" -version = "0.22.0" -source = "git+https://github.com/heliaxdev/hermes.git?rev=fea6928dace1af3e38c5b223f933c1d07720811d#fea6928dace1af3e38c5b223f933c1d07720811d" -dependencies = [ - "bytes", - "derive_more", - "dyn-clone", - "erased-serde", - "flex-error", - "ibc-proto", - "ics23", - "itertools", - "num-rational 0.4.1", - "primitive-types", - "prost", - "safe-regex", - "serde", - "serde_derive", - "serde_json", - "subtle-encoding", - "tendermint", - "tendermint-light-client-verifier", - "tendermint-proto", - "tendermint-rpc", - "tendermint-testgen", - "time", - "uint", -] - -[[package]] -name = "ics23" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca44b684ce1859cff746ff46f5765ab72e12e3c06f76a8356db8f9a2ecf43f17" +name = "ics23" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca44b684ce1859cff746ff46f5765ab72e12e3c06f76a8356db8f9a2ecf43f17" dependencies = [ "anyhow", "bytes", @@ -3149,7 +2829,7 @@ name = "index-set" version = "0.7.1" source = "git+https://github.com/heliaxdev/index-set?tag=v0.7.1#dc24cdbbe3664514d59f1a4c4031863fc565f1c2" dependencies = [ - "borsh", + "borsh 0.9.4", "serde", ] @@ -3183,15 +2863,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "input_buffer" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97967975f448f1a7ddb12b0bc41069d09ed6a1c161a92687e057325db35d413" -dependencies = [ - "bytes", -] - [[package]] name = "instant" version = "0.1.12" @@ -3232,12 +2903,13 @@ checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ "hermit-abi 0.3.1", - "rustix 0.38.3", + "io-lifetimes", + "rustix", "windows-sys 0.48.0", ] @@ -3279,18 +2951,6 @@ dependencies = [ "subtle 2.4.1", ] -[[package]] -name = "k256" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" -dependencies = [ - "cfg-if 1.0.0", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.6", -] - [[package]] name = "k256" version = "0.13.1" @@ -3298,8 +2958,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if 1.0.0", - "ecdsa 0.16.7", - "elliptic-curve 0.13.5", + "ecdsa", + "elliptic-curve", "once_cell", "sha2 0.10.6", "signature 2.1.0", @@ -3328,9 +2988,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" [[package]] name = "libloading" @@ -3414,12 +3074,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" -[[package]] -name = "linux-raw-sys" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" - [[package]] name = "lock_api" version = "0.4.9" @@ -3471,7 +3125,7 @@ name = "masp_note_encryption" version = "0.2.0" source = "git+https://github.com/anoma/masp?rev=252a6059565b125c1444e9e7d0b7c8da0fba8f8f#252a6059565b125c1444e9e7d0b7c8da0fba8f8f" dependencies = [ - "borsh", + "borsh 0.9.4", "chacha20 0.9.1", "chacha20poly1305", "cipher 0.4.4", @@ -3490,7 +3144,7 @@ dependencies = [ "blake2b_simd", "blake2s_simd", "bls12_381", - "borsh", + "borsh 0.9.4", "byteorder", "ff 0.12.1", "fpe", @@ -3539,12 +3193,6 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matchit" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" - [[package]] name = "maybe-uninit" version = "2.0.0" @@ -3670,29 +3318,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94c7128ba23c81f6471141b90f17654f89ef44a56e14b8a4dd0fddfccd655277" -[[package]] -name = "moka" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b9268097a2cf211ac9955b1cc95e80fa84fff5c2d13ba292916445dc8a311f" -dependencies = [ - "crossbeam-channel 0.5.8", - "crossbeam-epoch", - "crossbeam-utils 0.8.15", - "num_cpus", - "once_cell", - "parking_lot", - "quanta", - "rustc_version 0.4.0", - "scheduled-thread-pool", - "skeptic", - "smallvec", - "tagptr", - "thiserror", - "triomphe", - "uuid 1.3.2", -] - [[package]] name = "more-asserts" version = "0.2.2" @@ -3711,7 +3336,7 @@ version = "0.21.0" dependencies = [ "async-trait", "bimap", - "borsh", + "borsh 0.9.4", "circular-queue", "clru", "data-encoding", @@ -3748,7 +3373,7 @@ dependencies = [ "tempfile", "tendermint-rpc", "thiserror", - "tiny-bip39 0.8.2", + "tiny-bip39", "tiny-hderive", "tokio", "toml 0.5.11", @@ -3773,7 +3398,7 @@ dependencies = [ "ark-ec", "ark-serialize", "bech32 0.8.1", - "borsh", + "borsh 0.9.4", "chrono", "data-encoding", "derivative", @@ -3821,7 +3446,7 @@ dependencies = [ name = "namada_ethereum_bridge" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "ethers", "eyre", "itertools", @@ -3850,7 +3475,7 @@ dependencies = [ name = "namada_proof_of_stake" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "data-encoding", "derivative", "namada_core", @@ -3864,7 +3489,7 @@ dependencies = [ name = "namada_test_utils" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "namada_core", "strum", ] @@ -3879,8 +3504,6 @@ dependencies = [ "concat-idents", "derivative", "hyper", - "ibc-relayer", - "ibc-relayer-types", "lazy_static", "namada", "namada_core", @@ -3894,6 +3517,7 @@ dependencies = [ "serde_json", "sha2 0.9.9", "tempfile", + "tendermint-light-client", "test-log", "tokio", "tracing", @@ -3904,7 +3528,7 @@ dependencies = [ name = "namada_tx_prelude" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "masp_primitives", "namada_core", "namada_macros", @@ -3918,7 +3542,7 @@ dependencies = [ name = "namada_vm_env" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "masp_primitives", "namada_core", ] @@ -3927,7 +3551,7 @@ dependencies = [ name = "namada_vp_prelude" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "namada_core", "namada_macros", "namada_proof_of_stake", @@ -3940,7 +3564,7 @@ dependencies = [ name = "namada_wasm_for_tests" version = "0.21.0" dependencies = [ - "borsh", + "borsh 0.9.4", "getrandom 0.2.9", "namada_test_utils", "namada_tests", @@ -4003,7 +3627,6 @@ dependencies = [ "autocfg", "num-integer", "num-traits", - "serde", ] [[package]] @@ -4079,7 +3702,6 @@ dependencies = [ "num-bigint 0.4.3", "num-integer", "num-traits", - "serde", ] [[package]] @@ -4456,7 +4078,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.7", + "der", "spki", ] @@ -4570,7 +4192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" dependencies = [ "bit-set", - "bitflags 1.3.2", + "bitflags", "byteorder", "lazy_static", "num-traits", @@ -4657,33 +4279,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "pulldown-cmark" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d9cc634bc78768157b5cbfe988ffcd1dcba95cd2b2f03a88316c08c6d00ed63" -dependencies = [ - "bitflags 1.3.2", - "memchr", - "unicase", -] - -[[package]] -name = "quanta" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e31331286705f455e56cca62e0e717158474ff02b7936c1fa596d983f4ae27" -dependencies = [ - "crossbeam-utils 0.8.15", - "libc", - "mach", - "once_cell", - "raw-cpuid", - "wasi 0.10.2+wasi-snapshot-preview1", - "web-sys", - "winapi", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -4791,15 +4386,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "raw-cpuid" -version = "10.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "rayon" version = "1.5.3" @@ -4846,7 +4432,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] @@ -4855,7 +4441,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] @@ -4918,7 +4504,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76e189c2369884dce920945e2ddf79b3dff49e071a167dd1817fa9c4c00d512e" dependencies = [ - "bitflags 1.3.2", + "bitflags", "libc", "mach", "winapi", @@ -4967,23 +4553,6 @@ dependencies = [ "winreg", ] -[[package]] -name = "retry" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9166d72162de3575f950507683fac47e30f6f2c3836b71b7fbc61aa517c9c5f4" - -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac 0.12.1", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -5018,17 +4587,6 @@ dependencies = [ "digest 0.10.6", ] -[[package]] -name = "ripemd160" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "rkyv" version = "0.7.41" @@ -5118,24 +4676,11 @@ version = "0.37.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" dependencies = [ - "bitflags 1.3.2", + "bitflags", "errno", "io-lifetimes", "libc", - "linux-raw-sys 0.3.7", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4" -dependencies = [ - "bitflags 2.3.3", - "errno", - "libc", - "linux-raw-sys 0.4.3", + "linux-raw-sys", "windows-sys 0.48.0", ] @@ -5176,27 +4721,6 @@ dependencies = [ "security-framework", ] -[[package]] -name = "rustls-native-certs" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" -dependencies = [ - "openssl-probe", - "rustls-pemfile", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" -dependencies = [ - "base64 0.21.0", -] - [[package]] name = "rustversion" version = "1.0.12" @@ -5319,15 +4843,6 @@ dependencies = [ "windows-sys 0.42.0", ] -[[package]] -name = "scheduled-thread-pool" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" -dependencies = [ - "parking_lot", -] - [[package]] name = "scopeguard" version = "1.1.0" @@ -5372,61 +4887,27 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" -[[package]] -name = "sec1" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" -dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array 0.14.7", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "sec1" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ - "base16ct 0.2.0", - "der 0.7.7", + "base16ct", + "der", "generic-array 0.14.7", "pkcs8", "subtle 2.4.1", "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys", - "serde", -] - -[[package]] -name = "secp256k1-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" -dependencies = [ - "cc", -] - [[package]] name = "security-framework" version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -5564,19 +5045,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha-1" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "sha1" version = "0.10.5" @@ -5657,10 +5125,6 @@ name = "signature" version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.6", - "rand_core 0.6.4", -] [[package]] name = "signature" @@ -5684,21 +5148,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc47a29ce97772ca5c927f75bac34866b16d64e07f330c3248e2d7226623901b" -[[package]] -name = "skeptic" -version = "0.13.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" -dependencies = [ - "bytecount", - "cargo_metadata 0.14.2", - "error-chain", - "glob", - "pulldown-cmark", - "tempfile", - "walkdir", -] - [[package]] name = "slab" version = "0.4.8" @@ -5738,7 +5187,7 @@ name = "sparse-merkle-tree" version = "0.3.1-pre" source = "git+https://github.com/heliaxdev/sparse-merkle-tree?rev=e086b235ed6e68929bf73f617dd61cd17b000a56#e086b235ed6e68929bf73f617dd61cd17b000a56" dependencies = [ - "borsh", + "borsh 0.9.4", "cfg-if 1.0.0", "ics23", "sha2 0.9.9", @@ -5757,7 +5206,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", - "der 0.7.7", + "der", ] [[package]] @@ -5862,18 +5311,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - [[package]] name = "tap" version = "1.0.1" @@ -5895,7 +5332,7 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "redox_syscall 0.3.5", - "rustix 0.37.19", + "rustix", "windows-sys 0.45.0", ] @@ -5910,12 +5347,10 @@ dependencies = [ "ed25519-dalek", "flex-error", "futures", - "k256 0.11.6", "num-traits", "once_cell", "prost", "prost-types", - "ripemd160", "serde", "serde_bytes", "serde_json", @@ -5998,7 +5433,6 @@ version = "0.23.6" source = "git+https://github.com/heliaxdev/tendermint-rs.git?rev=b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7#b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7" dependencies = [ "async-trait", - "async-tungstenite", "bytes", "flex-error", "futures", @@ -6021,7 +5455,7 @@ dependencies = [ "tokio", "tracing", "url", - "uuid 0.8.2", + "uuid", "walkdir", ] @@ -6125,25 +5559,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "tiny-bip39" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" -dependencies = [ - "anyhow", - "hmac 0.12.1", - "once_cell", - "pbkdf2 0.11.0", - "rand 0.8.5", - "rustc-hash", - "sha2 0.10.6", - "thiserror", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - [[package]] name = "tiny-hderive" version = "0.3.0" @@ -6200,16 +5615,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.1.0" @@ -6232,28 +5637,6 @@ dependencies = [ "webpki 0.21.4", ] -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls 0.20.8", - "tokio", - "webpki 0.22.0", -] - -[[package]] -name = "tokio-stream" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.8" @@ -6311,41 +5694,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tonic" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.13.1", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "rustls-native-certs 0.6.2", - "rustls-pemfile", - "tokio", - "tokio-rustls 0.23.4", - "tokio-stream", - "tokio-util", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", -] - [[package]] name = "tonic-build" version = "0.8.4" @@ -6359,32 +5707,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - [[package]] name = "tower-service" version = "0.3.2" @@ -6449,37 +5771,12 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "triomphe" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1ee9bd9239c339d714d657fac840c6d2a4f9c45f4f9ec7b0975113458be78db" - [[package]] name = "try-lock" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" -[[package]] -name = "tungstenite" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ada8297e8d70872fa9a551d93250a9f407beb9f37ef86494eb20012a2ff7c24" -dependencies = [ - "base64 0.13.1", - "byteorder", - "bytes", - "http", - "httparse", - "input_buffer", - "log", - "rand 0.8.5", - "sha-1", - "url", - "utf-8", -] - [[package]] name = "typenum" version = "1.16.0" @@ -6510,15 +5807,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.13" @@ -6579,12 +5867,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "utf8parse" version = "0.2.1" @@ -6601,15 +5883,6 @@ dependencies = [ "serde", ] -[[package]] -name = "uuid" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dad5567ad0cf5b760e5665964bec1b47dfd077ba8a2544b513f3556d3d239a2" -dependencies = [ - "getrandom 0.2.9", -] - [[package]] name = "version_check" version = "0.9.4" @@ -6651,12 +5924,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1"