diff --git a/Cargo.lock b/Cargo.lock index df2a9ddbc8..73f7e41440 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -22,7 +22,7 @@ dependencies = [ "arc-swap", "backtrace", "canonical-path", - "clap", + "clap 3.2.25", "color-eyre", "fs-err", "once_cell", @@ -968,7 +968,7 @@ dependencies = [ "atty", "bitflags 1.3.2", "clap_derive", - "clap_lex", + "clap_lex 0.2.4", "indexmap 1.9.3", "once_cell", "strsim", @@ -976,13 +976,32 @@ dependencies = [ "textwrap", ] +[[package]] +name = "clap" +version = "4.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708" +dependencies = [ + "anstyle", + "clap_lex 0.7.1", +] + [[package]] name = "clap_complete" version = "3.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8" dependencies = [ - "clap", + "clap 3.2.25", ] [[package]] @@ -1007,6 +1026,12 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "clap_lex" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" + [[package]] name = "coins-bip32" version = "0.8.7" @@ -1584,9 +1609,9 @@ dependencies = [ [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -3267,7 +3292,7 @@ name = "ibc-relayer-cli" version = "1.9.0" dependencies = [ "abscissa_core", - "clap", + "clap 3.2.25", "clap_complete", "color-eyre", "console", @@ -3804,7 +3829,7 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "masp_note_encryption" version = "1.0.0" -source = "git+https://github.com/anoma/masp?rev=4ede1c42d76d6348af8224bc8bfac4404321fe82#4ede1c42d76d6348af8224bc8bfac4404321fe82" +source = "git+https://github.com/anoma/masp?rev=8d83b172698098fba393006016072bc201ed9ab7#8d83b172698098fba393006016072bc201ed9ab7" dependencies = [ "borsh 1.5.0", "chacha20", @@ -3817,7 +3842,7 @@ dependencies = [ [[package]] name = "masp_primitives" version = "1.0.0" -source = "git+https://github.com/anoma/masp?rev=4ede1c42d76d6348af8224bc8bfac4404321fe82#4ede1c42d76d6348af8224bc8bfac4404321fe82" +source = "git+https://github.com/anoma/masp?rev=8d83b172698098fba393006016072bc201ed9ab7#8d83b172698098fba393006016072bc201ed9ab7" dependencies = [ "aes", "bip0039", @@ -3848,7 +3873,7 @@ dependencies = [ [[package]] name = "masp_proofs" version = "1.0.0" -source = "git+https://github.com/anoma/masp?rev=4ede1c42d76d6348af8224bc8bfac4404321fe82#4ede1c42d76d6348af8224bc8bfac4404321fe82" +source = "git+https://github.com/anoma/masp?rev=8d83b172698098fba393006016072bc201ed9ab7#8d83b172698098fba393006016072bc201ed9ab7" dependencies = [ "bellman", "blake2b_simd", @@ -3977,7 +4002,7 @@ checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "namada_account" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "linkme", @@ -3991,7 +4016,7 @@ dependencies = [ [[package]] name = "namada_controller" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "namada_core", "smooth-operator", @@ -4001,7 +4026,7 @@ dependencies = [ [[package]] name = "namada_core" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "bech32 0.8.1", "borsh 1.5.0", @@ -4049,7 +4074,7 @@ dependencies = [ [[package]] name = "namada_ethereum_bridge" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "ethers", @@ -4076,7 +4101,7 @@ dependencies = [ [[package]] name = "namada_events" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "linkme", @@ -4092,7 +4117,7 @@ dependencies = [ [[package]] name = "namada_gas" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "linkme", @@ -4107,7 +4132,7 @@ dependencies = [ [[package]] name = "namada_governance" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "itertools 0.12.1", @@ -4130,7 +4155,7 @@ dependencies = [ [[package]] name = "namada_ibc" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "data-encoding", @@ -4160,7 +4185,7 @@ dependencies = [ [[package]] name = "namada_macros" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "data-encoding", "proc-macro2", @@ -4172,7 +4197,7 @@ dependencies = [ [[package]] name = "namada_merkle_tree" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "eyre", @@ -4187,7 +4212,7 @@ dependencies = [ [[package]] name = "namada_migrations" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "lazy_static", "linkme", @@ -4197,18 +4222,19 @@ dependencies = [ [[package]] name = "namada_parameters" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "namada_core", "namada_macros", "namada_storage", + "smooth-operator", "thiserror", ] [[package]] name = "namada_proof_of_stake" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "konst", @@ -4233,7 +4259,7 @@ dependencies = [ [[package]] name = "namada_replay_protection" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "namada_core", ] @@ -4241,16 +4267,18 @@ dependencies = [ [[package]] name = "namada_sdk" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "async-trait", "bimap", "borsh 1.5.0", "borsh-ext", "circular-queue", + "clap 4.5.8", "data-encoding", "derivation-path", "duration-str", + "either", "ethbridge-bridge-contract", "ethers", "eyre", @@ -4306,15 +4334,19 @@ dependencies = [ [[package]] name = "namada_shielded_token" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", + "lazy_static", "masp_primitives", + "masp_proofs", "namada_controller", "namada_core", + "namada_gas", "namada_parameters", "namada_storage", "namada_trans_token", + "rand_core 0.6.4", "serde", "smooth-operator", "tracing", @@ -4323,7 +4355,7 @@ dependencies = [ [[package]] name = "namada_state" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "itertools 0.12.1", @@ -4347,7 +4379,7 @@ dependencies = [ [[package]] name = "namada_storage" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "itertools 0.12.1", @@ -4367,7 +4399,7 @@ dependencies = [ [[package]] name = "namada_token" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "namada_core", @@ -4382,7 +4414,7 @@ dependencies = [ [[package]] name = "namada_trans_token" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "konst", "namada_core", @@ -4393,12 +4425,13 @@ dependencies = [ [[package]] name = "namada_tx" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "ark-bls12-381", "bitflags 2.5.0", "borsh 1.5.0", "data-encoding", + "either", "konst", "linkme", "masp_primitives", @@ -4411,6 +4444,7 @@ dependencies = [ "num-traits 0.2.18", "prost", "prost-types", + "rand_core 0.6.4", "serde", "serde_json", "sha2 0.9.9", @@ -4421,7 +4455,7 @@ dependencies = [ [[package]] name = "namada_vote_ext" version = "0.39.0" -source = "git+https://github.com/anoma/namada?rev=da7aff487fb7cd6d48c84e5c21192f8be52bf9bb#da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" +source = "git+https://github.com/anoma/namada?rev=59332a22943e47c74cfcec4a2d08281822ba75f9#59332a22943e47c74cfcec4a2d08281822ba75f9" dependencies = [ "borsh 1.5.0", "linkme", diff --git a/Cargo.toml b/Cargo.toml index 05a9c87e1f..28477e9639 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,10 +39,10 @@ tendermint-rpc = { version = "=0.36.0" } tendermint-testgen = { version = "=0.36.0" } # Namada dependencies -namada_ibc = { git = "https://github.com/anoma/namada", rev = "da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" } -namada_parameters = { git = "https://github.com/anoma/namada", rev = "da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" } -namada_sdk = { git = "https://github.com/anoma/namada", rev = "da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" } -namada_token = { git = "https://github.com/anoma/namada", rev = "da7aff487fb7cd6d48c84e5c21192f8be52bf9bb" } +namada_ibc = { git = "https://github.com/anoma/namada", rev = "59332a22943e47c74cfcec4a2d08281822ba75f9" } +namada_parameters = { git = "https://github.com/anoma/namada", rev = "59332a22943e47c74cfcec4a2d08281822ba75f9" } +namada_sdk = { git = "https://github.com/anoma/namada", rev = "59332a22943e47c74cfcec4a2d08281822ba75f9" } +namada_token = { git = "https://github.com/anoma/namada", rev = "59332a22943e47c74cfcec4a2d08281822ba75f9" } # Other dependencies abscissa_core = "=0.6.0" diff --git a/crates/relayer/src/chain/namada/query.rs b/crates/relayer/src/chain/namada/query.rs index e537598701..b5760a51f8 100644 --- a/crates/relayer/src/chain/namada/query.rs +++ b/crates/relayer/src/chain/namada/query.rs @@ -136,12 +136,12 @@ impl NamadaChain { height, )]); } - let events = tx_result.batch_results.0.into_iter().filter_map(|(_, r)| { - r.map(|batched_tx_result| { + let events = tx_result.batch_results.iter().filter_map(|(_, r)| { + r.as_ref().map(|batched_tx_result| { // Get IBC events when the transaction was accepted if batched_tx_result.is_accepted() { - batched_tx_result.events.into_iter().filter_map(|event| { - ibc_event_try_from_abci_event(&event.into()).ok() + batched_tx_result.events.iter().filter_map(|event| { + ibc_event_try_from_abci_event(&event.clone().into()).ok() }).map(|ibc_event| IbcEventWithHeight::new(ibc_event, height)).collect() } else { vec![IbcEventWithHeight::new( diff --git a/crates/relayer/src/chain/namada/tx.rs b/crates/relayer/src/chain/namada/tx.rs index 9f3d5b74a4..7de5c43f6a 100644 --- a/crates/relayer/src/chain/namada/tx.rs +++ b/crates/relayer/src/chain/namada/tx.rs @@ -6,9 +6,11 @@ use std::time::Instant; use ibc_proto::google::protobuf::Any; use itertools::Itertools; +use namada_parameters::storage as param_storage; use namada_sdk::address::{Address, ImplicitAddress}; use namada_sdk::args::TxBuilder; use namada_sdk::args::{Tx as TxArgs, TxCustom}; +use namada_sdk::borsh::BorshDeserialize; use namada_sdk::chain::ChainId; use namada_sdk::tx::{prepare_tx, ProcessTxResponse}; use namada_sdk::{signing, tx, Namada}; @@ -20,6 +22,7 @@ use crate::chain::cosmos::types::gas::max_gas_from_config; use crate::chain::cosmos::types::tx::{TxStatus, TxSyncResult}; use crate::chain::cosmos::wait::all_tx_results_found; use crate::chain::endpoint::ChainEndpoint; +use crate::chain::requests::{IncludeProof, QueryHeight}; use crate::error::{Error, ErrorDetail}; use super::error::{Error as NamadaError, ErrorDetail as NamadaErrorDetail}; @@ -167,6 +170,10 @@ impl NamadaChain { let max_gas = max_gas_from_config(self.config()); let gas_price = self.config().gas_price.price; + let gas_scale_key = param_storage::get_gas_scale_key(); + let (value, _) = self.query(gas_scale_key, QueryHeight::Latest, IncludeProof::No)?; + let gas_scale = u64::try_from_slice(&value[..]).map_err(NamadaError::borsh_decode)?; + let args = args.clone().dry_run_wrapper(true); // Set the max gas to the gas limit for the simulation self.prepare_tx_with_gas(&mut tx, &args, &fee_token, max_gas, gas_price)?; @@ -195,12 +202,10 @@ impl NamadaChain { ProcessTxResponse::DryRun(result) => { if result .batch_results - .0 .iter() .all(|(_, r)| matches!(&r, Ok(result) if result.is_accepted())) { - // Convert with the decimal scale of Gas units - u64::from_str(&result.gas_used.to_string()).expect("Gas should be parsable") + result.gas_used.get_whole_gas_units(gas_scale) } else { // All or some of requests will fail return Err(NamadaError::dry_run(result.batch_results).into()); diff --git a/scripts/setup-namada b/scripts/setup-namada index 024f706ae8..1cb556f84f 100755 --- a/scripts/setup-namada +++ b/scripts/setup-namada @@ -104,7 +104,7 @@ function init_network() { local chain_id=$(NAMADA_BASE_DIR=${base_dir} \ ${NAMADAC} utils init-network \ --chain-prefix namada-${suffix} \ - --genesis-time "2023-01-01T00:00:00Z" \ + --genesis-time "2023-01-01T00:00:00.000000000+00:00" \ --templates-path ${base_dir}/templates \ --wasm-checksums-path ${CHECKSUM_PATH} \ --archive-dir ${base_dir}/genesis \ diff --git a/scripts/setup-namada-single-node b/scripts/setup-namada-single-node index e21d662030..e22a3ed286 100755 --- a/scripts/setup-namada-single-node +++ b/scripts/setup-namada-single-node @@ -86,7 +86,7 @@ function init_network() { local chain_id=$(NAMADA_BASE_DIR=${base_dir} \ ${NAMADAC} utils init-network \ --chain-prefix namada-test \ - --genesis-time "2023-01-01T00:00:00Z" \ + --genesis-time "2023-01-01T00:00:00.000000000+00:00" \ --templates-path ${base_dir}/templates \ --wasm-checksums-path ${CHECKSUM_PATH} \ --archive-dir ${base_dir}/genesis \