From 672e9c640f4cf344adc227d2650c76cd25d1ea8b Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Fri, 12 Mar 2021 19:37:39 -0700 Subject: [PATCH] CLI: Support dumping the TX message in sign-only mode --- Cargo.lock | 1 + clap-utils/src/keypair.rs | 1 + clap-utils/src/offline.rs | 18 +++++ cli-output/Cargo.toml | 1 + cli-output/src/cli_output.rs | 50 +++++++++++++ cli/src/cli.rs | 54 +++++++++++++- cli/src/stake.rs | 132 ++++++++++++++++++++++++++++++++--- cli/tests/nonce.rs | 2 + cli/tests/stake.rs | 45 ++++++++++++ cli/tests/transfer.rs | 12 ++++ cli/tests/vote.rs | 1 + programs/bpf/Cargo.lock | 1 + 12 files changed, 305 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 26121fdd17..8ca8d702e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4277,6 +4277,7 @@ name = "solana-cli-output" version = "1.7.0" dependencies = [ "Inflector", + "base64 0.13.0", "chrono", "console", "humantime 2.0.1", diff --git a/clap-utils/src/keypair.rs b/clap-utils/src/keypair.rs index eadc789e36..5c9fd849d0 100644 --- a/clap-utils/src/keypair.rs +++ b/clap-utils/src/keypair.rs @@ -28,6 +28,7 @@ use std::{ pub struct SignOnly { pub blockhash: Hash, + pub message: Option, pub present_signers: Vec<(Pubkey, Signature)>, pub absent_signers: Vec, pub bad_signers: Vec, diff --git a/clap-utils/src/offline.rs b/clap-utils/src/offline.rs index 514e49fa7c..f632e83e19 100644 --- a/clap-utils/src/offline.rs +++ b/clap-utils/src/offline.rs @@ -19,6 +19,12 @@ pub const SIGNER_ARG: ArgConstant<'static> = ArgConstant { help: "Provide a public-key/signature pair for the transaction", }; +pub const DUMP_TRANSACTION_MESSAGE: ArgConstant<'static> = ArgConstant { + name: "dump_transaction_message", + long: "dump-transaction-message", + help: "Display the base64 encoded binary transaction message in sign-only mode", +}; + pub fn blockhash_arg<'a, 'b>() -> Arg<'a, 'b> { Arg::with_name(BLOCKHASH_ARG.name) .long(BLOCKHASH_ARG.long) @@ -47,6 +53,14 @@ fn signer_arg<'a, 'b>() -> Arg<'a, 'b> { .help(SIGNER_ARG.help) } +pub fn dump_transaction_message<'a, 'b>() -> Arg<'a, 'b> { + Arg::with_name(DUMP_TRANSACTION_MESSAGE.name) + .long(DUMP_TRANSACTION_MESSAGE.long) + .takes_value(false) + .requires(SIGN_ONLY_ARG.name) + .help(DUMP_TRANSACTION_MESSAGE.help) +} + pub trait ArgsConfig { fn blockhash_arg<'a, 'b>(&self, arg: Arg<'a, 'b>) -> Arg<'a, 'b> { arg @@ -57,6 +71,9 @@ pub trait ArgsConfig { fn signer_arg<'a, 'b>(&self, arg: Arg<'a, 'b>) -> Arg<'a, 'b> { arg } + fn dump_transaction_message_arg<'a, 'b>(&self, arg: Arg<'a, 'b>) -> Arg<'a, 'b> { + arg + } } pub trait OfflineArgs { @@ -69,6 +86,7 @@ impl OfflineArgs for App<'_, '_> { self.arg(config.blockhash_arg(blockhash_arg())) .arg(config.sign_only_arg(sign_only_arg())) .arg(config.signer_arg(signer_arg())) + .arg(config.dump_transaction_message_arg(dump_transaction_message())) } fn offline_args(self) -> Self { struct NullArgsConfig {} diff --git a/cli-output/Cargo.toml b/cli-output/Cargo.toml index 65aaea7a7f..5ecf0b8738 100644 --- a/cli-output/Cargo.toml +++ b/cli-output/Cargo.toml @@ -10,6 +10,7 @@ homepage = "https://solana.com/" documentation = "https://docs.rs/solana-cli-output" [dependencies] +base64 = "0.13.0" chrono = { version = "0.4.11", features = ["serde"] } console = "0.11.3" humantime = "2.0.1" diff --git a/cli-output/src/cli_output.rs b/cli-output/src/cli_output.rs index af104d80a7..c90fc820f6 100644 --- a/cli-output/src/cli_output.rs +++ b/cli-output/src/cli_output.rs @@ -1319,6 +1319,8 @@ impl fmt::Display for CliInflation { #[serde(rename_all = "camelCase")] pub struct CliSignOnlyData { pub blockhash: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub message: Option, #[serde(skip_serializing_if = "Vec::is_empty", default)] pub signers: Vec, #[serde(skip_serializing_if = "Vec::is_empty", default)] @@ -1334,6 +1336,9 @@ impl fmt::Display for CliSignOnlyData { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { writeln!(f)?; writeln_name_value(f, "Blockhash:", &self.blockhash)?; + if let Some(message) = self.message.as_ref() { + writeln_name_value(f, "Transaction Message:", message)?; + } if !self.signers.is_empty() { writeln!(f, "{}", style("Signers (Pubkey=Signature):").bold())?; for signer in self.signers.iter() { @@ -1696,9 +1701,22 @@ impl fmt::Display for CliUpgradeableBuffer { } } +#[derive(Debug, Default)] +pub struct ReturnSignersConfig { + pub dump_transaction_message: bool, +} + pub fn return_signers( tx: &Transaction, output_format: &OutputFormat, +) -> Result> { + return_signers_with_config(tx, output_format, &ReturnSignersConfig::default()) +} + +pub fn return_signers_with_config( + tx: &Transaction, + output_format: &OutputFormat, + config: &ReturnSignersConfig, ) -> Result> { let verify_results = tx.verify_with_results(); let mut signers = Vec::new(); @@ -1717,9 +1735,16 @@ pub fn return_signers( bad_sig.push(key.to_string()); } }); + let message = if config.dump_transaction_message { + let message_data = tx.message_data(); + Some(base64::encode(&message_data)) + } else { + None + }; let cli_command = CliSignOnlyData { blockhash: tx.message.recent_blockhash.to_string(), + message, signers, absent, bad_sig, @@ -1774,8 +1799,14 @@ pub fn parse_sign_only_reply_string(reply: &str) -> SignOnly { .collect(); } + let message = object + .get("message") + .and_then(|o| o.as_str()) + .map(|m| m.to_string()); + SignOnly { blockhash, + message, present_signers, absent_signers, bad_signers, @@ -2054,6 +2085,25 @@ mod tests { let res = return_signers(&tx, &OutputFormat::JsonCompact).unwrap(); let sign_only = parse_sign_only_reply_string(&res); assert_eq!(sign_only.blockhash, blockhash); + assert_eq!(sign_only.message, None); + assert_eq!(sign_only.present_signers[0].0, present.pubkey()); + assert_eq!(sign_only.absent_signers[0], absent.pubkey()); + assert_eq!(sign_only.bad_signers[0], bad.pubkey()); + + let expected_msg = "AwECBwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgTl3Dqh9\ + F19Wo1Rmw0x+zMuNipG07jeiXfYPW4/Js5QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE\ + BAQEBAYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQUFBQUF\ + BQUFBQUFBQUFBQUFBQUGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAAAAAAAAAAAA\ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcH\ + BwcCBgMDBQIEBAAAAAYCAQQMAgAAACoAAAAAAAAA" + .to_string(); + let config = ReturnSignersConfig { + dump_transaction_message: true, + }; + let res = return_signers_with_config(&tx, &OutputFormat::JsonCompact, &config).unwrap(); + let sign_only = parse_sign_only_reply_string(&res); + assert_eq!(sign_only.blockhash, blockhash); + assert_eq!(sign_only.message, Some(expected_msg)); assert_eq!(sign_only.present_signers[0].0, present.pubkey()); assert_eq!(sign_only.absent_signers[0], absent.pubkey()); assert_eq!(sign_only.bad_signers[0], bad.pubkey()); diff --git a/cli/src/cli.rs b/cli/src/cli.rs index d84a8a6682..18ab314fc5 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -18,8 +18,8 @@ use solana_clap_utils::{ }; use solana_cli_output::{ display::{build_balance_message, println_name_value}, - return_signers, CliAccount, CliSignature, CliSignatureVerificationStatus, CliTransaction, - CliTransactionConfirmation, OutputFormat, + return_signers_with_config, CliAccount, CliSignature, CliSignatureVerificationStatus, + CliTransaction, CliTransactionConfirmation, OutputFormat, ReturnSignersConfig, }; use solana_client::{ blockhash_query::BlockhashQuery, @@ -198,6 +198,7 @@ pub enum CliCommand { lockup: Lockup, amount: SpendAmount, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -208,6 +209,7 @@ pub enum CliCommand { stake_account_pubkey: Pubkey, stake_authority: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -219,6 +221,7 @@ pub enum CliCommand { stake_authority: SignerIndex, force: bool, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -228,6 +231,7 @@ pub enum CliCommand { stake_account_pubkey: Pubkey, stake_authority: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -241,6 +245,7 @@ pub enum CliCommand { source_stake_account_pubkey: Pubkey, stake_authority: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -257,6 +262,7 @@ pub enum CliCommand { stake_account_pubkey: Pubkey, new_authorizations: Vec<(StakeAuthorize, Pubkey, SignerIndex)>, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -268,6 +274,7 @@ pub enum CliCommand { lockup: LockupArgs, custodian: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -280,6 +287,7 @@ pub enum CliCommand { withdraw_authority: SignerIndex, custodian: Option, sign_only: bool, + dump_transaction_message: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -351,6 +359,7 @@ pub enum CliCommand { to: Pubkey, from: SignerIndex, sign_only: bool, + dump_transaction_message: bool, no_wait: bool, blockhash_query: BlockhashQuery, nonce_account: Option, @@ -847,6 +856,7 @@ pub fn parse_command( let amount = SpendAmount::new_from_matches(matches, "amount"); let to = pubkey_of_signer(matches, "to", wallet_manager)?.unwrap(); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let no_wait = matches.is_present("no_wait"); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of_signer(matches, NONCE_ARG.name, wallet_manager)?; @@ -875,6 +885,7 @@ pub fn parse_command( amount, to, sign_only, + dump_transaction_message, no_wait, blockhash_query, nonce_account, @@ -1127,6 +1138,7 @@ fn process_transfer( to: &Pubkey, from: SignerIndex, sign_only: bool, + dump_transaction_message: bool, no_wait: bool, blockhash_query: &BlockhashQuery, nonce_account: Option<&Pubkey>, @@ -1193,7 +1205,13 @@ fn process_transfer( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { if let Some(nonce_account) = &nonce_account { let nonce_account = nonce_utils::get_account_with_commitment( @@ -1445,6 +1463,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { lockup, amount, sign_only, + dump_transaction_message, blockhash_query, ref nonce_account, nonce_authority, @@ -1460,6 +1479,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { lockup, *amount, *sign_only, + *dump_transaction_message, blockhash_query, nonce_account.as_ref(), *nonce_authority, @@ -1470,6 +1490,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { stake_account_pubkey, stake_authority, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority, @@ -1480,6 +1501,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { &stake_account_pubkey, *stake_authority, *sign_only, + *dump_transaction_message, blockhash_query, *nonce_account, *nonce_authority, @@ -1491,6 +1513,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { stake_authority, force, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority, @@ -1503,6 +1526,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { *stake_authority, *force, *sign_only, + *dump_transaction_message, blockhash_query, *nonce_account, *nonce_authority, @@ -1512,6 +1536,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { stake_account_pubkey, stake_authority, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority, @@ -1525,6 +1550,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { &stake_account_pubkey, *stake_authority, *sign_only, + *dump_transaction_message, blockhash_query, *nonce_account, *nonce_authority, @@ -1538,6 +1564,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { source_stake_account_pubkey, stake_authority, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority, @@ -1549,6 +1576,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { &source_stake_account_pubkey, *stake_authority, *sign_only, + *dump_transaction_message, blockhash_query, *nonce_account, *nonce_authority, @@ -1570,6 +1598,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { stake_account_pubkey, ref new_authorizations, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority, @@ -1582,6 +1611,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { new_authorizations, *custodian, *sign_only, + *dump_transaction_message, blockhash_query, *nonce_account, *nonce_authority, @@ -1592,6 +1622,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { mut lockup, custodian, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority, @@ -1603,6 +1634,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { &mut lockup, *custodian, *sign_only, + *dump_transaction_message, blockhash_query, *nonce_account, *nonce_authority, @@ -1615,6 +1647,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { withdraw_authority, custodian, sign_only, + dump_transaction_message, blockhash_query, ref nonce_account, nonce_authority, @@ -1628,6 +1661,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { *withdraw_authority, *custodian, *sign_only, + *dump_transaction_message, blockhash_query, nonce_account.as_ref(), *nonce_authority, @@ -1787,6 +1821,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { to, from, sign_only, + dump_transaction_message, no_wait, ref blockhash_query, ref nonce_account, @@ -1801,6 +1836,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { to, *from, *sign_only, + *dump_transaction_message, *no_wait, blockhash_query, nonce_account.as_ref(), @@ -2612,6 +2648,7 @@ mod tests { }, amount: SpendAmount::Some(30), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2631,6 +2668,7 @@ mod tests { withdraw_authority: 0, custodian: None, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2645,6 +2683,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -2659,6 +2698,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -2679,6 +2719,7 @@ mod tests { source_stake_account_pubkey, stake_authority: 1, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -2866,6 +2907,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, @@ -2890,6 +2932,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, @@ -2918,6 +2961,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: true, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, @@ -2950,6 +2994,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: true, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, @@ -2987,6 +3032,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, @@ -3028,6 +3074,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_address), @@ -3067,6 +3114,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, diff --git a/cli/src/stake.rs b/cli/src/stake.rs index d805231274..de71f3c87f 100644 --- a/cli/src/stake.rs +++ b/cli/src/stake.rs @@ -19,8 +19,8 @@ use solana_clap_utils::{ ArgConstant, }; use solana_cli_output::{ - return_signers, CliEpochReward, CliStakeHistory, CliStakeHistoryEntry, CliStakeState, - CliStakeType, + return_signers_with_config, CliEpochReward, CliStakeHistory, CliStakeHistoryEntry, + CliStakeState, CliStakeType, ReturnSignersConfig, }; use solana_client::{ blockhash_query::BlockhashQuery, @@ -441,6 +441,7 @@ pub fn parse_stake_create_account( let withdrawer = pubkey_of_signer(matches, WITHDRAW_AUTHORITY_ARG.name, wallet_manager)?; let amount = SpendAmount::new_from_matches(matches, "amount"); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of_signer(matches, NONCE_ARG.name, wallet_manager)?; let (nonce_authority, nonce_authority_pubkey) = @@ -470,6 +471,7 @@ pub fn parse_stake_create_account( }, amount, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -491,6 +493,7 @@ pub fn parse_stake_delegate_stake( pubkey_of_signer(matches, "vote_account_pubkey", wallet_manager)?.unwrap(); let force = matches.is_present("force"); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of(matches, NONCE_ARG.name); let (stake_authority, stake_authority_pubkey) = @@ -513,6 +516,7 @@ pub fn parse_stake_delegate_stake( stake_authority: signer_info.index_of(stake_authority_pubkey).unwrap(), force, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -565,6 +569,7 @@ pub fn parse_stake_authorize( bulk_signers.push(authority); }; let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of(matches, NONCE_ARG.name); let (nonce_authority, nonce_authority_pubkey) = @@ -600,6 +605,7 @@ pub fn parse_stake_authorize( stake_account_pubkey, new_authorizations, sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -623,6 +629,7 @@ pub fn parse_split_stake( let seed = matches.value_of("seed").map(|s| s.to_string()); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of(matches, NONCE_ARG.name); let (stake_authority, stake_authority_pubkey) = @@ -643,6 +650,7 @@ pub fn parse_split_stake( stake_account_pubkey, stake_authority: signer_info.index_of(stake_authority_pubkey).unwrap(), sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -666,6 +674,7 @@ pub fn parse_merge_stake( let source_stake_account_pubkey = pubkey_of(matches, "source_stake_account_pubkey").unwrap(); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of(matches, NONCE_ARG.name); let (stake_authority, stake_authority_pubkey) = @@ -687,6 +696,7 @@ pub fn parse_merge_stake( source_stake_account_pubkey, stake_authority: signer_info.index_of(stake_authority_pubkey).unwrap(), sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -704,6 +714,7 @@ pub fn parse_stake_deactivate_stake( let stake_account_pubkey = pubkey_of_signer(matches, "stake_account_pubkey", wallet_manager)?.unwrap(); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of(matches, NONCE_ARG.name); let (stake_authority, stake_authority_pubkey) = @@ -724,6 +735,7 @@ pub fn parse_stake_deactivate_stake( stake_account_pubkey, stake_authority: signer_info.index_of(stake_authority_pubkey).unwrap(), sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -744,6 +756,7 @@ pub fn parse_stake_withdraw_stake( pubkey_of_signer(matches, "destination_account_pubkey", wallet_manager)?.unwrap(); let lamports = lamports_of_sol(matches, "amount").unwrap(); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of(matches, NONCE_ARG.name); let (withdraw_authority, withdraw_authority_pubkey) = @@ -770,6 +783,7 @@ pub fn parse_stake_withdraw_stake( lamports, withdraw_authority: signer_info.index_of(withdraw_authority_pubkey).unwrap(), sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -792,6 +806,7 @@ pub fn parse_stake_set_lockup( let new_custodian = pubkey_of_signer(matches, "new_custodian", wallet_manager)?; let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let dump_transaction_message = matches.is_present(DUMP_TRANSACTION_MESSAGE.name); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of(matches, NONCE_ARG.name); @@ -817,6 +832,7 @@ pub fn parse_stake_set_lockup( }, custodian: signer_info.index_of(custodian_pubkey).unwrap(), sign_only, + dump_transaction_message, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -861,6 +877,7 @@ pub fn process_create_stake_account( lockup: &Lockup, amount: SpendAmount, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option<&Pubkey>, nonce_authority: SignerIndex, @@ -970,7 +987,13 @@ pub fn process_create_stake_account( let mut tx = Transaction::new_unsigned(message); if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx); @@ -986,6 +1009,7 @@ pub fn process_stake_authorize( new_authorizations: &[(StakeAuthorize, Pubkey, SignerIndex)], custodian: Option, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -1028,7 +1052,13 @@ pub fn process_stake_authorize( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; if let Some(nonce_account) = &nonce_account { @@ -1058,6 +1088,7 @@ pub fn process_deactivate_stake_account( stake_account_pubkey: &Pubkey, stake_authority: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -1087,7 +1118,13 @@ pub fn process_deactivate_stake_account( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; if let Some(nonce_account) = &nonce_account { @@ -1120,6 +1157,7 @@ pub fn process_withdraw_stake( withdraw_authority: SignerIndex, custodian: Option, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option<&Pubkey>, nonce_authority: SignerIndex, @@ -1155,7 +1193,13 @@ pub fn process_withdraw_stake( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; if let Some(nonce_account) = &nonce_account { @@ -1185,6 +1229,7 @@ pub fn process_split_stake( stake_account_pubkey: &Pubkey, stake_authority: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -1294,7 +1339,13 @@ pub fn process_split_stake( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; if let Some(nonce_account) = &nonce_account { @@ -1325,6 +1376,7 @@ pub fn process_merge_stake( source_stake_account_pubkey: &Pubkey, stake_authority: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -1392,7 +1444,13 @@ pub fn process_merge_stake( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; if let Some(nonce_account) = &nonce_account { @@ -1427,6 +1485,7 @@ pub fn process_stake_set_lockup( lockup: &mut LockupArgs, custodian: SignerIndex, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -1458,7 +1517,13 @@ pub fn process_stake_set_lockup( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; if let Some(nonce_account) = &nonce_account { @@ -1772,6 +1837,7 @@ pub fn process_delegate_stake( stake_authority: SignerIndex, force: bool, sign_only: bool, + dump_transaction_message: bool, blockhash_query: &BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -1856,7 +1922,13 @@ pub fn process_delegate_stake( if sign_only { tx.try_partial_sign(&config.signers, recent_blockhash)?; - return_signers(&tx, &config.output_format) + return_signers_with_config( + &tx, + &config.output_format, + &ReturnSignersConfig { + dump_transaction_message, + }, + ) } else { tx.try_sign(&config.signers, recent_blockhash)?; if let Some(nonce_account) = &nonce_account { @@ -1953,6 +2025,7 @@ mod tests { (StakeAuthorize::Withdrawer, new_withdraw_authority, 0,), ], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -1988,6 +2061,7 @@ mod tests { (StakeAuthorize::Withdrawer, new_withdraw_authority, 2,), ], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2027,6 +2101,7 @@ mod tests { (StakeAuthorize::Withdrawer, new_withdraw_authority, 1,), ], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2055,6 +2130,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, new_stake_authority, 0,),], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2080,6 +2156,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, new_stake_authority, 1,),], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2111,6 +2188,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, new_stake_authority, 1,),], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2143,6 +2221,7 @@ mod tests { 0, ),], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2172,6 +2251,7 @@ mod tests { 1, ),], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2207,6 +2287,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, stake_account_pubkey, 0)], sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -2241,6 +2322,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, stake_account_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -2288,6 +2370,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, stake_account_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account), blockhash @@ -2321,6 +2404,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, stake_account_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -2359,6 +2443,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, stake_account_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account_pubkey), blockhash @@ -2396,6 +2481,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, stake_account_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2431,6 +2517,7 @@ mod tests { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, stake_account_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -2481,6 +2568,7 @@ mod tests { }, amount: SpendAmount::Some(50_000_000_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2518,6 +2606,7 @@ mod tests { lockup: Lockup::default(), amount: SpendAmount::Some(50_000_000_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2571,6 +2660,7 @@ mod tests { lockup: Lockup::default(), amount: SpendAmount::Some(50_000_000_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account), nonce_hash @@ -2605,6 +2695,7 @@ mod tests { stake_authority: 0, force: false, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -2634,6 +2725,7 @@ mod tests { stake_authority: 1, force: false, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -2665,6 +2757,7 @@ mod tests { stake_authority: 0, force: true, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -2694,6 +2787,7 @@ mod tests { stake_authority: 0, force: false, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -2724,6 +2818,7 @@ mod tests { stake_authority: 0, force: false, sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -2758,6 +2853,7 @@ mod tests { stake_authority: 0, force: false, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -2804,6 +2900,7 @@ mod tests { stake_authority: 0, force: false, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account), blockhash @@ -2841,6 +2938,7 @@ mod tests { stake_authority: 0, force: false, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2872,6 +2970,7 @@ mod tests { withdraw_authority: 0, custodian: None, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2902,6 +3001,7 @@ mod tests { withdraw_authority: 1, custodian: None, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2937,6 +3037,7 @@ mod tests { withdraw_authority: 0, custodian: Some(1), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -2980,6 +3081,7 @@ mod tests { withdraw_authority: 0, custodian: None, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account), nonce_hash @@ -3010,6 +3112,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -3034,6 +3137,7 @@ mod tests { stake_account_pubkey, stake_authority: 1, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -3065,6 +3169,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -3092,6 +3197,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -3123,6 +3229,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -3166,6 +3273,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account), blockhash @@ -3197,6 +3305,7 @@ mod tests { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -3231,6 +3340,7 @@ mod tests { stake_account_pubkey: stake_account_keypair.pubkey(), stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -3292,6 +3402,7 @@ mod tests { stake_account_pubkey: stake_account_keypair.pubkey(), stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account), nonce_hash @@ -3333,6 +3444,7 @@ mod tests { source_stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, diff --git a/cli/tests/nonce.rs b/cli/tests/nonce.rs index 6c2722e305..6e51de4059 100644 --- a/cli/tests/nonce.rs +++ b/cli/tests/nonce.rs @@ -293,6 +293,7 @@ fn test_create_account_with_seed() { to: to_address, from: 0, sign_only: true, + dump_transaction_message: true, no_wait: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_address), @@ -316,6 +317,7 @@ fn test_create_account_with_seed() { to: to_address, from: 0, sign_only: false, + dump_transaction_message: true, no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_address), diff --git a/cli/tests/stake.rs b/cli/tests/stake.rs index 54f20c1363..8cd64af535 100644 --- a/cli/tests/stake.rs +++ b/cli/tests/stake.rs @@ -70,6 +70,7 @@ fn test_stake_delegation_force() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -86,6 +87,7 @@ fn test_stake_delegation_force() { stake_authority: 0, force: false, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -100,6 +102,7 @@ fn test_stake_delegation_force() { stake_authority: 0, force: true, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -151,6 +154,7 @@ fn test_seed_stake_delegation_and_deactivation() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -166,6 +170,7 @@ fn test_seed_stake_delegation_and_deactivation() { stake_authority: 0, force: true, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -178,6 +183,7 @@ fn test_seed_stake_delegation_and_deactivation() { stake_account_pubkey: stake_address, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -224,6 +230,7 @@ fn test_stake_delegation_and_deactivation() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -240,6 +247,7 @@ fn test_stake_delegation_and_deactivation() { stake_authority: 0, force: true, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -252,6 +260,7 @@ fn test_stake_delegation_and_deactivation() { stake_account_pubkey: stake_keypair.pubkey(), stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -319,6 +328,7 @@ fn test_offline_stake_delegation_and_deactivation() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -335,6 +345,7 @@ fn test_offline_stake_delegation_and_deactivation() { stake_authority: 0, force: true, sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -354,6 +365,7 @@ fn test_offline_stake_delegation_and_deactivation() { stake_authority: 0, force: true, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, nonce_authority: 0, @@ -367,6 +379,7 @@ fn test_offline_stake_delegation_and_deactivation() { stake_account_pubkey: stake_keypair.pubkey(), stake_authority: 0, sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -383,6 +396,7 @@ fn test_offline_stake_delegation_and_deactivation() { stake_account_pubkey: stake_keypair.pubkey(), stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, nonce_authority: 0, @@ -431,6 +445,7 @@ fn test_nonced_stake_delegation_and_deactivation() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -468,6 +483,7 @@ fn test_nonced_stake_delegation_and_deactivation() { stake_authority: 0, force: true, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), nonce_hash, @@ -493,6 +509,7 @@ fn test_nonced_stake_delegation_and_deactivation() { stake_account_pubkey: stake_keypair.pubkey(), stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), nonce_hash, @@ -559,6 +576,7 @@ fn test_stake_authorize() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -575,6 +593,7 @@ fn test_stake_authorize() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, online_authority_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -603,6 +622,7 @@ fn test_stake_authorize() { (StakeAuthorize::Withdrawer, withdraw_authority_pubkey, 0), ], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -626,6 +646,7 @@ fn test_stake_authorize() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, offline_authority_pubkey, 1)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -649,6 +670,7 @@ fn test_stake_authorize() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, nonced_authority_pubkey, 0)], sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -665,6 +687,7 @@ fn test_stake_authorize() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, nonced_authority_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, nonce_authority: 0, @@ -712,6 +735,7 @@ fn test_stake_authorize() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, online_authority_pubkey, 1)], sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_account.pubkey()), nonce_authority: 0, @@ -729,6 +753,7 @@ fn test_stake_authorize() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, online_authority_pubkey, 1)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), sign_only.blockhash, @@ -817,6 +842,7 @@ fn test_stake_authorize_with_fee_payer() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -833,6 +859,7 @@ fn test_stake_authorize_with_fee_payer() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, offline_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -852,6 +879,7 @@ fn test_stake_authorize_with_fee_payer() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, payer_pubkey, 0)], sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -868,6 +896,7 @@ fn test_stake_authorize_with_fee_payer() { stake_account_pubkey, new_authorizations: vec![(StakeAuthorize::Staker, payer_pubkey, 0)], sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, nonce_authority: 0, @@ -936,6 +965,7 @@ fn test_stake_split() { lockup: Lockup::default(), amount: SpendAmount::Some(10 * minimum_stake_balance), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -982,6 +1012,7 @@ fn test_stake_split() { stake_account_pubkey, stake_authority: 0, sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_account.pubkey()), nonce_authority: 0, @@ -1000,6 +1031,7 @@ fn test_stake_split() { stake_account_pubkey, stake_authority: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), sign_only.blockhash, @@ -1085,6 +1117,7 @@ fn test_stake_set_lockup() { lockup, amount: SpendAmount::Some(10 * minimum_stake_balance), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -1110,6 +1143,7 @@ fn test_stake_set_lockup() { lockup, custodian: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -1143,6 +1177,7 @@ fn test_stake_set_lockup() { lockup, custodian: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -1161,6 +1196,7 @@ fn test_stake_set_lockup() { lockup, custodian: 1, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -1191,6 +1227,7 @@ fn test_stake_set_lockup() { lockup, custodian: 1, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::default(), nonce_account: None, nonce_authority: 0, @@ -1235,6 +1272,7 @@ fn test_stake_set_lockup() { lockup, custodian: 0, sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_account_pubkey), nonce_authority: 0, @@ -1251,6 +1289,7 @@ fn test_stake_set_lockup() { lockup, custodian: 0, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account_pubkey), sign_only.blockhash, @@ -1349,6 +1388,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_pubkey), nonce_authority: 0, @@ -1370,6 +1410,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_pubkey), sign_only.blockhash, @@ -1403,6 +1444,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw() { withdraw_authority: 0, custodian: None, sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_pubkey), nonce_authority: 0, @@ -1419,6 +1461,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw() { withdraw_authority: 0, custodian: None, sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_pubkey), sign_only.blockhash, @@ -1451,6 +1494,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: true, + dump_transaction_message: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_pubkey), nonce_authority: 0, @@ -1470,6 +1514,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw() { lockup: Lockup::default(), amount: SpendAmount::Some(50_000), sign_only: false, + dump_transaction_message: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_pubkey), sign_only.blockhash, diff --git a/cli/tests/transfer.rs b/cli/tests/transfer.rs index 09bf63ccc0..6184bf83ae 100644 --- a/cli/tests/transfer.rs +++ b/cli/tests/transfer.rs @@ -51,6 +51,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, @@ -69,6 +70,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, @@ -99,6 +101,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: true, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, @@ -118,6 +121,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, @@ -162,6 +166,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), @@ -213,6 +218,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: true, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_account.pubkey()), @@ -231,6 +237,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), @@ -299,6 +306,7 @@ fn test_transfer_multisession_signing() { to: to_pubkey, from: 1, sign_only: true, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, @@ -327,6 +335,7 @@ fn test_transfer_multisession_signing() { to: to_pubkey, from: 1, sign_only: true, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, @@ -352,6 +361,7 @@ fn test_transfer_multisession_signing() { to: to_pubkey, from: 1, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, @@ -399,6 +409,7 @@ fn test_transfer_all() { to: recipient_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, @@ -454,6 +465,7 @@ fn test_transfer_with_seed() { to: recipient_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, diff --git a/cli/tests/vote.rs b/cli/tests/vote.rs index 66bf0c1c19..8c1d82e18b 100644 --- a/cli/tests/vote.rs +++ b/cli/tests/vote.rs @@ -71,6 +71,7 @@ fn test_vote_authorize_and_withdraw() { to: vote_account_pubkey, from: 0, sign_only: false, + dump_transaction_message: false, no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index d504208475..85442595d0 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -2909,6 +2909,7 @@ name = "solana-cli-output" version = "1.7.0" dependencies = [ "Inflector", + "base64 0.13.0", "chrono", "console 0.11.3", "humantime",