diff --git a/.changelog/unreleased/SDK/2225-remove-sdk-lifetimes.md b/.changelog/unreleased/SDK/2225-remove-sdk-lifetimes.md new file mode 100644 index 0000000000..e02e6f8880 --- /dev/null +++ b/.changelog/unreleased/SDK/2225-remove-sdk-lifetimes.md @@ -0,0 +1,2 @@ +- Removed uses of lifetimes in the SDKs Namada trait and implementation + ([\#2225](https://github.com/anoma/namada/pull/2225)) \ No newline at end of file diff --git a/apps/src/bin/namada-client/main.rs b/apps/src/bin/namada-client/main.rs index 770dcf5367..9fdea9c51d 100644 --- a/apps/src/bin/namada-client/main.rs +++ b/apps/src/bin/namada-client/main.rs @@ -16,7 +16,7 @@ async fn main() -> Result<()> { CliApi::handle_client_command::( None, cli::namada_client_cli()?, - &CliIo, + CliIo, ) .await } diff --git a/apps/src/bin/namada-relayer/main.rs b/apps/src/bin/namada-relayer/main.rs index f9d98a2a4e..1eb2679e28 100644 --- a/apps/src/bin/namada-relayer/main.rs +++ b/apps/src/bin/namada-relayer/main.rs @@ -14,5 +14,5 @@ async fn main() -> Result<()> { let cmd = cli::namada_relayer_cli()?; // run the CLI - CliApi::handle_relayer_command::(None, cmd, &CliIo).await + CliApi::handle_relayer_command::(None, cmd, CliIo).await } diff --git a/apps/src/lib/bench_utils.rs b/apps/src/lib/bench_utils.rs index ba2dfaa1e8..1863ea9bf4 100644 --- a/apps/src/lib/bench_utils.rs +++ b/apps/src/lib/bench_utils.rs @@ -93,7 +93,7 @@ pub use namada_sdk::tx::{ TX_WITHDRAW_WASM, VP_USER_WASM, }; use namada_sdk::wallet::Wallet; -use namada_sdk::NamadaImpl; +use namada_sdk::{Namada, NamadaImpl}; use namada_test_utils::tx_data::TxWriteData; use rand_core::OsRng; use sha2::{Digest, Sha256}; @@ -815,11 +815,11 @@ impl Default for BenchShieldedCtx { impl BenchShieldedCtx { pub fn generate_masp_tx( - &mut self, + mut self, amount: Amount, source: TransferSource, target: TransferTarget, - ) -> Tx { + ) -> (Self, Tx) { let denominated_amount = DenominatedAmount { amount, denom: 0.into(), @@ -836,12 +836,13 @@ impl BenchShieldedCtx { &[], )) .unwrap(); + let native_token = self.shell.wl_storage.storage.native_token.clone(); let namada = NamadaImpl::native_new( - &self.shell, - &mut self.wallet, - &mut self.shielded, - &StdIo, - self.shell.wl_storage.storage.native_token.clone(), + self.shell, + self.wallet, + self.shielded, + StdIo, + native_token, ); let shielded = async_runtime .block_on( @@ -873,7 +874,7 @@ impl BenchShieldedCtx { ) }); - self.shell.generate_tx( + let tx = namada.client().generate_tx( TX_TRANSFER_WASM, Transfer { source: source.effective_address(), @@ -886,6 +887,18 @@ impl BenchShieldedCtx { shielded, None, vec![&defaults::albert_keypair()], - ) + ); + let NamadaImpl { + client, + wallet, + shielded, + .. + } = namada; + let ctx = Self { + shielded: shielded.into_inner(), + shell: client, + wallet: wallet.into_inner(), + }; + (ctx, tx) } } diff --git a/apps/src/lib/cli/client.rs b/apps/src/lib/cli/client.rs index 4d56c1e9c1..533d82d2a4 100644 --- a/apps/src/lib/cli/client.rs +++ b/apps/src/lib/cli/client.rs @@ -12,7 +12,7 @@ impl CliApi { pub async fn handle_client_command( client: Option, cmd: cli::NamadaClient, - io: &IO, + io: IO, ) -> Result<()> where C: CliClient, @@ -29,9 +29,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); let dry_run = args.tx.dry_run || args.tx.dry_run_wrapper; tx::submit_custom(&namada, args).await?; @@ -42,7 +42,7 @@ impl CliApi { .save() .unwrap_or_else(|err| eprintln!("{}", err)); } else { - io.println( + namada.io().println( "Transaction dry run. No addresses have been \ saved.", ) @@ -54,9 +54,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_transfer(&namada, args).await?; } Sub::TxIbcTransfer(TxIbcTransfer(mut args)) => { @@ -65,9 +65,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_ibc_transfer(&namada, args).await?; } Sub::TxUpdateAccount(TxUpdateAccount(mut args)) => { @@ -76,9 +76,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_update_account(&namada, args).await?; } Sub::TxInitAccount(TxInitAccount(mut args)) => { @@ -87,9 +87,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); let dry_run = args.tx.dry_run || args.tx.dry_run_wrapper; tx::submit_init_account(&namada, args).await?; @@ -100,7 +100,7 @@ impl CliApi { .save() .unwrap_or_else(|err| eprintln!("{}", err)); } else { - io.println( + namada.io().println( "Transaction dry run. No addresses have been \ saved.", ) @@ -112,18 +112,18 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); let cli::context::ChainContext { - mut wallet, + wallet, mut config, - mut shielded, + shielded, native_token, } = ctx.take_chain_or_exit(); let namada = NamadaImpl::native_new( - &client, - &mut wallet, - &mut shielded, + client, + wallet, + shielded, io, native_token, ); @@ -136,18 +136,18 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); let cli::context::ChainContext { - mut wallet, + wallet, mut config, - mut shielded, + shielded, native_token, } = ctx.take_chain_or_exit(); let namada = NamadaImpl::native_new( - &client, - &mut wallet, - &mut shielded, + client, + wallet, + shielded, io, native_token, ); @@ -160,9 +160,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_init_proposal(&namada, args).await?; } Sub::TxVoteProposal(TxVoteProposal(mut args)) => { @@ -171,9 +171,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_vote_proposal(&namada, args).await?; } Sub::TxRevealPk(TxRevealPk(mut args)) => { @@ -182,9 +182,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_reveal_pk(&namada, args).await?; } Sub::Bond(Bond(mut args)) => { @@ -193,9 +193,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_bond(&namada, args).await?; } Sub::Unbond(Unbond(mut args)) => { @@ -204,9 +204,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_unbond(&namada, args).await?; } Sub::Withdraw(Withdraw(mut args)) => { @@ -215,9 +215,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_withdraw(&namada, args).await?; } Sub::ClaimRewards(ClaimRewards(mut args)) => { @@ -226,9 +226,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_claim_rewards(&namada, args).await?; } Sub::Redelegate(Redelegate(mut args)) => { @@ -237,9 +237,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_redelegate(&namada, args).await?; } Sub::TxCommissionRateChange(TxCommissionRateChange( @@ -250,9 +250,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_validator_commission_change(&namada, args) .await?; } @@ -264,18 +264,18 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); let cli::context::ChainContext { - mut wallet, + wallet, mut config, - mut shielded, + shielded, native_token, } = ctx.take_chain_or_exit(); let namada = NamadaImpl::native_new( - &client, - &mut wallet, - &mut shielded, + client, + wallet, + shielded, io, native_token, ); @@ -292,9 +292,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_validator_metadata_change(&namada, args) .await?; } @@ -306,9 +306,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_bridge_pool_tx(&namada, args).await?; } Sub::TxUnjailValidator(TxUnjailValidator(mut args)) => { @@ -317,9 +317,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_unjail_validator(&namada, args).await?; } Sub::TxDeactivateValidator(TxDeactivateValidator( @@ -330,9 +330,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_deactivate_validator(&namada, args).await?; } Sub::TxReactivateValidator(TxReactivateValidator( @@ -343,9 +343,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_reactivate_validator(&namada, args).await?; } Sub::TxUpdateStewardCommission( @@ -356,9 +356,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_update_steward_commission(&namada, args) .await?; } @@ -368,9 +368,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::submit_resign_steward(&namada, args).await?; } // Ledger queries @@ -378,8 +378,8 @@ impl CliApi { let client = client.unwrap_or_else(|| { C::from_tendermint_address(&mut args.ledger_address) }); - client.wait_until_node_is_synced(io).await?; - let namada = ctx.to_sdk(&client, io); + client.wait_until_node_is_synced(&io).await?; + let namada = ctx.to_sdk(client, io); rpc::query_and_print_epoch(&namada).await; } Sub::QueryValidatorState(QueryValidatorState(mut args)) => { @@ -388,9 +388,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_and_print_validator_state(&namada, args) .await; } @@ -400,9 +400,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_transfers(&namada, args).await; } Sub::QueryConversions(QueryConversions(mut args)) => { @@ -411,17 +411,17 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_conversions(&namada, args).await; } Sub::QueryBlock(QueryBlock(mut args)) => { let client = client.unwrap_or_else(|| { C::from_tendermint_address(&mut args.ledger_address) }); - client.wait_until_node_is_synced(io).await?; - let namada = ctx.to_sdk(&client, io); + client.wait_until_node_is_synced(&io).await?; + let namada = ctx.to_sdk(client, io); rpc::query_block(&namada).await; } Sub::QueryBalance(QueryBalance(mut args)) => { @@ -430,9 +430,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_balance(&namada, args).await; } Sub::QueryBonds(QueryBonds(mut args)) => { @@ -441,9 +441,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_bonds(&namada, args) .await .expect("expected successful query of bonds"); @@ -454,9 +454,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_bonded_stake(&namada, args).await; } Sub::QueryCommissionRate(QueryCommissionRate(mut args)) => { @@ -465,9 +465,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_and_print_commission_rate(&namada, args) .await; } @@ -477,9 +477,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_and_print_metadata(&namada, args).await; } Sub::QuerySlashes(QuerySlashes(mut args)) => { @@ -488,9 +488,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_slashes(&namada, args).await; } Sub::QueryDelegations(QueryDelegations(mut args)) => { @@ -499,9 +499,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_delegations(&namada, args).await; } Sub::QueryFindValidator(QueryFindValidator(mut args)) => { @@ -510,9 +510,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_find_validator(&namada, args).await; } Sub::QueryResult(QueryResult(mut args)) => { @@ -521,9 +521,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_result(&namada, args).await; } Sub::QueryRawBytes(QueryRawBytes(mut args)) => { @@ -532,9 +532,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_raw_bytes(&namada, args).await; } Sub::QueryProposal(QueryProposal(mut args)) => { @@ -543,9 +543,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_proposal(&namada, args).await; } Sub::QueryProposalResult(QueryProposalResult(mut args)) => { @@ -554,9 +554,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_proposal_result(&namada, args).await; } Sub::QueryProtocolParameters(QueryProtocolParameters( @@ -567,9 +567,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_protocol_parameters(&namada, args).await; } Sub::QueryPgf(QueryPgf(mut args)) => { @@ -578,9 +578,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_pgf(&namada, args).await; } Sub::QueryAccount(QueryAccount(mut args)) => { @@ -589,9 +589,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::query_account(&namada, args).await; } Sub::SignTx(SignTx(mut args)) => { @@ -600,9 +600,9 @@ impl CliApi { &mut args.tx.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::sign_tx(&namada, args).await?; } Sub::GenIbcShieldedTransafer(GenIbcShieldedTransafer( @@ -613,9 +613,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); tx::gen_ibc_shielded_transfer(&namada, args).await?; } } @@ -649,9 +649,9 @@ impl CliApi { let mut ledger_address = args.ledger_address.clone(); let client = C::from_tendermint_address(&mut ledger_address); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); rpc::epoch_sleep(&namada, args).await; } Utils::ValidateGenesisTemplates(ValidateGenesisTemplates( diff --git a/apps/src/lib/cli/context.rs b/apps/src/lib/cli/context.rs index 51c8ba4eac..92a1d2eaa1 100644 --- a/apps/src/lib/cli/context.rs +++ b/apps/src/lib/cli/context.rs @@ -165,22 +165,18 @@ impl Context { } /// Make an implementation of Namada from this object and parameters. - pub fn to_sdk<'a, C, IO>( - &'a mut self, - client: &'a C, - io: &'a IO, - ) -> impl Namada + pub fn to_sdk(self, client: C, io: IO) -> impl Namada where C: namada::ledger::queries::Client + Sync, IO: Io, { - let chain_ctx = self.borrow_mut_chain_or_exit(); + let chain_ctx = self.take_chain_or_exit(); NamadaImpl::native_new( client, - &mut chain_ctx.wallet, - &mut chain_ctx.shielded, + chain_ctx.wallet, + chain_ctx.shielded, io, - chain_ctx.native_token.clone(), + chain_ctx.native_token, ) } } diff --git a/apps/src/lib/cli/relayer.rs b/apps/src/lib/cli/relayer.rs index 1dee9b784e..7dc360db4f 100644 --- a/apps/src/lib/cli/relayer.rs +++ b/apps/src/lib/cli/relayer.rs @@ -12,7 +12,7 @@ impl CliApi { pub async fn handle_relayer_command( client: Option, cmd: cli::NamadaRelayer, - io: &impl Io, + io: impl Io, ) -> Result<()> where C: CliClient, @@ -29,9 +29,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk(&mut ctx); - let namada = ctx.to_sdk(&client, io); + let namada = ctx.to_sdk(client, io); bridge_pool::recommend_batch(&namada, args).await?; } } @@ -45,9 +45,9 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk_ctxless(); - bridge_pool::construct_proof(&client, io, args).await?; + bridge_pool::construct_proof(&client, &io, args).await?; } EthBridgePoolWithoutCtx::RelayProof(RelayProof(mut args)) => { let client = client.unwrap_or_else(|| { @@ -55,12 +55,12 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let eth_client = get_eth_rpc_client(&args.eth_rpc_endpoint).await; let args = args.to_sdk_ctxless(); bridge_pool::relay_bridge_pool_proof( - eth_client, &client, io, args, + eth_client, &client, &io, args, ) .await?; } @@ -70,8 +70,8 @@ impl CliApi { let client = client.unwrap_or_else(|| { C::from_tendermint_address(&mut query.ledger_address) }); - client.wait_until_node_is_synced(io).await?; - bridge_pool::query_bridge_pool(&client, io).await?; + client.wait_until_node_is_synced(&io).await?; + bridge_pool::query_bridge_pool(&client, &io).await?; } EthBridgePoolWithoutCtx::QuerySigned( QuerySignedBridgePool(mut query), @@ -79,8 +79,8 @@ impl CliApi { let client = client.unwrap_or_else(|| { C::from_tendermint_address(&mut query.ledger_address) }); - client.wait_until_node_is_synced(io).await?; - bridge_pool::query_signed_bridge_pool(&client, io).await?; + client.wait_until_node_is_synced(&io).await?; + bridge_pool::query_signed_bridge_pool(&client, &io).await?; } EthBridgePoolWithoutCtx::QueryRelays(QueryRelayProgress( mut query, @@ -88,8 +88,8 @@ impl CliApi { let client = client.unwrap_or_else(|| { C::from_tendermint_address(&mut query.ledger_address) }); - client.wait_until_node_is_synced(io).await?; - bridge_pool::query_relay_progress(&client, io).await?; + client.wait_until_node_is_synced(&io).await?; + bridge_pool::query_relay_progress(&client, &io).await?; } }, cli::NamadaRelayer::ValidatorSet(sub) => match sub { @@ -101,10 +101,10 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk_ctxless(); validator_set::query_bridge_validator_set( - &client, io, args, + &client, &io, args, ) .await?; } @@ -116,10 +116,10 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk_ctxless(); validator_set::query_governnace_validator_set( - &client, io, args, + &client, &io, args, ) .await?; } @@ -131,10 +131,10 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let args = args.to_sdk_ctxless(); validator_set::query_validator_set_update_proof( - &client, io, args, + &client, &io, args, ) .await?; } @@ -146,12 +146,12 @@ impl CliApi { &mut args.query.ledger_address, ) }); - client.wait_until_node_is_synced(io).await?; + client.wait_until_node_is_synced(&io).await?; let eth_client = get_eth_rpc_client(&args.eth_rpc_endpoint).await; let args = args.to_sdk_ctxless(); validator_set::relay_validator_set_update( - eth_client, &client, io, args, + eth_client, &client, &io, args, ) .await?; } diff --git a/apps/src/lib/client/rpc.rs b/apps/src/lib/client/rpc.rs index 788e54a80b..d588c52b9f 100644 --- a/apps/src/lib/client/rpc.rs +++ b/apps/src/lib/client/rpc.rs @@ -65,8 +65,8 @@ use crate::facade::tendermint_rpc::error::Error as TError; /// /// If a response is not delivered until `deadline`, we exit the cli with an /// error. -pub async fn query_tx_status<'a>( - namada: &impl Namada<'a>, +pub async fn query_tx_status( + namada: &impl Namada, status: namada_sdk::rpc::TxEventQuery<'_>, deadline: Instant, ) -> Event { @@ -76,14 +76,14 @@ pub async fn query_tx_status<'a>( } /// Query and print the epoch of the last committed block -pub async fn query_and_print_epoch<'a>(context: &impl Namada<'a>) -> Epoch { +pub async fn query_and_print_epoch(context: &impl Namada) -> Epoch { let epoch = rpc::query_epoch(context.client()).await.unwrap(); display_line!(context.io(), "Last committed epoch: {}", epoch); epoch } /// Query the last committed block -pub async fn query_block<'a>(context: &impl Namada<'a>) { +pub async fn query_block(context: &impl Namada) { let block = namada_sdk::rpc::query_block(context.client()) .await .unwrap(); @@ -114,8 +114,8 @@ pub async fn query_results( } /// Query the specified accepted transfers from the ledger -pub async fn query_transfers<'a>( - context: &impl Namada<'a>, +pub async fn query_transfers( + context: &impl Namada, args: args::QueryTransfers, ) { let query_token = args.token; @@ -250,7 +250,7 @@ pub async fn query_transfers<'a>( } /// Query the raw bytes of given storage key -pub async fn query_raw_bytes<'a, N: Namada<'a>>( +pub async fn query_raw_bytes( context: &N, args: args::QueryRawBytes, ) { @@ -281,10 +281,7 @@ pub async fn query_raw_bytes<'a, N: Namada<'a>>( } /// Query token balance(s) -pub async fn query_balance<'a>( - context: &impl Namada<'a>, - args: args::QueryBalance, -) { +pub async fn query_balance(context: &impl Namada, args: args::QueryBalance) { // Query the balances of shielded or transparent account types depending on // the CLI arguments match &args.owner { @@ -309,8 +306,8 @@ pub async fn query_balance<'a>( } /// Query token balance(s) -pub async fn query_transparent_balance<'a>( - context: &impl Namada<'a>, +pub async fn query_transparent_balance( + context: &impl Namada, args: args::QueryBalance, ) { let prefix = Key::from( @@ -386,8 +383,8 @@ pub async fn query_transparent_balance<'a>( } /// Query the token pinned balance(s) -pub async fn query_pinned_balance<'a>( - context: &impl Namada<'a>, +pub async fn query_pinned_balance( + context: &impl Namada, args: args::QueryBalance, ) { // Map addresses to token names @@ -549,8 +546,8 @@ pub async fn query_pinned_balance<'a>( } } -async fn print_balances<'a>( - context: &impl Namada<'a>, +async fn print_balances( + context: &impl Namada, balances: impl Iterator, token: Option<&Address>, target: Option<&Address>, @@ -629,8 +626,8 @@ async fn print_balances<'a>( } } -async fn lookup_token_alias<'a>( - context: &impl Namada<'a>, +async fn lookup_token_alias( + context: &impl Namada, token: &Address, owner: &Address, ) -> String { @@ -649,8 +646,8 @@ async fn lookup_token_alias<'a>( } /// Returns pairs of token alias and token address -async fn query_tokens<'a>( - context: &impl Namada<'a>, +async fn query_tokens( + context: &impl Namada, base_token: Option<&Address>, owner: Option<&Address>, ) -> BTreeMap { @@ -708,8 +705,8 @@ async fn query_tokens<'a>( tokens } -async fn get_ibc_denom_alias<'a>( - context: &impl Namada<'a>, +async fn get_ibc_denom_alias( + context: &impl Namada, ibc_denom: impl AsRef, ) -> String { let wallet = context.wallet().await; @@ -729,10 +726,7 @@ async fn get_ibc_denom_alias<'a>( } /// Query Proposals -pub async fn query_proposal<'a>( - context: &impl Namada<'a>, - args: args::QueryProposal, -) { +pub async fn query_proposal(context: &impl Namada, args: args::QueryProposal) { let current_epoch = query_and_print_epoch(context).await; if let Some(id) = args.proposal_id { @@ -781,8 +775,8 @@ pub async fn query_proposal_by_id( } /// Query token shielded balance(s) -pub async fn query_shielded_balance<'a>( - context: &impl Namada<'a>, +pub async fn query_shielded_balance( + context: &impl Namada, args: args::QueryBalance, ) { // Used to control whether balances for all keys or a specific key are @@ -1050,8 +1044,8 @@ pub async fn query_shielded_balance<'a>( } } -pub async fn print_decoded_balance<'a>( - context: &impl Namada<'a>, +pub async fn print_decoded_balance( + context: &impl Namada, decoded_balance: MaspAmount, epoch: Epoch, ) { @@ -1072,8 +1066,8 @@ pub async fn print_decoded_balance<'a>( } } -pub async fn print_decoded_balance_with_epoch<'a>( - context: &impl Namada<'a>, +pub async fn print_decoded_balance_with_epoch( + context: &impl Namada, decoded_balance: MaspAmount, ) { let tokens = context @@ -1110,8 +1104,8 @@ pub async fn get_token_balance( .unwrap() } -pub async fn query_proposal_result<'a>( - context: &impl Namada<'a>, +pub async fn query_proposal_result( + context: &impl Namada, args: args::QueryProposalResult, ) { if args.proposal_id.is_some() { @@ -1250,10 +1244,7 @@ pub async fn query_proposal_result<'a>( } } -pub async fn query_account<'a>( - context: &impl Namada<'a>, - args: args::QueryAccount, -) { +pub async fn query_account(context: &impl Namada, args: args::QueryAccount) { let account = rpc::get_account_info(context.client(), &args.owner) .await .unwrap(); @@ -1269,7 +1260,7 @@ pub async fn query_account<'a>( } } -pub async fn query_pgf<'a>(context: &impl Namada<'a>, _args: args::QueryPgf) { +pub async fn query_pgf(context: &impl Namada, _args: args::QueryPgf) { let stewards = query_pgf_stewards(context.client()).await; let fundings = query_pgf_fundings(context.client()).await; @@ -1320,8 +1311,8 @@ pub async fn query_pgf<'a>(context: &impl Namada<'a>, _args: args::QueryPgf) { } } -pub async fn query_protocol_parameters<'a>( - context: &impl Namada<'a>, +pub async fn query_protocol_parameters( + context: &impl Namada, _args: args::QueryProtocolParameters, ) { let governance_parameters = @@ -1578,8 +1569,8 @@ pub async fn query_pgf_parameters( unwrap_client_response::(RPC.vp().pgf().parameters(client).await) } -pub async fn query_and_print_unbonds<'a>( - context: &impl Namada<'a>, +pub async fn query_and_print_unbonds( + context: &impl Namada, source: &Address, validator: &Address, ) { @@ -1634,8 +1625,8 @@ pub async fn query_withdrawable_tokens< } /// Query PoS bond(s) and unbond(s) -pub async fn query_bonds<'a>( - context: &impl Namada<'a>, +pub async fn query_bonds( + context: &impl Namada, args: args::QueryBonds, ) -> std::io::Result<()> { let epoch = query_and_print_epoch(context).await; @@ -1758,7 +1749,7 @@ pub async fn query_bonds<'a>( } /// Query PoS bonded stake -pub async fn query_bonded_stake<'a, N: Namada<'a>>( +pub async fn query_bonded_stake( context: &N, args: args::QueryBondedStake, ) { @@ -1896,8 +1887,8 @@ pub async fn query_validator_state< } /// Query a validator's state information -pub async fn query_and_print_validator_state<'a>( - context: &impl Namada<'a>, +pub async fn query_and_print_validator_state( + context: &impl Namada, args: args::QueryValidatorState, ) { let validator = args.validator; @@ -1941,8 +1932,8 @@ pub async fn query_and_print_validator_state<'a>( } /// Query PoS validator's commission rate information -pub async fn query_and_print_commission_rate<'a>( - context: &impl Namada<'a>, +pub async fn query_and_print_commission_rate( + context: &impl Namada, args: args::QueryCommissionRate, ) { let validator = args.validator; @@ -1974,8 +1965,8 @@ pub async fn query_and_print_commission_rate<'a>( } /// Query PoS validator's metadata -pub async fn query_and_print_metadata<'a>( - context: &impl Namada<'a>, +pub async fn query_and_print_metadata( + context: &impl Namada, args: args::QueryMetaData, ) { let validator = args.validator; @@ -2051,10 +2042,7 @@ pub async fn query_and_print_metadata<'a>( } /// Query PoS slashes -pub async fn query_slashes<'a, N: Namada<'a>>( - context: &N, - args: args::QuerySlashes, -) { +pub async fn query_slashes(context: &N, args: args::QuerySlashes) { match args.validator { Some(validator) => { let validator = validator; @@ -2206,7 +2194,7 @@ pub async fn query_slashes<'a, N: Namada<'a>>( } } -pub async fn query_delegations<'a, N: Namada<'a>>( +pub async fn query_delegations( context: &N, args: args::QueryDelegations, ) { @@ -2227,7 +2215,7 @@ pub async fn query_delegations<'a, N: Namada<'a>>( } } -pub async fn query_find_validator<'a, N: Namada<'a>>( +pub async fn query_find_validator( context: &N, args: args::QueryFindValidator, ) { @@ -2264,7 +2252,7 @@ pub async fn query_find_validator<'a, N: Namada<'a>>( } /// Dry run a transaction -pub async fn dry_run_tx<'a, N: Namada<'a>>( +pub async fn dry_run_tx( context: &N, tx_bytes: Vec, ) -> Result<(), error::Error> @@ -2339,8 +2327,8 @@ pub async fn known_address( } /// Query for all conversions. -pub async fn query_conversions<'a>( - context: &impl Namada<'a>, +pub async fn query_conversions( + context: &impl Namada, args: args::QueryConversions, ) { // The chosen token type of the conversions @@ -2416,8 +2404,8 @@ pub async fn query_conversion( } /// Query a wasm code hash -pub async fn query_wasm_code_hash<'a>( - context: &impl Namada<'a>, +pub async fn query_wasm_code_hash( + context: &impl Namada, code_path: impl AsRef, ) -> Result { rpc::query_wasm_code_hash(context, code_path).await @@ -2451,8 +2439,8 @@ pub async fn query_storage_value_bytes< /// Query a range of storage values with a matching prefix and decode them with /// [`BorshDeserialize`]. Returns an iterator of the storage keys paired with /// their associated values. -pub async fn query_storage_prefix<'a, 'b, T>( - context: &'b impl Namada<'a>, +pub async fn query_storage_prefix<'b, T>( + context: &'b impl Namada, key: &storage::Key, ) -> Option> where @@ -2496,10 +2484,7 @@ pub async fn query_tx_response( /// Lookup the results of applying the specified transaction to the /// blockchain. -pub async fn query_result<'a>( - context: &impl Namada<'a>, - args: args::QueryResult, -) { +pub async fn query_result(context: &impl Namada, args: args::QueryResult) { // First try looking up application event pertaining to given hash. let tx_response = query_tx_response( context.client(), @@ -2537,7 +2522,7 @@ pub async fn query_result<'a>( } } -pub async fn epoch_sleep<'a>(context: &impl Namada<'a>, _args: args::Query) { +pub async fn epoch_sleep(context: &impl Namada, _args: args::Query) { let start_epoch = query_and_print_epoch(context).await; loop { tokio::time::sleep(core::time::Duration::from_secs(1)).await; @@ -2642,8 +2627,8 @@ fn unwrap_client_response( }) } -pub async fn compute_offline_proposal_votes<'a>( - context: &impl Namada<'a>, +pub async fn compute_offline_proposal_votes( + context: &impl Namada, proposal: &OfflineSignedProposal, votes: Vec, ) -> ProposalVotes { diff --git a/apps/src/lib/client/tx.rs b/apps/src/lib/client/tx.rs index f311fd70e1..a4a30c1c7d 100644 --- a/apps/src/lib/client/tx.rs +++ b/apps/src/lib/client/tx.rs @@ -39,8 +39,8 @@ use crate::wallet::{gen_validator_keys, read_and_confirm_encryption_password}; /// Wrapper around `signing::aux_signing_data` that stores the optional /// disposable address to the wallet -pub async fn aux_signing_data<'a>( - context: &impl Namada<'a>, +pub async fn aux_signing_data( + context: &impl Namada, args: &args::Tx, owner: Option
, default_signer: Option
, @@ -69,8 +69,8 @@ pub async fn aux_signing_data<'a>( } // Sign the given transaction using a hardware wallet as a backup -pub async fn sign<'a>( - context: &impl Namada<'a>, +pub async fn sign( + context: &impl Namada, tx: &mut Tx, args: &args::Tx, signing_data: SigningTxData, @@ -200,8 +200,8 @@ pub async fn sign<'a>( } // Build a transaction to reveal the signer of the given transaction. -pub async fn submit_reveal_aux<'a>( - context: &impl Namada<'a>, +pub async fn submit_reveal_aux( + context: &impl Namada, args: args::Tx, address: &Address, ) -> Result<(), error::Error> { @@ -239,7 +239,7 @@ pub async fn submit_reveal_aux<'a>( Ok(()) } -pub async fn submit_bridge_pool_tx<'a, N: Namada<'a>>( +pub async fn submit_bridge_pool_tx( namada: &N, args: args::EthereumBridgePool, ) -> Result<(), error::Error> { @@ -263,7 +263,7 @@ pub async fn submit_bridge_pool_tx<'a, N: Namada<'a>>( Ok(()) } -pub async fn submit_custom<'a, N: Namada<'a>>( +pub async fn submit_custom( namada: &N, args: args::TxCustom, ) -> Result<(), error::Error> @@ -289,7 +289,7 @@ where Ok(()) } -pub async fn submit_update_account<'a, N: Namada<'a>>( +pub async fn submit_update_account( namada: &N, args: args::TxUpdateAccount, ) -> Result<(), error::Error> @@ -313,7 +313,7 @@ where Ok(()) } -pub async fn submit_init_account<'a, N: Namada<'a>>( +pub async fn submit_init_account( namada: &N, args: args::TxInitAccount, ) -> Result, error::Error> @@ -341,8 +341,8 @@ where Ok(None) } -pub async fn submit_change_consensus_key<'a>( - namada: &impl Namada<'a>, +pub async fn submit_change_consensus_key( + namada: &impl Namada, config: &mut crate::config::Config, args::ConsensusKeyChange { tx: tx_args, @@ -485,8 +485,8 @@ pub async fn submit_change_consensus_key<'a>( Ok(()) } -pub async fn submit_become_validator<'a>( - namada: &impl Namada<'a>, +pub async fn submit_become_validator( + namada: &impl Namada, config: &mut crate::config::Config, args::TxBecomeValidator { tx: tx_args, @@ -692,7 +692,7 @@ pub async fn submit_become_validator<'a>( } // Generate the validator keys let validator_keys = gen_validator_keys( - *namada.wallet_mut().await, + &mut *namada.wallet_mut().await, Some(eth_hot_pk.clone()), protocol_key, scheme, @@ -855,8 +855,8 @@ pub async fn submit_become_validator<'a>( Ok(()) } -pub async fn submit_init_validator<'a>( - namada: &impl Namada<'a>, +pub async fn submit_init_validator( + namada: &impl Namada, config: &mut crate::config::Config, args::TxInitValidator { tx: tx_args, @@ -931,8 +931,8 @@ pub async fn submit_init_validator<'a>( .await } -pub async fn submit_transfer<'a>( - namada: &impl Namada<'a>, +pub async fn submit_transfer( + namada: &impl Namada, args: args::TxTransfer, ) -> Result<(), error::Error> { for _ in 0..2 { @@ -985,7 +985,7 @@ pub async fn submit_transfer<'a>( Ok(()) } -pub async fn submit_ibc_transfer<'a, N: Namada<'a>>( +pub async fn submit_ibc_transfer( namada: &N, args: args::TxIbcTransfer, ) -> Result<(), error::Error> @@ -1009,7 +1009,7 @@ where Ok(()) } -pub async fn submit_init_proposal<'a, N: Namada<'a>>( +pub async fn submit_init_proposal( namada: &N, args: args::InitProposal, ) -> Result<(), error::Error> @@ -1138,7 +1138,7 @@ where Ok(()) } -pub async fn submit_vote_proposal<'a, N: Namada<'a>>( +pub async fn submit_vote_proposal( namada: &N, args: args::VoteProposal, ) -> Result<(), error::Error> @@ -1218,7 +1218,7 @@ where Ok(()) } -pub async fn sign_tx<'a, N: Namada<'a>>( +pub async fn sign_tx( namada: &N, args::SignTx { tx: tx_args, @@ -1299,7 +1299,7 @@ where Ok(()) } -pub async fn submit_reveal_pk<'a, N: Namada<'a>>( +pub async fn submit_reveal_pk( namada: &N, args: args::RevealPk, ) -> Result<(), error::Error> @@ -1311,7 +1311,7 @@ where Ok(()) } -pub async fn submit_bond<'a, N: Namada<'a>>( +pub async fn submit_bond( namada: &N, args: args::Bond, ) -> Result<(), error::Error> @@ -1338,7 +1338,7 @@ where Ok(()) } -pub async fn submit_unbond<'a, N: Namada<'a>>( +pub async fn submit_unbond( namada: &N, args: args::Unbond, ) -> Result<(), error::Error> @@ -1364,7 +1364,7 @@ where Ok(()) } -pub async fn submit_withdraw<'a, N: Namada<'a>>( +pub async fn submit_withdraw( namada: &N, args: args::Withdraw, ) -> Result<(), error::Error> @@ -1388,7 +1388,7 @@ where Ok(()) } -pub async fn submit_claim_rewards<'a, N: Namada<'a>>( +pub async fn submit_claim_rewards( namada: &N, args: args::ClaimRewards, ) -> Result<(), error::Error> @@ -1412,7 +1412,7 @@ where Ok(()) } -pub async fn submit_redelegate<'a, N: Namada<'a>>( +pub async fn submit_redelegate( namada: &N, args: args::Redelegate, ) -> Result<(), error::Error> @@ -1435,7 +1435,7 @@ where Ok(()) } -pub async fn submit_validator_commission_change<'a, N: Namada<'a>>( +pub async fn submit_validator_commission_change( namada: &N, args: args::CommissionRateChange, ) -> Result<(), error::Error> @@ -1459,7 +1459,7 @@ where Ok(()) } -pub async fn submit_validator_metadata_change<'a, N: Namada<'a>>( +pub async fn submit_validator_metadata_change( namada: &N, args: args::MetaDataChange, ) -> Result<(), error::Error> @@ -1483,7 +1483,7 @@ where Ok(()) } -// pub async fn submit_change_consensus_key<'a, N: Namada<'a>>( +// pub async fn submit_change_consensus_key( // namada: &N, // args: args::ConsensusKeyChange, // ) -> Result<(), error::Error> @@ -1505,7 +1505,7 @@ where // Ok(()) // } -pub async fn submit_unjail_validator<'a, N: Namada<'a>>( +pub async fn submit_unjail_validator( namada: &N, args: args::TxUnjailValidator, ) -> Result<(), error::Error> @@ -1529,7 +1529,7 @@ where Ok(()) } -pub async fn submit_deactivate_validator<'a, N: Namada<'a>>( +pub async fn submit_deactivate_validator( namada: &N, args: args::TxDeactivateValidator, ) -> Result<(), error::Error> @@ -1553,7 +1553,7 @@ where Ok(()) } -pub async fn submit_reactivate_validator<'a, N: Namada<'a>>( +pub async fn submit_reactivate_validator( namada: &N, args: args::TxReactivateValidator, ) -> Result<(), error::Error> @@ -1577,7 +1577,7 @@ where Ok(()) } -pub async fn submit_update_steward_commission<'a, N: Namada<'a>>( +pub async fn submit_update_steward_commission( namada: &N, args: args::UpdateStewardCommission, ) -> Result<(), error::Error> @@ -1602,7 +1602,7 @@ where Ok(()) } -pub async fn submit_resign_steward<'a, N: Namada<'a>>( +pub async fn submit_resign_steward( namada: &N, args: args::ResignSteward, ) -> Result<(), error::Error> @@ -1627,8 +1627,8 @@ where } /// Save accounts initialized from a tx into the wallet, if any. -pub async fn save_initialized_accounts<'a>( - namada: &impl Namada<'a>, +pub async fn save_initialized_accounts( + namada: &impl Namada, args: &args::Tx, initialized_accounts: Vec
, ) { @@ -1639,8 +1639,8 @@ pub async fn save_initialized_accounts<'a>( /// the tx has been successfully included into the mempool of a validator /// /// In the case of errors in any of those stages, an error message is returned -pub async fn broadcast_tx<'a>( - namada: &impl Namada<'a>, +pub async fn broadcast_tx( + namada: &impl Namada, to_broadcast: &TxBroadcastData, ) -> Result { tx::broadcast_tx(namada, to_broadcast).await @@ -1654,15 +1654,15 @@ pub async fn broadcast_tx<'a>( /// 3. The decrypted payload of the tx has been included on the blockchain. /// /// In the case of errors in any of those stages, an error message is returned -pub async fn submit_tx<'a>( - namada: &impl Namada<'a>, +pub async fn submit_tx( + namada: &impl Namada, to_broadcast: TxBroadcastData, ) -> Result { tx::submit_tx(namada, to_broadcast).await } -pub async fn gen_ibc_shielded_transfer<'a>( - context: &impl Namada<'a>, +pub async fn gen_ibc_shielded_transfer( + context: &impl Namada, args: args::GenIbcShieldedTransafer, ) -> Result<(), error::Error> { if let Some(shielded_transfer) = diff --git a/apps/src/lib/node/ledger/shell/testing/client.rs b/apps/src/lib/node/ledger/shell/testing/client.rs index 5e4c04b07f..4343cf6a7d 100644 --- a/apps/src/lib/node/ledger/shell/testing/client.rs +++ b/apps/src/lib/node/ledger/shell/testing/client.rs @@ -48,7 +48,7 @@ pub fn run( rt.block_on(CliApi::handle_client_command( Some(node), cmd, - &TestingIo, + TestingIo, )) } Bin::Wallet => { @@ -84,7 +84,7 @@ pub fn run( rt.block_on(CliApi::handle_relayer_command( Some(node), cmd, - &TestingIo, + TestingIo, )) } } diff --git a/benches/native_vps.rs b/benches/native_vps.rs index 413f307729..7981216918 100644 --- a/benches/native_vps.rs +++ b/benches/native_vps.rs @@ -494,7 +494,7 @@ fn setup_storage_for_masp_verification( .to_owned(); // Shield some tokens for Albert - let shield_tx = shielded_ctx.generate_masp_tx( + let (mut shielded_ctx, shield_tx) = shielded_ctx.generate_masp_tx( amount, TransferSource::Address(defaults::albert_address()), TransferTarget::PaymentAddress(albert_payment_addr), @@ -503,7 +503,7 @@ fn setup_storage_for_masp_verification( shielded_ctx.shell.wl_storage.commit_tx(); shielded_ctx.shell.commit(); - let signed_tx = match bench_name { + let (mut shielded_ctx, signed_tx) = match bench_name { "shielding" => shielded_ctx.generate_masp_tx( amount, TransferSource::Address(defaults::albert_address()), diff --git a/benches/txs.rs b/benches/txs.rs index 926120d7a8..454b50f401 100644 --- a/benches/txs.rs +++ b/benches/txs.rs @@ -82,16 +82,17 @@ fn transfer(c: &mut Criterion) { .to_owned(); // Shield some tokens for Albert - let shield_tx = shielded_ctx.generate_masp_tx( - amount, - TransferSource::Address(defaults::albert_address()), - TransferTarget::PaymentAddress(albert_payment_addr), - ); + let (mut shielded_ctx, shield_tx) = shielded_ctx + .generate_masp_tx( + amount, + TransferSource::Address(defaults::albert_address()), + TransferTarget::PaymentAddress(albert_payment_addr), + ); shielded_ctx.shell.execute_tx(&shield_tx); shielded_ctx.shell.wl_storage.commit_tx(); shielded_ctx.shell.commit(); - let signed_tx = match bench_name { + let (shielded_ctx, signed_tx) = match bench_name { "transparent" => shielded_ctx.generate_masp_tx( amount, TransferSource::Address(defaults::albert_address()), diff --git a/sdk/src/args.rs b/sdk/src/args.rs index d50a7e55de..7b307a22cc 100644 --- a/sdk/src/args.rs +++ b/sdk/src/args.rs @@ -175,9 +175,9 @@ impl TxCustom { impl TxCustom { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_custom(context, self).await @@ -281,9 +281,9 @@ impl TxTransfer { impl TxTransfer { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &mut self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_transfer(context, self).await @@ -395,9 +395,9 @@ impl TxIbcTransfer { impl TxIbcTransfer { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_ibc_transfer(context, self).await @@ -484,9 +484,9 @@ impl InitProposal { impl InitProposal { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { let current_epoch = rpc::query_epoch(context.client()).await?; @@ -641,9 +641,9 @@ impl VoteProposal { impl VoteProposal { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { let current_epoch = rpc::query_epoch(context.client()).await?; @@ -714,9 +714,9 @@ impl TxInitAccount { impl TxInitAccount { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_init_account(context, self).await @@ -869,9 +869,9 @@ impl TxUpdateAccount { impl TxUpdateAccount { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_update_account(context, self).await @@ -947,9 +947,9 @@ impl Bond { impl Bond { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_bond(context, self).await @@ -974,9 +974,9 @@ pub struct Unbond { impl Unbond { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<( crate::proto::Tx, SigningTxData, @@ -1047,9 +1047,9 @@ pub struct Redelegate { impl Redelegate { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData)> { tx::build_redelegation(context, self).await } @@ -1128,9 +1128,9 @@ impl RevealPk { impl RevealPk { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_reveal_pk(context, &self.tx, &self.public_key).await @@ -1212,9 +1212,9 @@ impl Withdraw { impl Withdraw { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_withdraw(context, self).await @@ -1249,9 +1249,9 @@ impl TxBuilder for ClaimRewards { impl ClaimRewards { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_claim_rewards(context, self).await @@ -1382,9 +1382,9 @@ impl CommissionRateChange { impl CommissionRateChange { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_validator_commission_change(context, self).await @@ -1441,9 +1441,9 @@ pub struct ConsensusKeyChange { // impl ConsensusKeyChange { // /// Build a transaction from this builder -// pub async fn build<'a>( +// pub async fn build( // &self, -// context: &impl Namada<'a>, +// context: &impl Namada, // ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, // Option)> { // tx::build_change_consensus_key(context, self).await @@ -1500,9 +1500,9 @@ impl MetaDataChange { impl MetaDataChange { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_validator_metadata_change(context, self).await @@ -1556,9 +1556,9 @@ impl UpdateStewardCommission { impl UpdateStewardCommission { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_update_steward_commission(context, self).await @@ -1605,9 +1605,9 @@ impl ResignSteward { impl ResignSteward { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_resign_steward(context, self).await @@ -1654,9 +1654,9 @@ impl TxUnjailValidator { impl TxUnjailValidator { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_unjail_validator(context, self).await @@ -1703,9 +1703,9 @@ impl TxDeactivateValidator { impl TxDeactivateValidator { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_deactivate_validator(context, self).await @@ -1752,9 +1752,9 @@ impl TxReactivateValidator { impl TxReactivateValidator { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( &self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { tx::build_reactivate_validator(context, self).await @@ -2325,9 +2325,9 @@ impl EthereumBridgePool { impl EthereumBridgePool { /// Build a transaction from this builder - pub async fn build<'a>( + pub async fn build( self, - context: &impl Namada<'a>, + context: &impl Namada, ) -> crate::error::Result<(crate::proto::Tx, SigningTxData, Option)> { bridge_pool::build_bridge_pool_tx(context, self).await diff --git a/sdk/src/eth_bridge/bridge_pool.rs b/sdk/src/eth_bridge/bridge_pool.rs index e682521987..efd2989d58 100644 --- a/sdk/src/eth_bridge/bridge_pool.rs +++ b/sdk/src/eth_bridge/bridge_pool.rs @@ -47,7 +47,7 @@ use crate::{ /// Craft a transaction that adds a transfer to the Ethereum bridge pool. pub async fn build_bridge_pool_tx( - context: &impl Namada<'_>, + context: &impl Namada, args::EthereumBridgePool { tx: tx_args, nut, @@ -113,7 +113,7 @@ pub async fn build_bridge_pool_tx( /// Perform client validation checks on a Bridge pool transfer. #[allow(clippy::too_many_arguments)] async fn validate_bridge_pool_tx( - context: &impl Namada<'_>, + context: &impl Namada, force: bool, nut: bool, asset: EthAddress, @@ -316,7 +316,7 @@ struct BridgePoolResponse<'pool> { /// Query the contents of the Ethereum bridge pool. /// Prints out a json payload. -pub async fn query_bridge_pool<'a>( +pub async fn query_bridge_pool( client: &(impl Client + Sync), io: &impl Io, ) -> Result, Error> { @@ -353,7 +353,7 @@ pub async fn query_bridge_pool<'a>( /// Query the contents of the Ethereum bridge pool that /// is covered by the latest signed root. /// Prints out a json payload. -pub async fn query_signed_bridge_pool<'a>( +pub async fn query_signed_bridge_pool( client: &(impl Client + Sync), io: &impl Io, ) -> Result, Error> { @@ -392,7 +392,7 @@ pub async fn query_signed_bridge_pool<'a>( /// backing each `TransferToEthereum` event. /// /// Prints a json payload. -pub async fn query_relay_progress<'a>( +pub async fn query_relay_progress( client: &(impl Client + Sync), io: &impl Io, ) -> Result<(), Error> { @@ -417,7 +417,7 @@ pub async fn query_relay_progress<'a>( /// Internal methdod to construct a proof that a set of transfers are in the /// bridge pool. -async fn construct_bridge_pool_proof<'a>( +async fn construct_bridge_pool_proof( client: &(impl Client + Sync), io: &impl Io, args: GenBridgePoolProofReq<'_, '_>, @@ -513,7 +513,7 @@ struct BridgePoolProofResponse { /// Construct a merkle proof of a batch of transfers in /// the bridge pool and return it to the user (as opposed /// to relaying it to ethereum). -pub async fn construct_proof<'a>( +pub async fn construct_proof( client: &(impl Client + Sync), io: &impl Io, args: args::BridgePoolProof, @@ -562,7 +562,7 @@ pub async fn construct_proof<'a>( } /// Relay a validator set update, signed off for a given epoch. -pub async fn relay_bridge_pool_proof<'a, E>( +pub async fn relay_bridge_pool_proof( eth_client: Arc, client: &(impl Client + Sync), io: &impl Io, @@ -794,8 +794,8 @@ mod recommendations { /// Recommend the most economical batch of transfers to relay based /// on a conversion rate estimates from NAM to ETH and gas usage /// heuristics. - pub async fn recommend_batch<'a>( - context: &impl Namada<'a>, + pub async fn recommend_batch( + context: &impl Namada, args: args::RecommendBatch, ) -> Result<(), Error> { // get transfers that can already been relayed but are awaiting a quorum diff --git a/sdk/src/eth_bridge/validator_set.rs b/sdk/src/eth_bridge/validator_set.rs index 1b7a77466d..e92e5c545e 100644 --- a/sdk/src/eth_bridge/validator_set.rs +++ b/sdk/src/eth_bridge/validator_set.rs @@ -270,7 +270,7 @@ impl From> for RelayResult { /// Query an ABI encoding of the validator set to be installed /// at the given epoch, and its associated proof. -pub async fn query_validator_set_update_proof<'a>( +pub async fn query_validator_set_update_proof( client: &(impl Client + Sync), io: &impl Io, args: args::ValidatorSetProof, @@ -298,7 +298,7 @@ pub async fn query_validator_set_update_proof<'a>( } /// Query an ABI encoding of the Bridge validator set at a given epoch. -pub async fn query_bridge_validator_set<'a>( +pub async fn query_bridge_validator_set( client: &(impl Client + Sync), io: &impl Io, args: args::BridgeValidatorSet, @@ -326,7 +326,7 @@ pub async fn query_bridge_validator_set<'a>( } /// Query an ABI encoding of the Governance validator set at a given epoch. -pub async fn query_governnace_validator_set<'a>( +pub async fn query_governnace_validator_set( client: &(impl Client + Sync), io: &impl Io, args: args::GovernanceValidatorSet, diff --git a/sdk/src/lib.rs b/sdk/src/lib.rs index 9ad44197c9..044b49df2f 100644 --- a/sdk/src/lib.rs +++ b/sdk/src/lib.rs @@ -65,42 +65,38 @@ use crate::wallet::{Wallet, WalletIo, WalletStorage}; #[async_trait::async_trait(?Send)] /// An interface for high-level interaction with the Namada SDK -pub trait Namada<'a>: Sized { +pub trait Namada: Sized { /// A client with async request dispatcher method - type Client: 'a + queries::Client + Sync; + type Client: queries::Client + Sync; /// Captures the interactive parts of the wallet's functioning - type WalletUtils: 'a + WalletIo + WalletStorage; + type WalletUtils: WalletIo + WalletStorage; /// Abstracts platform specific details away from the logic of shielded pool /// operations. - type ShieldedUtils: 'a + ShieldedUtils; + type ShieldedUtils: ShieldedUtils; /// Captures the input/output streams used by this object - type Io: 'a + Io; + type Io: Io; /// Obtain the client for communicating with the ledger - fn client(&self) -> &'a Self::Client; + fn client(&self) -> &Self::Client; /// Obtain the input/output handle for this context - fn io(&self) -> &'a Self::Io; + fn io(&self) -> &Self::Io; /// Obtain read guard on the wallet - async fn wallet( - &self, - ) -> RwLockReadGuard<&'a mut Wallet>; + async fn wallet(&self) -> RwLockReadGuard>; /// Obtain write guard on the wallet - async fn wallet_mut( - &self, - ) -> RwLockWriteGuard<&'a mut Wallet>; + async fn wallet_mut(&self) -> RwLockWriteGuard>; /// Obtain read guard on the shielded context async fn shielded( &self, - ) -> RwLockReadGuard<&'a mut ShieldedContext>; + ) -> RwLockReadGuard>; /// Obtain write guard on the shielded context async fn shielded_mut( &self, - ) -> RwLockWriteGuard<&'a mut ShieldedContext>; + ) -> RwLockWriteGuard>; /// Return the native token fn native_token(&self) -> Address; @@ -566,7 +562,7 @@ pub trait Namada<'a>: Sized { } /// Provides convenience methods for common Namada interactions -pub struct NamadaImpl<'a, C, U, V, I> +pub struct NamadaImpl where C: queries::Client + Sync, U: WalletIo, @@ -574,20 +570,20 @@ where I: Io, { /// Used to send and receive messages from the ledger - pub client: &'a C, + pub client: C, /// Stores the addresses and keys required for ledger interactions - pub wallet: RwLock<&'a mut Wallet>, + pub wallet: RwLock>, /// Stores the current state of the shielded pool - pub shielded: RwLock<&'a mut ShieldedContext>, + pub shielded: RwLock>, /// Captures the input/output streams used by this object - pub io: &'a I, + pub io: I, /// The address of the native token native_token: Address, /// The default builder for a Tx prototype: args::Tx, } -impl<'a, C, U, V, I> NamadaImpl<'a, C, U, V, I> +impl NamadaImpl where C: queries::Client + Sync, U: WalletIo, @@ -596,10 +592,10 @@ where { /// Construct a new Namada context with the given native token address pub fn native_new( - client: &'a C, - wallet: &'a mut Wallet, - shielded: &'a mut ShieldedContext, - io: &'a I, + client: C, + wallet: Wallet, + shielded: ShieldedContext, + io: I, native_token: Address, ) -> Self { NamadaImpl { @@ -638,12 +634,12 @@ where /// Construct a new Namada context looking up the native token address pub async fn new( - client: &'a C, - wallet: &'a mut Wallet, - shielded: &'a mut ShieldedContext, - io: &'a I, - ) -> crate::error::Result> { - let native_token = query_native_token(client).await?; + client: C, + wallet: Wallet, + shielded: ShieldedContext, + io: I, + ) -> crate::error::Result> { + let native_token = query_native_token(&client).await?; Ok(NamadaImpl::native_new( client, wallet, @@ -655,7 +651,7 @@ where } #[async_trait::async_trait(?Send)] -impl<'a, C, U, V, I> Namada<'a> for NamadaImpl<'a, C, U, V, I> +impl Namada for NamadaImpl where C: queries::Client + Sync, U: WalletIo + WalletStorage, @@ -676,41 +672,37 @@ where self.native_token.clone() } - fn io(&self) -> &'a Self::Io { - self.io + fn io(&self) -> &Self::Io { + &self.io } - fn client(&self) -> &'a Self::Client { - self.client + fn client(&self) -> &Self::Client { + &self.client } - async fn wallet( - &self, - ) -> RwLockReadGuard<&'a mut Wallet> { + async fn wallet(&self) -> RwLockReadGuard> { self.wallet.read().await } - async fn wallet_mut( - &self, - ) -> RwLockWriteGuard<&'a mut Wallet> { + async fn wallet_mut(&self) -> RwLockWriteGuard> { self.wallet.write().await } async fn shielded( &self, - ) -> RwLockReadGuard<&'a mut ShieldedContext> { + ) -> RwLockReadGuard> { self.shielded.read().await } async fn shielded_mut( &self, - ) -> RwLockWriteGuard<&'a mut ShieldedContext> { + ) -> RwLockWriteGuard> { self.shielded.write().await } } /// Allow the prototypical Tx builder to be modified -impl<'a, C, U, V, I> args::TxBuilder for NamadaImpl<'a, C, U, V, I> +impl args::TxBuilder for NamadaImpl where C: queries::Client + Sync, U: WalletIo, diff --git a/sdk/src/masp.rs b/sdk/src/masp.rs index 68459688e0..9a18f2200d 100644 --- a/sdk/src/masp.rs +++ b/sdk/src/masp.rs @@ -1220,9 +1220,9 @@ impl ShieldedContext { /// of the specified asset type. Return the total value accumulated plus /// notes and the corresponding diversifiers/merkle paths that were used to /// achieve the total value. - pub async fn collect_unspent_notes<'a>( + pub async fn collect_unspent_notes( &mut self, - context: &impl Namada<'a>, + context: &impl Namada, vk: &ViewingKey, target: I128Sum, target_epoch: Epoch, @@ -1407,9 +1407,9 @@ impl ShieldedContext { /// the epoch of the transaction or even before, so exchange all these /// amounts to the epoch of the transaction in order to get the value that /// would have been displayed in the epoch of the transaction. - pub async fn compute_exchanged_pinned_balance<'a>( + pub async fn compute_exchanged_pinned_balance( &mut self, - context: &impl Namada<'a>, + context: &impl Namada, owner: PaymentAddress, viewing_key: &ViewingKey, ) -> Result<(MaspAmount, Epoch), Error> { @@ -1497,8 +1497,8 @@ impl ShieldedContext { /// UTXOs are sometimes used to make transactions balanced, but it is /// understood that transparent account changes are effected only by the /// amounts and signatures specified by the containing Transfer object. - pub async fn gen_shielded_transfer<'a>( - context: &impl Namada<'a>, + pub async fn gen_shielded_transfer( + context: &impl Namada, source: &TransferSource, target: &TransferTarget, token: &Address, diff --git a/sdk/src/rpc.rs b/sdk/src/rpc.rs index 3e18c686b9..19adb4d365 100644 --- a/sdk/src/rpc.rs +++ b/sdk/src/rpc.rs @@ -52,8 +52,8 @@ use crate::{display_line, edisplay_line, error, Namada}; /// /// If a response is not delivered until `deadline`, we exit the cli with an /// error. -pub async fn query_tx_status<'a>( - context: &impl Namada<'a>, +pub async fn query_tx_status( + context: &impl Namada, status: TxEventQuery<'_>, deadline: time::Instant, ) -> Result { @@ -284,8 +284,8 @@ pub async fn query_conversions( } /// Query a wasm code hash -pub async fn query_wasm_code_hash<'a>( - context: &impl Namada<'a>, +pub async fn query_wasm_code_hash( + context: &impl Namada, code_path: impl AsRef, ) -> Result { let hash_key = Key::wasm_hash(code_path.as_ref()); @@ -368,7 +368,7 @@ pub async fn query_storage_value_bytes( /// Query a range of storage values with a matching prefix and decode them with /// [`BorshDeserialize`]. Returns an iterator of the storage keys paired with /// their associated values. -pub async fn query_storage_prefix<'a, 'b, N: Namada<'a>, T>( +pub async fn query_storage_prefix<'a, 'b, N: Namada, T>( context: &'b N, key: &storage::Key, ) -> Result>, error::Error> @@ -472,7 +472,7 @@ pub async fn query_tx_events( } /// Dry run a transaction -pub async fn dry_run_tx<'a, N: Namada<'a>>( +pub async fn dry_run_tx( context: &N, tx_bytes: Vec, ) -> Result { @@ -850,8 +850,8 @@ pub async fn get_public_key_at( } /// Query a validator's unbonds for a given epoch -pub async fn query_and_print_unbonds<'a>( - context: &impl Namada<'a>, +pub async fn query_and_print_unbonds( + context: &impl Namada, source: &Address, validator: &Address, ) -> Result<(), error::Error> { @@ -990,7 +990,7 @@ pub async fn enriched_bonds_and_unbonds( } /// Get the correct representation of the amount given the token type. -pub async fn validate_amount<'a, N: Namada<'a>>( +pub async fn validate_amount( context: &N, amount: InputAmount, token: &Address, @@ -1051,7 +1051,7 @@ pub async fn validate_amount<'a, N: Namada<'a>>( } /// Wait for a first block and node to be synced. -pub async fn wait_until_node_is_synched<'a>( +pub async fn wait_until_node_is_synched( client: &(impl Client + Sync), io: &impl Io, ) -> Result<(), Error> { @@ -1148,7 +1148,7 @@ pub async fn format_denominated_amount( } /// Look up the IBC denomination from a IbcToken. -pub async fn query_ibc_denom<'a, N: Namada<'a>>( +pub async fn query_ibc_denom( context: &N, token: &Address, owner: Option<&Address>, diff --git a/sdk/src/signing.rs b/sdk/src/signing.rs index f0401f0aa8..e42193e461 100644 --- a/sdk/src/signing.rs +++ b/sdk/src/signing.rs @@ -85,8 +85,8 @@ pub struct SigningTxData { /// for it from the wallet. If the keypair is encrypted but a password is not /// supplied, then it is interactively prompted. Errors if the key cannot be /// found or loaded. -pub async fn find_pk<'a>( - context: &impl Namada<'a>, +pub async fn find_pk( + context: &impl Namada, addr: &Address, ) -> Result { match addr { @@ -166,8 +166,8 @@ pub fn find_key_by_pk( /// signer. Return the given signing key or public key of the given signer if /// possible. If no explicit signer given, use the `default`. If no `default` /// is given, an `Error` is returned. -pub async fn tx_signers<'a>( - context: &impl Namada<'a>, +pub async fn tx_signers( + context: &impl Namada, args: &args::Tx, default: Option
, ) -> Result, Error> { @@ -225,8 +225,8 @@ pub async fn default_sign( /// hashes needed for monitoring the tx on chain. /// /// If it is a dry run, it is not put in a wrapper, but returned as is. -pub async fn sign_tx<'a, F: std::future::Future>>( - context: &impl Namada<'a>, +pub async fn sign_tx>>( + context: &impl Namada, args: &args::Tx, tx: &mut Tx, signing_data: SigningTxData, @@ -259,7 +259,7 @@ pub async fn sign_tx<'a, F: std::future::Future>>( if used_pubkeys.contains(public_key) { None } else { - match find_key_by_pk(*wallet, args, public_key) { + match find_key_by_pk(&mut wallet, args, public_key) { Ok(secret_key) => { used_pubkeys.insert(public_key.clone()); Some(secret_key) @@ -300,7 +300,7 @@ pub async fn sign_tx<'a, F: std::future::Future>>( // Lock the wallet just long enough to extract a key from it without // interfering with the sign closure call let mut wallet = context.wallet_mut().await; - find_key_by_pk(*wallet, args, &signing_data.fee_payer) + find_key_by_pk(&mut wallet, args, &signing_data.fee_payer) }; match key { Ok(fee_payer_keypair) => { @@ -320,8 +320,8 @@ pub async fn sign_tx<'a, F: std::future::Future>>( /// Return the necessary data regarding an account to be able to generate a /// multisignature section -pub async fn aux_signing_data<'a>( - context: &impl Namada<'a>, +pub async fn aux_signing_data( + context: &impl Namada, args: &args::Tx, owner: Option
, default_signer: Option
, @@ -389,8 +389,8 @@ pub async fn aux_signing_data<'a>( }) } -pub async fn init_validator_signing_data<'a>( - context: &impl Namada<'a>, +pub async fn init_validator_signing_data( + context: &impl Namada, args: &args::Tx, validator_keys: Vec, ) -> Result { @@ -449,7 +449,7 @@ pub struct TxSourcePostBalance { /// wrapper and its payload which is needed for monitoring its /// progress on chain. #[allow(clippy::too_many_arguments)] -pub async fn wrap_tx<'a, N: Namada<'a>>( +pub async fn wrap_tx( context: &N, tx: &mut Tx, args: &args::Tx, @@ -733,8 +733,8 @@ fn make_ledger_amount_addr( /// Adds a Ledger output line describing a given transaction amount and asset /// type -async fn make_ledger_amount_asset<'a>( - context: &impl Namada<'a>, +async fn make_ledger_amount_asset( + context: &impl Namada, tokens: &HashMap, output: &mut Vec, amount: u64, @@ -828,8 +828,8 @@ fn format_outputs(output: &mut Vec) { /// Adds a Ledger output for the sender and destination for transparent and MASP /// transactions -pub async fn make_ledger_masp_endpoints<'a>( - context: &impl Namada<'a>, +pub async fn make_ledger_masp_endpoints( + context: &impl Namada, tokens: &HashMap, output: &mut Vec, transfer: &Transfer, @@ -903,8 +903,8 @@ pub async fn make_ledger_masp_endpoints<'a>( /// Internal method used to generate transaction test vectors #[cfg(feature = "std")] -pub async fn generate_test_vector<'a>( - context: &impl Namada<'a>, +pub async fn generate_test_vector( + context: &impl Namada, tx: &Tx, ) -> Result<(), Error> { use std::env; @@ -1013,8 +1013,8 @@ impl<'a> Display for LedgerProposalType<'a> { /// Converts the given transaction to the form that is displayed on the Ledger /// device -pub async fn to_ledger_vector<'a>( - context: &impl Namada<'a>, +pub async fn to_ledger_vector( + context: &impl Namada, tx: &Tx, ) -> Result { // To facilitate lookups of human-readable token names diff --git a/sdk/src/tx.rs b/sdk/src/tx.rs index 49b3ec6a06..9bf980aae5 100644 --- a/sdk/src/tx.rs +++ b/sdk/src/tx.rs @@ -170,8 +170,8 @@ pub fn dump_tx(io: &IO, args: &args::Tx, tx: Tx) { /// Prepare a transaction for signing and submission by adding a wrapper header /// to it. #[allow(clippy::too_many_arguments)] -pub async fn prepare_tx<'a>( - context: &impl Namada<'a>, +pub async fn prepare_tx( + context: &impl Namada, args: &args::Tx, tx: &mut Tx, fee_payer: common::PublicKey, @@ -189,8 +189,8 @@ pub async fn prepare_tx<'a>( /// Submit transaction and wait for result. Returns a list of addresses /// initialized in the transaction if any. In dry run, this is always empty. -pub async fn process_tx<'a>( - context: &impl Namada<'a>, +pub async fn process_tx( + context: &impl Namada, args: &args::Tx, tx: Tx, ) -> Result { @@ -263,8 +263,8 @@ pub async fn has_revealed_pk( } /// Submit transaction to reveal the given public key -pub async fn build_reveal_pk<'a>( - context: &impl Namada<'a>, +pub async fn build_reveal_pk( + context: &impl Namada, args: &args::Tx, public_key: &common::PublicKey, ) -> Result<(Tx, SigningTxData, Option)> { @@ -289,8 +289,8 @@ pub async fn build_reveal_pk<'a>( /// the tx has been successfully included into the mempool of a node /// /// In the case of errors in any of those stages, an error message is returned -pub async fn broadcast_tx<'a>( - context: &impl Namada<'a>, +pub async fn broadcast_tx( + context: &impl Namada, to_broadcast: &TxBroadcastData, ) -> Result { let (tx, wrapper_tx_hash, decrypted_tx_hash) = match to_broadcast { @@ -352,8 +352,8 @@ pub async fn broadcast_tx<'a>( /// 3. The decrypted payload of the tx has been included on the blockchain. /// /// In the case of errors in any of those stages, an error message is returned -pub async fn submit_tx<'a>( - context: &impl Namada<'a>, +pub async fn submit_tx( + context: &impl Namada, to_broadcast: TxBroadcastData, ) -> Result { let (_, wrapper_hash, decrypted_hash) = match &to_broadcast { @@ -443,7 +443,7 @@ pub fn decode_component( } /// Save accounts initialized from a tx into the wallet, if any. -pub async fn save_initialized_accounts<'a, N: Namada<'a>>( +pub async fn save_initialized_accounts( context: &N, args: &args::Tx, initialized_accounts: Vec
, @@ -503,8 +503,8 @@ pub async fn save_initialized_accounts<'a, N: Namada<'a>>( } /// Submit validator comission rate change -pub async fn build_validator_commission_change<'a>( - context: &impl Namada<'a>, +pub async fn build_validator_commission_change( + context: &impl Namada, args::CommissionRateChange { tx: tx_args, validator, @@ -615,8 +615,8 @@ pub async fn build_validator_commission_change<'a>( } /// Submit validator metadata change -pub async fn build_validator_metadata_change<'a>( - context: &impl Namada<'a>, +pub async fn build_validator_metadata_change( + context: &impl Namada, args::MetaDataChange { tx: tx_args, validator, @@ -744,8 +744,8 @@ pub async fn build_validator_metadata_change<'a>( } /// Craft transaction to update a steward commission -pub async fn build_update_steward_commission<'a>( - context: &impl Namada<'a>, +pub async fn build_update_steward_commission( + context: &impl Namada, args::UpdateStewardCommission { tx: tx_args, steward, @@ -803,8 +803,8 @@ pub async fn build_update_steward_commission<'a>( } /// Craft transaction to resign as a steward -pub async fn build_resign_steward<'a>( - context: &impl Namada<'a>, +pub async fn build_resign_steward( + context: &impl Namada, args::ResignSteward { tx: tx_args, steward, @@ -843,8 +843,8 @@ pub async fn build_resign_steward<'a>( } /// Submit transaction to unjail a jailed validator -pub async fn build_unjail_validator<'a>( - context: &impl Namada<'a>, +pub async fn build_unjail_validator( + context: &impl Namada, args::TxUnjailValidator { tx: tx_args, validator, @@ -950,8 +950,8 @@ pub async fn build_unjail_validator<'a>( } /// Submit transaction to deactivate a validator -pub async fn build_deactivate_validator<'a>( - context: &impl Namada<'a>, +pub async fn build_deactivate_validator( + context: &impl Namada, args::TxDeactivateValidator { tx: tx_args, validator, @@ -1021,8 +1021,8 @@ pub async fn build_deactivate_validator<'a>( } /// Submit transaction to deactivate a validator -pub async fn build_reactivate_validator<'a>( - context: &impl Namada<'a>, +pub async fn build_reactivate_validator( + context: &impl Namada, args::TxReactivateValidator { tx: tx_args, validator, @@ -1091,8 +1091,8 @@ pub async fn build_reactivate_validator<'a>( } /// Redelegate bonded tokens from one validator to another -pub async fn build_redelegation<'a>( - context: &impl Namada<'a>, +pub async fn build_redelegation( + context: &impl Namada, args::Redelegate { tx: tx_args, src_validator, @@ -1271,8 +1271,8 @@ pub async fn build_redelegation<'a>( } /// Submit transaction to withdraw an unbond -pub async fn build_withdraw<'a>( - context: &impl Namada<'a>, +pub async fn build_withdraw( + context: &impl Namada, args::Withdraw { tx: tx_args, validator, @@ -1354,8 +1354,8 @@ pub async fn build_withdraw<'a>( } /// Submit transaction to withdraw an unbond -pub async fn build_claim_rewards<'a>( - context: &impl Namada<'a>, +pub async fn build_claim_rewards( + context: &impl Namada, args::ClaimRewards { tx: tx_args, validator, @@ -1402,8 +1402,8 @@ pub async fn build_claim_rewards<'a>( } /// Submit a transaction to unbond -pub async fn build_unbond<'a>( - context: &impl Namada<'a>, +pub async fn build_unbond( + context: &impl Namada, args::Unbond { tx: tx_args, validator, @@ -1509,8 +1509,8 @@ pub async fn build_unbond<'a>( } /// Query the unbonds post-tx -pub async fn query_unbonds<'a>( - context: &impl Namada<'a>, +pub async fn query_unbonds( + context: &impl Namada, args: args::Unbond, latest_withdrawal_pre: Option<(Epoch, token::Amount)>, ) -> Result<()> { @@ -1580,8 +1580,8 @@ pub async fn query_unbonds<'a>( } /// Submit a transaction to bond -pub async fn build_bond<'a>( - context: &impl Namada<'a>, +pub async fn build_bond( + context: &impl Namada, args::Bond { tx: tx_args, validator, @@ -1694,8 +1694,8 @@ pub async fn build_bond<'a>( } /// Build a default proposal governance -pub async fn build_default_proposal<'a>( - context: &impl Namada<'a>, +pub async fn build_default_proposal( + context: &impl Namada, args::InitProposal { tx, proposal_data: _, @@ -1747,8 +1747,8 @@ pub async fn build_default_proposal<'a>( } /// Build a proposal vote -pub async fn build_vote_proposal<'a>( - context: &impl Namada<'a>, +pub async fn build_vote_proposal( + context: &impl Namada, args::VoteProposal { tx, proposal_id, @@ -1834,8 +1834,8 @@ pub async fn build_vote_proposal<'a>( } /// Build a pgf funding proposal governance -pub async fn build_pgf_funding_proposal<'a>( - context: &impl Namada<'a>, +pub async fn build_pgf_funding_proposal( + context: &impl Namada, args::InitProposal { tx, proposal_data: _, @@ -1879,8 +1879,8 @@ pub async fn build_pgf_funding_proposal<'a>( } /// Build a pgf funding proposal governance -pub async fn build_pgf_stewards_proposal<'a>( - context: &impl Namada<'a>, +pub async fn build_pgf_stewards_proposal( + context: &impl Namada, args::InitProposal { tx, proposal_data: _, @@ -1925,8 +1925,8 @@ pub async fn build_pgf_stewards_proposal<'a>( } /// Submit an IBC transfer -pub async fn build_ibc_transfer<'a>( - context: &impl Namada<'a>, +pub async fn build_ibc_transfer( + context: &impl Namada, args: &args::TxIbcTransfer, ) -> Result<(Tx, SigningTxData, Option)> { let default_signer = Some(args.source.clone()); @@ -2054,8 +2054,8 @@ pub async fn build_ibc_transfer<'a>( /// Abstraction for helping build transactions #[allow(clippy::too_many_arguments)] -pub async fn build<'a, F, D>( - context: &impl Namada<'a>, +pub async fn build( + context: &impl Namada, tx_args: &crate::args::Tx, path: PathBuf, data: D, @@ -2080,8 +2080,8 @@ where } #[allow(clippy::too_many_arguments)] -async fn build_pow_flag<'a, F, D>( - context: &impl Namada<'a>, +async fn build_pow_flag( + context: &impl Namada, tx_args: &crate::args::Tx, path: PathBuf, mut data: D, @@ -2123,9 +2123,9 @@ where /// Try to decode the given asset type and add its decoding to the supplied set. /// Returns true only if a new decoding has been added to the given set. -async fn add_asset_type<'a>( +async fn add_asset_type( asset_types: &mut HashSet<(Address, MaspDenom, Epoch)>, - context: &impl Namada<'a>, + context: &impl Namada, asset_type: AssetType, ) -> bool { if let Some(asset_type) = context @@ -2143,8 +2143,8 @@ async fn add_asset_type<'a>( /// Collect the asset types used in the given Builder and decode them. This /// function provides the data necessary for offline wallets to present asset /// type information. -async fn used_asset_types<'a, P, R, K, N>( - context: &impl Namada<'a>, +async fn used_asset_types( + context: &impl Namada, builder: &Builder, ) -> std::result::Result, RpcError> { let mut asset_types = HashSet::new(); @@ -2177,7 +2177,7 @@ async fn used_asset_types<'a, P, R, K, N>( } /// Submit an ordinary transfer -pub async fn build_transfer<'a, N: Namada<'a>>( +pub async fn build_transfer( context: &N, args: &mut args::TxTransfer, ) -> Result<(Tx, SigningTxData, Option)> { @@ -2348,8 +2348,8 @@ pub async fn build_transfer<'a, N: Namada<'a>>( } /// Submit a transaction to initialize an account -pub async fn build_init_account<'a>( - context: &impl Namada<'a>, +pub async fn build_init_account( + context: &impl Namada, args::TxInitAccount { tx: tx_args, vp_code_path, @@ -2403,8 +2403,8 @@ pub async fn build_init_account<'a>( } /// Submit a transaction to update a VP -pub async fn build_update_account<'a>( - context: &impl Namada<'a>, +pub async fn build_update_account( + context: &impl Namada, args::TxUpdateAccount { tx: tx_args, vp_code_path, @@ -2485,8 +2485,8 @@ pub async fn build_update_account<'a>( } /// Submit a custom transaction -pub async fn build_custom<'a>( - context: &impl Namada<'a>, +pub async fn build_custom( + context: &impl Namada, args::TxCustom { tx: tx_args, code_path, @@ -2536,7 +2536,7 @@ pub async fn build_custom<'a>( } /// Generate IBC shielded transfer -pub async fn gen_ibc_shielded_transfer<'a, N: Namada<'a>>( +pub async fn gen_ibc_shielded_transfer( context: &N, args: args::GenIbcShieldedTransafer, ) -> Result> { @@ -2609,8 +2609,8 @@ pub async fn gen_ibc_shielded_transfer<'a, N: Namada<'a>>( } } -async fn get_ibc_src_port_channel<'a>( - context: &impl Namada<'a>, +async fn get_ibc_src_port_channel( + context: &impl Namada, dest_port_id: &PortId, dest_channel_id: &ChannelId, ) -> Result<(PortId, ChannelId)> { @@ -2651,9 +2651,9 @@ async fn get_ibc_src_port_channel<'a>( }) } -async fn expect_dry_broadcast<'a>( +async fn expect_dry_broadcast( to_broadcast: TxBroadcastData, - context: &impl Namada<'a>, + context: &impl Namada, ) -> Result { match to_broadcast { TxBroadcastData::DryRun(tx) => { @@ -2675,10 +2675,10 @@ fn lift_rpc_error(res: std::result::Result) -> Result { /// Returns the given validator if the given address is a validator, /// otherwise returns an error, force forces the address through even /// if it isn't a validator -async fn known_validator_or_err<'a>( +async fn known_validator_or_err( validator: Address, force: bool, - context: &impl Namada<'a>, + context: &impl Namada, ) -> Result
{ // Check that the validator address exists on chain let is_validator = rpc::is_validator(context.client(), &validator).await?; @@ -2701,10 +2701,10 @@ async fn known_validator_or_err<'a>( /// general pattern for checking if an address exists on the chain, or /// throwing an error if it's not forced. Takes a generic error /// message and the error type. -async fn address_exists_or_err<'a, F>( +async fn address_exists_or_err( addr: Address, force: bool, - context: &impl Namada<'a>, + context: &impl Namada, message: String, err: F, ) -> Result
@@ -2727,10 +2727,10 @@ where /// Returns the given source address if the given address exists on chain /// otherwise returns an error, force forces the address through even /// if it isn't on chain -async fn source_exists_or_err<'a>( +async fn source_exists_or_err( token: Address, force: bool, - context: &impl Namada<'a>, + context: &impl Namada, ) -> Result
{ let message = format!("The source address {} doesn't exist on chain.", token); @@ -2743,10 +2743,10 @@ async fn source_exists_or_err<'a>( /// Returns the given target address if the given address exists on chain /// otherwise returns an error, force forces the address through even /// if it isn't on chain -async fn target_exists_or_err<'a>( +async fn target_exists_or_err( token: Address, force: bool, - context: &impl Namada<'a>, + context: &impl Namada, ) -> Result
{ let message = format!("The target address {} doesn't exist on chain.", token); @@ -2759,7 +2759,7 @@ async fn target_exists_or_err<'a>( /// Checks the balance at the given address is enough to transfer the /// given amount, along with the balance even existing. Force /// overrides this. Returns the updated balance for fee check if necessary -async fn check_balance_too_low_err<'a, N: Namada<'a>>( +async fn check_balance_too_low_err( token: &Address, source: &Address, amount: token::Amount, @@ -2822,8 +2822,8 @@ async fn check_balance_too_low_err<'a, N: Namada<'a>>( } } -async fn query_wasm_code_hash_buf<'a>( - context: &impl Namada<'a>, +async fn query_wasm_code_hash_buf( + context: &impl Namada, path: &Path, ) -> Result { query_wasm_code_hash(context, path.to_string_lossy()).await diff --git a/wasm/checksums.json b/wasm/checksums.json index 8c94ff7a0d..223c23382e 100644 --- a/wasm/checksums.json +++ b/wasm/checksums.json @@ -1,27 +1,26 @@ { - "tx_bond.wasm": "tx_bond.a660b13a79bd5c50c75a055ab4fed8eddb1cc2ae6d93e5505fbeb876b307fc49.wasm", - "tx_bridge_pool.wasm": "tx_bridge_pool.9564137202b291bd8930410700a5b0e08a1949bb4f79da5ee3e3dc9654266f4d.wasm", - "tx_change_consensus_key.wasm": "tx_change_consensus_key.4d2de1a762b4575925222fdeacadada429896a93fe3586f41657f247480161d9.wasm", - "tx_change_validator_commission.wasm": "tx_change_validator_commission.457abeb00c021822e54674b77ae97535620555707efd2029e52b0d4335a32b55.wasm", - "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.b56e2fbaefe19800d8a6d989883ab0ceac439bdeac96fb1299f6aa2ce424e521.wasm", - "tx_claim_rewards.wasm": "tx_claim_rewards.c4fc5d2ace6b0ee785f12f90a6cc600e3a0a8f19f7237ecf9374a32ba27eb99e.wasm", - "tx_deactivate_validator.wasm": "tx_deactivate_validator.c7cb406926241ffaa5df56e43c8cc43854bdcb0ea565144f63b6a3e2eb697a96.wasm", - "tx_ibc.wasm": "tx_ibc.14568fef2ec08752b87ec97cb2c87b76adec72e6eeea771274948d7c7ddb92a8.wasm", - "tx_init_account.wasm": "tx_init_account.0017279b252083d2d337d943bf84251d3f8223756ecfd9648e7ce66305c45796.wasm", - "tx_init_proposal.wasm": "tx_init_proposal.cb9d7a33dd9a37675dd1d9cb761f3f87a48728eae38f377a623c0b8f9a97b612.wasm", - "tx_init_validator.wasm": "tx_init_validator.53fefa66ce6351d6b3e7de7a2c993bd4435fbd478b66caecf5c588b5efdcf669.wasm", - "tx_reactivate_validator.wasm": "tx_reactivate_validator.6a40f8daebdd6b9f6bcc9ab88686b40bb7a7882443cd07443c0795a3fae27cb5.wasm", - "tx_redelegate.wasm": "tx_redelegate.ded70e2609371fc9d81de875cf44b0ec60757fb46f61f23a26418cfa9f437b0f.wasm", - "tx_resign_steward.wasm": "tx_resign_steward.a881ed70174b53a15402cbbe6e64200f72431ec73604f7b173fd77ea80b5aedb.wasm", - "tx_reveal_pk.wasm": "tx_reveal_pk.fbe760707aa0559c898cee47c91a5c7d0bc4b2f545cb47cc459ddcb8f97c455e.wasm", - "tx_transfer.wasm": "tx_transfer.aef75ec63198e4e6f95307a55e53fd0440448caf46617047f7a7557a7a2f1f4e.wasm", - "tx_unbond.wasm": "tx_unbond.1fd257addac3d91d77e1ae334b9394085335075581a6500ce2364cd403d028e9.wasm", - "tx_unjail_validator.wasm": "tx_unjail_validator.ba0e378bb48d5ba577dd898e618478c917e80ee11e46f79b00bb72fea4f91c28.wasm", - "tx_update_account.wasm": "tx_update_account.aa4ef57619b8b7c7c3849fa71873448808f7342fcc8d612e4b5e688a708a174a.wasm", - "tx_update_steward_commission.wasm": "tx_update_steward_commission.e7bf45b9039a5b4ef399fe926a4b56e035e9a7eedc4fdd59fc89210b4a8bbf74.wasm", - "tx_vote_proposal.wasm": "tx_vote_proposal.4b39fd9c6ccc8a9537a295d154a8b9e60b8d135fe995276a01d714bc8097be6a.wasm", - "tx_withdraw.wasm": "tx_withdraw.2f6bf8c3cafbd5d987849db1583bd63e10bbe06193f619859caa80ab10f2e2a9.wasm", - "vp_implicit.wasm": "vp_implicit.262b8660014cd140bcbbef2d187863160678cb0034903257815dc08d947b03fa.wasm", - "vp_user.wasm": "vp_user.d66a3a289c9c9e6353a2741335775eab1487e2e7ee4b8baa69d32e73083363d3.wasm", - "vp_validator.wasm": "vp_validator.d89911d9c27b2e0926499623cc88ee35c4396c8ef0563f897386ff431c8148e7.wasm" + "tx_become_validator.wasm": "tx_become_validator.16c3baa5117ba3839d125ecf79991245ef445dff7e13e886c2539decd8839461.wasm", + "tx_bond.wasm": "tx_bond.91cb2a6d6d51750b6df7039468154c648d79601236157fc1426b8e970c58e385.wasm", + "tx_bridge_pool.wasm": "tx_bridge_pool.ba71bcc1445668fec75700dfb656c05e888fa54f7970298fb9c30de46b24328b.wasm", + "tx_change_consensus_key.wasm": "tx_change_consensus_key.b72e0d638a206c4bc4f6b3c0120eb73b627e538685ccc064f9c298ec5162ad88.wasm", + "tx_change_validator_commission.wasm": "tx_change_validator_commission.118252e4cdb284f2e2b4a36413914510aef110a0c76e0d6e527b0e030b833fe5.wasm", + "tx_change_validator_metadata.wasm": "tx_change_validator_metadata.f6894c5de14a8037a2aa7f2c3c3b801688a17d3b0ebbc92534fb14f36dab2036.wasm", + "tx_claim_rewards.wasm": "tx_claim_rewards.0ea8d8a75e45297913f13c4ce49f1b11f18ea8f8a20a1a20021483bf4ce26855.wasm", + "tx_deactivate_validator.wasm": "tx_deactivate_validator.70c360ba000bd68ab064a6d77f389e4e23f5e5e53baee2bab23d93ba05411c0a.wasm", + "tx_ibc.wasm": "tx_ibc.98afeecaade56e97cb9daafea2454713d68f4bf064fa99560bfebf9d46cd266a.wasm", + "tx_init_account.wasm": "tx_init_account.b07a38e051cc7954b968b6f9d595c8da5a85487e250cd7f88b2c5695e9dd28aa.wasm", + "tx_init_proposal.wasm": "tx_init_proposal.90aee6dc94b04d36760cf46e4b31f1402a5796cecbcc2d2a3c88be37d903bfc7.wasm", + "tx_reactivate_validator.wasm": "tx_reactivate_validator.7b1aa4b7bf943a8f3c6217b420a5d7e7820cda6904e599f7889b3e5de02c6279.wasm", + "tx_redelegate.wasm": "tx_redelegate.4faf85216586c350181299a4593989e2e5b62ddc497b39280637efecd20f3c28.wasm", + "tx_resign_steward.wasm": "tx_resign_steward.861bd6835e08048b184981b8a4ebecefa8474638caa850e6507cd793d870c968.wasm", + "tx_reveal_pk.wasm": "tx_reveal_pk.924d926119e24a16d2eb50752acedd9ffc506f5131bbfc866cdc1c0c20d2de77.wasm", + "tx_transfer.wasm": "tx_transfer.1d0a9c082404b4764cc53661e04a76087b22333862bdd0886b0f60a31e9eeb7e.wasm", + "tx_unbond.wasm": "tx_unbond.cdc9e11762fd04d324ce807b75b5eefafad385ff57f58849dfc6f9e8baf72ea4.wasm", + "tx_unjail_validator.wasm": "tx_unjail_validator.21fedbd874d5506cc486ddfd86f65cbda534a9cdfe513aea2b70ed7f22d28c80.wasm", + "tx_update_account.wasm": "tx_update_account.ea275512d91d6576c8a37a882801845a99bbe890d8a098f1af2bc255a499cd3d.wasm", + "tx_update_steward_commission.wasm": "tx_update_steward_commission.f9f87be6ffb1c55f8161413437b40e2d5e318544058a49dca3b8aead91ee4ba7.wasm", + "tx_vote_proposal.wasm": "tx_vote_proposal.30b0110a6a0f66115bbf10c78f14cedb15118b5ed1aab40fbd0bbbc6c3faeb86.wasm", + "tx_withdraw.wasm": "tx_withdraw.7f406f1e296d64897680ab6e5383e2bd9573fdcaed4d7da5c17850898000ee60.wasm", + "vp_implicit.wasm": "vp_implicit.544bbeeed6b729ebecf7a8d22330e091c4b005f834d30c2c0a8fc890702dfe5c.wasm", + "vp_user.wasm": "vp_user.0520166ee1c4260962cdf23050eae38959a8886db56f82f11a503efb20dd55df.wasm" } \ No newline at end of file diff --git a/wasm_for_tests/tx_fail.wasm b/wasm_for_tests/tx_fail.wasm index f6406827b4..6ca73b5dc5 100755 Binary files a/wasm_for_tests/tx_fail.wasm and b/wasm_for_tests/tx_fail.wasm differ diff --git a/wasm_for_tests/tx_memory_limit.wasm b/wasm_for_tests/tx_memory_limit.wasm index efc2fb7bd7..5461517365 100755 Binary files a/wasm_for_tests/tx_memory_limit.wasm and b/wasm_for_tests/tx_memory_limit.wasm differ diff --git a/wasm_for_tests/tx_mint_tokens.wasm b/wasm_for_tests/tx_mint_tokens.wasm index e79d206dfd..761e1a14e9 100755 Binary files a/wasm_for_tests/tx_mint_tokens.wasm and b/wasm_for_tests/tx_mint_tokens.wasm differ diff --git a/wasm_for_tests/tx_no_op.wasm b/wasm_for_tests/tx_no_op.wasm index cf752705ea..ec8236720c 100755 Binary files a/wasm_for_tests/tx_no_op.wasm and b/wasm_for_tests/tx_no_op.wasm differ diff --git a/wasm_for_tests/tx_proposal_code.wasm b/wasm_for_tests/tx_proposal_code.wasm index 022b5cef96..142c447c3d 100755 Binary files a/wasm_for_tests/tx_proposal_code.wasm and b/wasm_for_tests/tx_proposal_code.wasm differ diff --git a/wasm_for_tests/tx_read_storage_key.wasm b/wasm_for_tests/tx_read_storage_key.wasm index 1fcb89063d..5c14614129 100755 Binary files a/wasm_for_tests/tx_read_storage_key.wasm and b/wasm_for_tests/tx_read_storage_key.wasm differ diff --git a/wasm_for_tests/tx_write.wasm b/wasm_for_tests/tx_write.wasm index 40cdb97371..7016a89ec2 100755 Binary files a/wasm_for_tests/tx_write.wasm and b/wasm_for_tests/tx_write.wasm differ diff --git a/wasm_for_tests/tx_write_storage_key.wasm b/wasm_for_tests/tx_write_storage_key.wasm index 902d297af7..2f6e3946b4 100755 Binary files a/wasm_for_tests/tx_write_storage_key.wasm and b/wasm_for_tests/tx_write_storage_key.wasm differ diff --git a/wasm_for_tests/vp_always_false.wasm b/wasm_for_tests/vp_always_false.wasm index bbeaa24274..31ddbc9301 100755 Binary files a/wasm_for_tests/vp_always_false.wasm and b/wasm_for_tests/vp_always_false.wasm differ diff --git a/wasm_for_tests/vp_always_true.wasm b/wasm_for_tests/vp_always_true.wasm index 90ea4c6fc4..73fe8ca834 100755 Binary files a/wasm_for_tests/vp_always_true.wasm and b/wasm_for_tests/vp_always_true.wasm differ diff --git a/wasm_for_tests/vp_eval.wasm b/wasm_for_tests/vp_eval.wasm index bed4a45383..9f4a9a5d39 100755 Binary files a/wasm_for_tests/vp_eval.wasm and b/wasm_for_tests/vp_eval.wasm differ diff --git a/wasm_for_tests/vp_memory_limit.wasm b/wasm_for_tests/vp_memory_limit.wasm index 5c91e6113c..f170b6ac8b 100755 Binary files a/wasm_for_tests/vp_memory_limit.wasm and b/wasm_for_tests/vp_memory_limit.wasm differ diff --git a/wasm_for_tests/vp_read_storage_key.wasm b/wasm_for_tests/vp_read_storage_key.wasm index 7665fa7e39..96c28856c7 100755 Binary files a/wasm_for_tests/vp_read_storage_key.wasm and b/wasm_for_tests/vp_read_storage_key.wasm differ