diff --git a/apps/src/lib/cli/client.rs b/apps/src/lib/cli/client.rs index be67b754dc..a27e94e7f3 100644 --- a/apps/src/lib/cli/client.rs +++ b/apps/src/lib/cli/client.rs @@ -239,27 +239,33 @@ impl CliApi { let args = args.to_sdk(&mut ctx); let tx_args = args.tx.clone(); - let default_signer = signing::signer_from_address( - Some(args.sender.clone()), - ); + let default_signer = Some(args.sender.clone()); let signing_data = signing::aux_signing_data( &client, &mut ctx.wallet, &args.tx, - &args.sender, + &Some(args.sender.clone()), default_signer, ) .await?; - let tx_builder = bridge_pool::build_bridge_pool_tx( + let mut tx = bridge_pool::build_bridge_pool_tx( &client, args.clone(), signing_data.gas_payer.clone(), ) - .await?; + .await? + .unsigned_build(); + + signing::generate_test_vector( + &client, + &mut ctx.wallet, + &tx, + ) + .await; if args.tx.dump_tx { - dump_tx(&args.tx, tx_builder); + dump_tx(&args.tx, tx); } else { tx::submit_reveal_aux( &client, @@ -269,18 +275,18 @@ impl CliApi { ) .await?; - let tx_builder = signing::sign_tx( + signing::sign_tx( &mut ctx.wallet, &tx_args, - tx_builder, + &mut tx, signing_data, - )?; + ); sdk_tx::process_tx( &client, &mut ctx.wallet, &tx_args, - tx_builder.build(), + tx, ) .await?; } diff --git a/apps/src/lib/client/tx.rs b/apps/src/lib/client/tx.rs index a34d33f9ca..2cac2ce227 100644 --- a/apps/src/lib/client/tx.rs +++ b/apps/src/lib/client/tx.rs @@ -57,27 +57,30 @@ pub async fn submit_reveal_aux( let public_key = key.ref_to(); if tx::is_reveal_pk_needed::(client, address, args.force).await? { - let gas_payer = if let Some(gas_payer) = - args.clone().gas_payer.or(args.signing_keys.get(0).cloned()) - { - gas_payer - } else { - return Err(tx::Error::InvalidFeePayer); - }; + let signing_data = signing::aux_signing_data( + client, + &mut ctx.wallet, + &args, + &None, + None, + ) + .await?; - let tx_builder = tx::build_reveal_pk::( + let mut tx = tx::build_reveal_pk::( client, &args, address, &public_key, - &gas_payer.ref_to(), + &signing_data.gas_payer, ) - .await?; + .await? + .unsigned_build(); - let tx_builder = tx_builder.add_gas_payer(gas_payer); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; - tx::process_tx(client, &mut ctx.wallet, &args, tx_builder.build()) - .await?; + signing::sign_tx(&mut ctx.wallet, &args, &mut tx, signing_data); + + tx::process_tx(client, &mut ctx.wallet, &args, tx).await?; } } @@ -93,32 +96,30 @@ where C: namada::ledger::queries::Client + Sync, C::Error: std::fmt::Display, { - let default_signer = signing::signer_from_address(Some(args.owner.clone())); + let default_signer = Some(args.owner.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &args.owner, + &Some(args.owner.clone()), default_signer, ) .await?; submit_reveal_aux(client, ctx, args.tx.clone(), &args.owner).await?; - let tx_builder = - tx::build_custom(client, args.clone(), &signing_data.gas_payer).await?; + let mut tx = + tx::build_custom(client, args.clone(), &signing_data.gas_payer) + .await? + .unsigned_build(); + + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -133,31 +134,28 @@ where C: namada::ledger::queries::Client + Sync, C::Error: std::fmt::Display, { - let default_signer = signing::signer_from_address(Some(args.addr.clone())); + let default_signer = Some(args.addr.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &args.addr, + &Some(args.addr.clone()), default_signer, ) .await?; - let tx_builder = + let mut tx = tx::build_update_account(client, args.clone(), &signing_data.gas_payer) - .await?; + .await? + .unsigned_build(); + + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -172,27 +170,27 @@ where C: namada::ledger::queries::Client + Sync, C::Error: std::fmt::Display, { - let gas_payer = if let Some(gas_payer) = args.tx.gas_payer.clone().or(args - .tx - .signing_keys - .get(0) - .cloned()) - { - gas_payer - } else { - return Err(tx::Error::InvalidFeePayer); - }; + let signing_data = signing::aux_signing_data( + client, + &mut ctx.wallet, + &args.tx, + &None, + None, + ) + .await?; - let tx_builder = - tx::build_init_account(client, args.clone(), &gas_payer.ref_to()) - .await?; + let mut tx = + tx::build_init_account(client, args.clone(), &signing_data.gas_payer) + .await? + .unsigned_build(); + + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = tx_builder.add_gas_payer(gas_payer); - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -404,39 +402,36 @@ where let tx_builder = tx_builder.add_code_from_hash(tx_code_hash).add_data(data); - let gas_payer = if let Some(gas_payer) = tx_args - .gas_payer - .clone() - .or(tx_args.signing_keys.get(0).cloned()) - { - gas_payer - } else { - return Err(tx::Error::InvalidFeePayer); - }; + let signing_data = signing::aux_signing_data( + client, + &mut ctx.wallet, + &tx_args, + &None, + None, + ) + .await?; - let tx_builder = tx::prepare_tx( + let mut tx = tx::prepare_tx( client, &tx_args, tx_builder, - gas_payer.ref_to(), + signing_data.gas_payer.clone(), #[cfg(not(feature = "mainnet"))] false, ) - .await?; + .await? + .unsigned_build(); + + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if tx_args.dump_tx { - tx::dump_tx(&tx_args, tx_builder); + tx::dump_tx(&tx_args, tx); } else { - let tx_builder = tx_builder.add_gas_payer(gas_payer); + signing::sign_tx(&mut ctx.wallet, &tx_args, &mut tx, signing_data); - let result = tx::process_tx( - client, - &mut ctx.wallet, - &tx_args, - tx_builder.build(), - ) - .await? - .initialized_accounts(); + let result = tx::process_tx(client, &mut ctx.wallet, &tx_args, tx) + .await? + .initialized_accounts(); if !tx_args.dry_run { let (validator_address_alias, validator_address) = match &result[..] @@ -624,13 +619,12 @@ pub async fn submit_transfer( args: args::TxTransfer, ) -> Result<(), tx::Error> { for _ in 0..2 { - let default_signer = - signing::signer_from_address(Some(args.source.effective_address())); + let default_signer = Some(args.source.effective_address()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &args.source.effective_address(), + &Some(args.source.effective_address()), default_signer, ) .await?; @@ -651,23 +645,15 @@ pub async fn submit_transfer( &signing_data.gas_payer, ) .await?; + let mut tx = tx_builder.unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; - let result = tx::process_tx( - client, - &mut ctx.wallet, - &args.tx, - tx_builder.build(), - ) - .await?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); + let result = + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; let submission_epoch = rpc::query_and_print_epoch(client).await; @@ -706,34 +692,29 @@ where C: namada::ledger::queries::Client + Sync, C::Error: std::fmt::Display, { - let default_signer = - signing::signer_from_address(Some(args.source.clone())); + let default_signer = Some(args.source.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &args.source, + &Some(args.source.clone()), default_signer, ) .await?; submit_reveal_aux(client, &mut ctx, args.tx.clone(), &args.source).await?; - let tx_builder = + let mut tx = tx::build_ibc_transfer(client, args.clone(), &signing_data.gas_payer) - .await?; + .await? + .unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -875,12 +856,12 @@ where .await .unwrap(); - let default_signer = signing::signer_from_address(Some(signer.clone())); + let default_signer = Some(signer.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &signer, + &Some(signer.clone()), default_signer, ) .await?; @@ -910,7 +891,7 @@ where submit_reveal_aux(client, &mut ctx, args.tx.clone(), &signer).await?; - let tx_builder = tx::prepare_tx( + let mut tx = tx::prepare_tx( client, &args.tx, tx_builder, @@ -918,25 +899,16 @@ where #[cfg(not(feature = "mainnet"))] false, ) - .await?; + .await? + .unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); - tx::process_tx( - client, - &mut ctx.wallet, - &args.tx, - tx_builder.build(), - ) - .await?; + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -1174,14 +1146,12 @@ where .await .unwrap(); - let default_signer = signing::signer_from_address(Some( - args.voter_address.clone(), - )); + let default_signer = Some(args.voter_address.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &args.voter_address, + &Some(args.voter_address.clone()), default_signer, ) .await?; @@ -1193,7 +1163,7 @@ where .add_code_from_hash(tx_code_hash) .add_data(tx_data); - let tx_builder = tx::prepare_tx( + let mut tx = tx::prepare_tx( client, &args.tx, tx_builder, @@ -1201,27 +1171,25 @@ where #[cfg(not(feature = "mainnet"))] false, ) - .await?; + .await? + .unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx) + .await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { // no need to releal pk since people who an vote on // governane proposal must be enstablished addresses - let tx_builder = signing::sign_tx( + signing::sign_tx( &mut ctx.wallet, &args.tx, - tx_builder, + &mut tx, signing_data, - )?; - tx::process_tx( - client, - &mut ctx.wallet, - &args.tx, - tx_builder.build(), - ) - .await?; + ); + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx) + .await?; } Ok(()) } @@ -1318,35 +1286,30 @@ where C::Error: std::fmt::Display, { let default_address = args.source.clone().unwrap_or(args.validator.clone()); - let default_signer = - signing::signer_from_address(Some(default_address.clone())); + let default_signer = Some(default_address.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &default_address, + &Some(default_address.clone()), default_signer, ) .await?; submit_reveal_aux(client, ctx, args.tx.clone(), &default_address).await?; - let tx_builder = + let mut tx = tx::build_bond::(client, args.clone(), &signing_data.gas_payer) - .await?; + .await? + .unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -1362,13 +1325,12 @@ where C::Error: std::fmt::Display, { let default_address = args.source.clone().unwrap_or(args.validator.clone()); - let default_signer = - signing::signer_from_address(Some(default_address.clone())); + let default_signer = Some(default_address.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &default_address, + &Some(default_address), default_signer, ) .await?; @@ -1380,19 +1342,15 @@ where &signing_data.gas_payer, ) .await?; + let mut tx = tx_builder.unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; tx::query_unbonds(client, args.clone(), latest_withdrawal_pre).await?; } @@ -1410,33 +1368,28 @@ where C::Error: std::fmt::Display, { let default_address = args.source.clone().unwrap_or(args.validator.clone()); - let default_signer = - signing::signer_from_address(Some(default_address.clone())); + let default_signer = Some(default_address.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &default_address, + &Some(default_address), default_signer, ) .await?; - let tx_builder = + let mut tx = tx::build_withdraw(client, args.clone(), &signing_data.gas_payer) - .await?; + .await? + .unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -1451,36 +1404,31 @@ where C: namada::ledger::queries::Client + Sync, C::Error: std::fmt::Display, { - let default_signer = - signing::signer_from_address(Some(args.validator.clone())); + let default_signer = Some(args.validator.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &args.validator, + &Some(args.validator.clone()), default_signer, ) .await?; - let tx_builder = tx::build_validator_commission_change( + let mut tx = tx::build_validator_commission_change( client, args.clone(), &signing_data.gas_payer, ) - .await?; + .await? + .unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) @@ -1497,36 +1445,31 @@ where C: namada::ledger::queries::Client + Sync, C::Error: std::fmt::Display, { - let default_signer = - signing::signer_from_address(Some(args.validator.clone())); + let default_signer = Some(args.validator.clone()); let signing_data = signing::aux_signing_data( client, &mut ctx.wallet, &args.tx, - &args.validator, + &Some(args.validator.clone()), default_signer, ) .await?; - let tx_builder = tx::build_unjail_validator( + let mut tx = tx::build_unjail_validator( client, args.clone(), &signing_data.gas_payer, ) - .await?; + .await? + .unsigned_build(); + signing::generate_test_vector(client, &mut ctx.wallet, &tx).await; if args.tx.dump_tx { - tx::dump_tx(&args.tx, tx_builder); + tx::dump_tx(&args.tx, tx); } else { - let tx_builder = signing::sign_tx( - &mut ctx.wallet, - &args.tx, - tx_builder, - signing_data, - )?; + signing::sign_tx(&mut ctx.wallet, &args.tx, &mut tx, signing_data); - tx::process_tx(client, &mut ctx.wallet, &args.tx, tx_builder.build()) - .await?; + tx::process_tx(client, &mut ctx.wallet, &args.tx, tx).await?; } Ok(()) diff --git a/apps/src/lib/node/ledger/shell/finalize_block.rs b/apps/src/lib/node/ledger/shell/finalize_block.rs index c1688f9ddc..2f9de66859 100644 --- a/apps/src/lib/node/ledger/shell/finalize_block.rs +++ b/apps/src/lib/node/ledger/shell/finalize_block.rs @@ -3518,7 +3518,7 @@ mod test_finalize_block { let tx = tx_builder .add_code_from_hash(Hash::default()) .add_data(0u64) - .build(); + .signed_build(); let new_min_confirmations = MinimumConfirmations::from(unsafe { NonZeroU64::new_unchecked(42) }); diff --git a/apps/src/lib/node/ledger/shell/mod.rs b/apps/src/lib/node/ledger/shell/mod.rs index 40c1d1c51f..bc012738da 100644 --- a/apps/src/lib/node/ledger/shell/mod.rs +++ b/apps/src/lib/node/ledger/shell/mod.rs @@ -2206,7 +2206,7 @@ mod test_mempool_validate { let tx_builder = TxBuilder::new(shell.chain_id.clone(), None); let tx = tx_builder .add_code("wasm_code".as_bytes().to_owned()) - .build(); + .signed_build(); let result = shell.mempool_validate( tx.to_bytes().as_ref(), @@ -2340,7 +2340,7 @@ mod test_mempool_validate { .add_code("wasm_code".as_bytes().to_owned()) .add_data("transaction data".as_bytes().to_owned()) .add_gas_payer(keypair) - .build(); + .signed_build(); let result = shell.mempool_validate( tx.to_bytes().as_ref(), @@ -2372,7 +2372,7 @@ mod test_mempool_validate { .add_code("wasm_code".as_bytes().to_owned()) .add_data("transaction data".as_bytes().to_owned()) .add_gas_payer(keypair) - .build(); + .signed_build(); let result = shell.mempool_validate( tx.to_bytes().as_ref(), diff --git a/apps/src/lib/node/ledger/shell/process_proposal.rs b/apps/src/lib/node/ledger/shell/process_proposal.rs index af1fd8cb78..7777df4ef9 100644 --- a/apps/src/lib/node/ledger/shell/process_proposal.rs +++ b/apps/src/lib/node/ledger/shell/process_proposal.rs @@ -2035,7 +2035,7 @@ mod test_process_proposal { .add_code("wasm_code".as_bytes().to_owned()) .add_data("transaction data".as_bytes().to_owned()) .add_gas_payer(keypair) - .build(); + .signed_build(); let response = { let request = ProcessProposal { diff --git a/shared/src/ledger/ibc/vp/mod.rs b/shared/src/ledger/ibc/vp/mod.rs index 22c0162442..32e138f912 100644 --- a/shared/src/ledger/ibc/vp/mod.rs +++ b/shared/src/ledger/ibc/vp/mod.rs @@ -836,7 +836,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -973,7 +973,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -1176,7 +1176,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -1304,7 +1304,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -1951,7 +1951,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -2089,7 +2089,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -2265,7 +2265,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -2410,7 +2410,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -2560,7 +2560,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = @@ -2710,7 +2710,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(keypair_1()) - .build(); + .signed_build(); let gas_meter = VpGasMeter::new(0); let (vp_wasm_cache, _vp_cache_dir) = diff --git a/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs b/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs index f5bd77e152..075c9e38f1 100644 --- a/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs +++ b/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs @@ -626,7 +626,7 @@ mod test_bridge_pool_vp { let tx_builder = TxBuilder::new(wl_storage.storage.chain_id.clone(), None); - let tx = tx_builder.add_data(transfer).build(); + let tx = tx_builder.add_data(transfer).signed_build(); let res = vp.validate_tx(&tx, &keys_changed, &verifiers); match expect { @@ -965,7 +965,7 @@ mod test_bridge_pool_vp { let tx_builder = TxBuilder::new(wl_storage.storage.chain_id.clone(), None); - let tx = tx_builder.add_data(transfer).build(); + let tx = tx_builder.add_data(transfer).signed_build(); let res = vp.validate_tx(&tx, &keys_changed, &verifiers); assert!(!res.expect("Test failed")); @@ -1028,7 +1028,7 @@ mod test_bridge_pool_vp { let tx_builder = TxBuilder::new(wl_storage.storage.chain_id.clone(), None); - let tx = tx_builder.add_data(transfer).build(); + let tx = tx_builder.add_data(transfer).signed_build(); let res = vp .validate_tx(&tx, &keys_changed, &verifiers) @@ -1115,7 +1115,7 @@ mod test_bridge_pool_vp { let tx_builder = TxBuilder::new(wl_storage.storage.chain_id.clone(), None); - let tx = tx_builder.add_data(transfer).build(); + let tx = tx_builder.add_data(transfer).signed_build(); let res = vp .validate_tx(&tx, &keys_changed, &verifiers) @@ -1203,7 +1203,7 @@ mod test_bridge_pool_vp { let tx_builder = TxBuilder::new(wl_storage.storage.chain_id.clone(), None); - let tx = tx_builder.add_data(transfer).build(); + let tx = tx_builder.add_data(transfer).signed_build(); let res = vp .validate_tx(&tx, &keys_changed, &verifiers) @@ -1318,7 +1318,7 @@ mod test_bridge_pool_vp { let tx_builder = TxBuilder::new(wl_storage.storage.chain_id.clone(), None); - let tx = tx_builder.add_data(transfer).build(); + let tx = tx_builder.add_data(transfer).signed_build(); let res = vp .validate_tx(&tx, &keys_changed, &verifiers) diff --git a/shared/src/ledger/signing.rs b/shared/src/ledger/signing.rs index a386f80ed2..fb2b3f8088 100644 --- a/shared/src/ledger/signing.rs +++ b/shared/src/ledger/signing.rs @@ -64,20 +64,11 @@ pub struct SigningTxData { /// The threshold associated to an account pub threshold: u8, /// The public keys to index map associated to an account - pub account_public_keys_map: AccountPublicKeysMap, + pub account_public_keys_map: Option, /// The public keys of the fee payer pub gas_payer: common::PublicKey, } -/// Generate a signing key from an address. Default to None if address is empty. -pub fn signer_from_address(address: Option
) -> TxSigningKey { - if let Some(address) = address { - TxSigningKey::WalletAddress(address) - } else { - TxSigningKey::None - } -} - /// Find the public key for the given address and try to load the keypair /// 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 @@ -147,16 +138,6 @@ pub fn find_key_by_pk( } } -/// Carries types that can be directly/indirectly used to sign a transaction. -#[allow(clippy::large_enum_variant)] -#[derive(Clone)] -pub enum TxSigningKey { - /// Do not sign any transaction - None, - /// Obtain the keypair corresponding to given address from wallet and sign - WalletAddress(Address), -} - /// Given CLI arguments and some defaults, determine the rightful transaction /// 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` @@ -168,7 +149,7 @@ pub async fn tx_signers< client: &C, wallet: &mut Wallet, args: &args::Tx, - default: TxSigningKey, + default: Option
, ) -> Result, Error> { let signer = if !&args.signing_keys.is_empty() { let public_keys = @@ -183,14 +164,12 @@ pub async fn tx_signers< // Now actually fetch the signing key and apply it match signer { - TxSigningKey::WalletAddress(signer) if signer == masp() => { - Ok(vec![masp_tx_key().ref_to()]) - } - TxSigningKey::WalletAddress(signer) => Ok(vec![ + Some(signer) if signer == masp() => Ok(vec![masp_tx_key().ref_to()]), + Some(signer) => Ok(vec![ find_pk::(client, wallet, &signer, args.password.clone()) .await?, ]), - TxSigningKey::None => other_err( + None => other_err( "All transactions must be signed; please either specify the key \ or the address from which to look up the signing key." .to_string(), @@ -209,30 +188,48 @@ pub async fn tx_signers< pub fn sign_tx( wallet: &mut Wallet, args: &args::Tx, - tx_builder: TxBuilder, + tx: &mut Tx, signing_data: SigningTxData, -) -> Result { - let signing_tx_keypairs = signing_data - .public_keys - .iter() - .filter_map(|public_key| { - match find_key_by_pk(wallet, args, public_key) { - Ok(secret_key) => Some(secret_key), - Err(_) => None, - } - }) - .collect::>(); +) { + tx.protocol_filter(); + + if let Some(account_public_keys_map) = signing_data.account_public_keys_map + { + let signing_tx_keypairs = signing_data + .public_keys + .iter() + .filter_map(|public_key| { + match find_key_by_pk(wallet, args, public_key) { + Ok(secret_key) => Some(secret_key), + Err(_) => None, + } + }) + .collect::>(); + + let hashes = tx + .sections + .iter() + .filter_map(|section| match section { + Section::Data(_) | Section::Code(_) => Some(section.get_hash()), + _ => None, + }) + .collect(); + tx.add_section(Section::SectionSignature( + crate::proto::MultiSignature::new( + hashes, + &signing_tx_keypairs, + &account_public_keys_map, + ), + )); + } let gas_payer_keypair = find_key_by_pk(wallet, args, &signing_data.gas_payer).expect(""); - let tx_builder = tx_builder.add_signing_keys( - signing_tx_keypairs, - signing_data.account_public_keys_map, - ); - let tx_builder = tx_builder.add_gas_payer(gas_payer_keypair); - - Ok(tx_builder) + tx.add_section(Section::Signature(crate::proto::Signature::new( + tx.sechashes(), + &gas_payer_keypair, + ))); } /// Return the necessary data regarding an account to be able to generate a @@ -244,39 +241,37 @@ pub async fn aux_signing_data< client: &C, wallet: &mut Wallet, args: &args::Tx, - owner: &Address, - default_signer: TxSigningKey, + owner: &Option
, + default_signer: Option
, ) -> Result { - let public_keys = - tx_signers::(client, wallet, args, default_signer.clone()) - .await?; + let public_keys = if owner.is_some() || args.gas_payer.is_none() { + tx_signers::(client, wallet, args, default_signer.clone()).await? + } else { + vec![] + }; let (account_public_keys_map, threshold) = match owner { - Address::Established(_) => { + Some(owner @ Address::Established(_)) => { let account = rpc::get_account_info::(client, owner).await; if let Some(account) = account { - (account.public_keys_map, account.threshold) + (Some(account.public_keys_map), account.threshold) } else { return Err(Error::InvalidAccount(owner.encode())); } } - Address::Implicit(_) => { - (AccountPublicKeysMap::from_iter(public_keys.clone()), 1u8) - } - Address::Internal(_) => { + Some(Address::Implicit(_)) => ( + Some(AccountPublicKeysMap::from_iter(public_keys.clone())), + 1u8, + ), + Some(owner @ Address::Internal(_)) => { return Err(Error::InvalidAccount(owner.encode())); } + None => (None, 0u8), }; let gas_payer = match &args.gas_payer { Some(keypair) => keypair.ref_to(), - None => { - if let Some(public_key) = public_keys.get(0) { - public_key.clone() - } else { - return Err(Error::InvalidFeePayer); - } - } + None => public_keys.get(0).ok_or(Error::InvalidFeePayer)?.clone(), }; Ok(SigningTxData { diff --git a/shared/src/ledger/tx.rs b/shared/src/ledger/tx.rs index a408b6c397..fea06b9cbb 100644 --- a/shared/src/ledger/tx.rs +++ b/shared/src/ledger/tx.rs @@ -263,8 +263,7 @@ impl ProcessTxResponse { } /// Build and dump a transaction either to file or to screen -pub fn dump_tx(args: &args::Tx, tx_builder: TxBuilder) { - let tx = tx_builder.build(); +pub fn dump_tx(args: &args::Tx, tx: Tx) { let tx_id = tx.header_hash(); let serialized_tx = tx.serialize(); match args.output_folder.to_owned() { @@ -326,11 +325,6 @@ pub async fn process_tx< // let request_body = request.into_json(); // println!("HTTP request body: {}", request_body); - #[cfg(feature = "std")] - { - super::signing::generate_test_vector(client, wallet, &tx).await; - } - if args.dry_run { expect_dry_broadcast(TxBroadcastData::DryRun(tx), client).await } else { diff --git a/shared/src/types/tx.rs b/shared/src/types/tx.rs index 2063fb1c63..a28da9c770 100644 --- a/shared/src/types/tx.rs +++ b/shared/src/types/tx.rs @@ -130,7 +130,7 @@ impl TxBuilder { } /// Generate the corresponding tx - pub fn build(self) -> Tx { + pub fn unsigned_build(self) -> Tx { let mut tx = Tx::new(TxType::Raw); tx.header.chain_id = self.chain_id; tx.header.expiration = self.expiration; @@ -139,8 +139,6 @@ impl TxBuilder { tx.add_section(section); } - tx.protocol_filter(); - for section in self.sections { match section { Section::Data(_) => tx.set_data_sechash(section.get_hash()), @@ -152,7 +150,19 @@ impl TxBuilder { tx.update_header(TxType::Wrapper(Box::new(wrapper))); } - if let Some(account_public_keys_map) = self.account_public_keys_map { + tx + } + + /// Generate the corresponding tx + pub fn signed_build(self) -> Tx { + let account_public_keys_map = self.account_public_keys_map.clone(); + let gas_payer = self.gas_payer.clone(); + let signing_keys = self.signing_keys.clone(); + let mut tx = self.unsigned_build(); + + tx.protocol_filter(); + + if let Some(account_public_keys_map) = account_public_keys_map { let hashes = tx .sections .iter() @@ -165,12 +175,12 @@ impl TxBuilder { .collect(); tx.add_section(Section::SectionSignature(MultiSignature::new( hashes, - &self.signing_keys, + &signing_keys, &account_public_keys_map, ))); } - if let Some(keypair) = self.gas_payer { + if let Some(keypair) = gas_payer { let mut sections_hashes = tx .sections .iter() diff --git a/shared/src/vm/wasm/run.rs b/shared/src/vm/wasm/run.rs index 861b525d8b..0dc6842282 100644 --- a/shared/src/vm/wasm/run.rs +++ b/shared/src/vm/wasm/run.rs @@ -623,7 +623,7 @@ mod tests { let tx = tx_builder .add_code(vec![]) .add_serialized_data(input) - .build(); + .signed_build(); let eval_vp = EvalVp { vp_code_hash: limit_code_hash, @@ -631,7 +631,8 @@ mod tests { }; let tx_builder = TxBuilder::new(storage.chain_id.clone(), None); - let outer_tx = tx_builder.add_code(vec![]).add_data(eval_vp).build(); + let outer_tx = + tx_builder.add_code(vec![]).add_data(eval_vp).signed_build(); let (vp_cache, _) = wasm::compilation_cache::common::testing::cache(); // When the `eval`ed VP doesn't run out of memory, it should return @@ -657,7 +658,7 @@ mod tests { // should fail let input = 2_usize.pow(24).try_to_vec().unwrap(); let tx_builder = TxBuilder::new(storage.chain_id.clone(), None); - let tx = tx_builder.add_code(vec![]).add_data(input).build(); + let tx = tx_builder.add_code(vec![]).add_data(input).signed_build(); let eval_vp = EvalVp { vp_code_hash: limit_code_hash, @@ -665,7 +666,8 @@ mod tests { }; let tx_builder = TxBuilder::new(storage.chain_id.clone(), None); - let outer_tx = tx_builder.add_code(vec![]).add_data(eval_vp).build(); + let outer_tx = + tx_builder.add_code(vec![]).add_data(eval_vp).signed_build(); // When the `eval`ed VP runs out of memory, its result should be // `false`, hence we should also get back `false` from the VP that @@ -1030,7 +1032,7 @@ mod tests { let tx = tx_builder .add_code(vec![]) .add_serialized_data(input) - .build(); + .signed_build(); let eval_vp = EvalVp { vp_code_hash: read_code_hash, @@ -1038,7 +1040,8 @@ mod tests { }; let tx_builder = TxBuilder::new(storage.chain_id.clone(), None); - let outer_tx = tx_builder.add_code(vec![]).add_data(eval_vp).build(); + let outer_tx = + tx_builder.add_code(vec![]).add_data(eval_vp).signed_build(); let (vp_cache, _) = wasm::compilation_cache::common::testing::cache(); let passed = vp( diff --git a/tests/src/native_vp/eth_bridge_pool.rs b/tests/src/native_vp/eth_bridge_pool.rs index 2e4f628147..630485e674 100644 --- a/tests/src/native_vp/eth_bridge_pool.rs +++ b/tests/src/native_vp/eth_bridge_pool.rs @@ -114,7 +114,7 @@ mod test_bridge_pool_vp { .add_code(wasm_code) .add_serialized_data(data) .add_gas_payer(keypair.clone()) - .build() + .signed_build() } #[test] diff --git a/tests/src/vm_host_env/mod.rs b/tests/src/vm_host_env/mod.rs index 433f8f37d4..828ee20456 100644 --- a/tests/src/vm_host_env/mod.rs +++ b/tests/src/vm_host_env/mod.rs @@ -467,7 +467,7 @@ mod tests { .add_serialized_data(data.to_vec()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); env.tx = tx; env.tx.clone() @@ -565,7 +565,7 @@ mod tests { .add_serialized_data(input_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); let result = vp::CTX.eval(empty_code, tx).unwrap(); assert!(!result); @@ -583,7 +583,7 @@ mod tests { .add_serialized_data(input_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); let result = vp::CTX.eval(code_hash, tx).unwrap(); assert!(result); @@ -602,7 +602,7 @@ mod tests { .add_serialized_data(input_data) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); let result = vp::CTX.eval(code_hash, tx).unwrap(); assert!(!result); } @@ -629,7 +629,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); // create a client with the message tx_host_env::ibc::ibc_actions(tx::ctx()) @@ -665,7 +665,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // update the client with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -710,7 +710,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); // init a connection with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -745,7 +745,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // open the connection with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -791,7 +791,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); // open try a connection with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -826,7 +826,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // open the connection with the mssage tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -874,7 +874,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); // init a channel with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -909,7 +909,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // open the channle with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -957,7 +957,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); // try open a channel with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -993,7 +993,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // open a channel with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -1044,7 +1044,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // close the channel with the message let mut actions = tx_host_env::ibc::ibc_actions(tx::ctx()); // the dummy module closes the channel @@ -1103,7 +1103,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // close the channel with the message tx_host_env::ibc::ibc_actions(tx::ctx()) @@ -1159,7 +1159,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair.clone()) .add_signing_keys(keypairs.clone(), pks_map.clone()) - .build(); + .signed_build(); // send the token and a packet with the data tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -1208,7 +1208,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // ack the packet with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -1295,7 +1295,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // send the token and a packet with the data tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -1370,7 +1370,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // receive a packet with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -1467,7 +1467,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // receive a packet with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -1568,7 +1568,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // receive a packet with the message tx_host_env::ibc::ibc_actions(tx::ctx()) .execute(&tx_data) @@ -1670,7 +1670,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // timeout the packet tx_host_env::ibc::ibc_actions(tx::ctx()) @@ -1761,7 +1761,7 @@ mod tests { .add_serialized_data(tx_data.clone()) .add_gas_payer(keypair) .add_signing_keys(keypairs, pks_map) - .build(); + .signed_build(); // timeout the packet tx_host_env::ibc::ibc_actions(tx::ctx()) diff --git a/wasm/wasm_source/src/tx_bond.rs b/wasm/wasm_source/src/tx_bond.rs index 3ebd6aa8a4..ac5b413fd9 100644 --- a/wasm/wasm_source/src/tx_bond.rs +++ b/wasm/wasm_source/src/tx_bond.rs @@ -113,7 +113,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(key) - .build(); + .signed_build(); let signed_tx = tx; diff --git a/wasm/wasm_source/src/tx_change_validator_commission.rs b/wasm/wasm_source/src/tx_change_validator_commission.rs index db5486e1f4..16d5e0b6b2 100644 --- a/wasm/wasm_source/src/tx_change_validator_commission.rs +++ b/wasm/wasm_source/src/tx_change_validator_commission.rs @@ -92,7 +92,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(key) - .build(); + .signed_build(); let signed_tx = tx; diff --git a/wasm/wasm_source/src/tx_unbond.rs b/wasm/wasm_source/src/tx_unbond.rs index 6dd7d76a50..d1b8e1d277 100644 --- a/wasm/wasm_source/src/tx_unbond.rs +++ b/wasm/wasm_source/src/tx_unbond.rs @@ -132,7 +132,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(key) - .build(); + .signed_build(); let signed_tx = tx; let unbond_src = unbond diff --git a/wasm/wasm_source/src/tx_withdraw.rs b/wasm/wasm_source/src/tx_withdraw.rs index b0046c2cc3..b8af8c4e49 100644 --- a/wasm/wasm_source/src/tx_withdraw.rs +++ b/wasm/wasm_source/src/tx_withdraw.rs @@ -176,7 +176,7 @@ mod tests { .add_code(tx_code) .add_serialized_data(tx_data) .add_gas_payer(key) - .build(); + .signed_build(); let signed_tx = tx; // Read data before we apply tx: diff --git a/wasm_for_tests/tx_memory_limit.wasm b/wasm_for_tests/tx_memory_limit.wasm index 186c290345..0186d91ea1 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_no_op.wasm b/wasm_for_tests/tx_no_op.wasm index a0d7392cbf..808930b372 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 e45bdb6190..78f3f1d5f5 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 580ebc7366..60d12f8043 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 a955492503..506754c342 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 5d600d185f..a0fb758ae9 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 b7515747c6..8b1ea61222 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 5c3df8e85e..fda763a0f8 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 b3c094a99e..be1fef1161 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 9632de221e..689b87e2f8 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 9f8a5008c7..c1c6ae7f1b 100755 Binary files a/wasm_for_tests/vp_read_storage_key.wasm and b/wasm_for_tests/vp_read_storage_key.wasm differ