cli: Customize max sign attempts for deploy and write-buffer (#526)
* cli: Customize max sign attempts for deploy and write-buffer * Update changelog * Improve help message * Fixup line break
This commit is contained in:
parent
798cb561e1
commit
2643ae85c3
|
@ -18,6 +18,7 @@ Release channels have their own copy of this changelog:
|
||||||
* `central-scheduler` as default option for `--block-production-method` (#34891)
|
* `central-scheduler` as default option for `--block-production-method` (#34891)
|
||||||
* `solana-rpc-client-api`: `RpcFilterError` depends on `base64` version 0.22, so users may need to upgrade to `base64` version 0.22
|
* `solana-rpc-client-api`: `RpcFilterError` depends on `base64` version 0.22, so users may need to upgrade to `base64` version 0.22
|
||||||
* Changed default value for `--health-check-slot-distance` from 150 to 128
|
* Changed default value for `--health-check-slot-distance` from 150 to 128
|
||||||
|
* CLI: Can specify `--with-compute-unit-price` and `--max-sign-attempts` during program deployment
|
||||||
|
|
||||||
## [1.18.0]
|
## [1.18.0]
|
||||||
* Changes
|
* Changes
|
||||||
|
@ -39,6 +40,7 @@ Release channels have their own copy of this changelog:
|
||||||
double the size. Program accounts must be extended with `solana program extend`
|
double the size. Program accounts must be extended with `solana program extend`
|
||||||
before an upgrade if they need to accommodate larger programs.
|
before an upgrade if they need to accommodate larger programs.
|
||||||
* Interface for `gossip_service::get_client()` has changed. `gossip_service::get_multi_client()` has been removed.
|
* Interface for `gossip_service::get_client()` has changed. `gossip_service::get_multi_client()` has been removed.
|
||||||
|
* CLI: Can specify `--with-compute-unit-price` and `--max-sign-attempts` during program deployment
|
||||||
* Upgrade Notes
|
* Upgrade Notes
|
||||||
* `solana-program` and `solana-sdk` default to support for Borsh v1, with
|
* `solana-program` and `solana-sdk` default to support for Borsh v1, with
|
||||||
limited backward compatibility for v0.10 and v0.9. Please upgrade to Borsh v1.
|
limited backward compatibility for v0.10 and v0.9. Please upgrade to Borsh v1.
|
||||||
|
|
|
@ -98,6 +98,7 @@ pub enum ProgramCliCommand {
|
||||||
allow_excessive_balance: bool,
|
allow_excessive_balance: bool,
|
||||||
skip_fee_check: bool,
|
skip_fee_check: bool,
|
||||||
compute_unit_price: Option<u64>,
|
compute_unit_price: Option<u64>,
|
||||||
|
max_sign_attempts: usize,
|
||||||
},
|
},
|
||||||
Upgrade {
|
Upgrade {
|
||||||
fee_payer_signer_index: SignerIndex,
|
fee_payer_signer_index: SignerIndex,
|
||||||
|
@ -117,6 +118,7 @@ pub enum ProgramCliCommand {
|
||||||
max_len: Option<usize>,
|
max_len: Option<usize>,
|
||||||
skip_fee_check: bool,
|
skip_fee_check: bool,
|
||||||
compute_unit_price: Option<u64>,
|
compute_unit_price: Option<u64>,
|
||||||
|
max_sign_attempts: usize,
|
||||||
},
|
},
|
||||||
SetBufferAuthority {
|
SetBufferAuthority {
|
||||||
buffer_pubkey: Pubkey,
|
buffer_pubkey: Pubkey,
|
||||||
|
@ -246,6 +248,26 @@ impl ProgramSubCommands for App<'_, '_> {
|
||||||
holds a large balance of SOL",
|
holds a large balance of SOL",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("max_sign_attempts")
|
||||||
|
.long("max-sign-attempts")
|
||||||
|
.takes_value(true)
|
||||||
|
.validator(is_parsable::<u64>)
|
||||||
|
.default_value("5")
|
||||||
|
.help(
|
||||||
|
"Maximum number of attempts to sign or resign transactions \
|
||||||
|
after blockhash expiration. \
|
||||||
|
If any transactions sent during the program deploy are still \
|
||||||
|
unconfirmed after the initially chosen recent blockhash \
|
||||||
|
expires, those transactions will be resigned with a new \
|
||||||
|
recent blockhash and resent. Use this setting to adjust \
|
||||||
|
the maximum number of transaction signing iterations. Each \
|
||||||
|
blockhash is valid for about 60 seconds, which means using \
|
||||||
|
the default value of 5 will lead to sending transactions \
|
||||||
|
for at least 5 minutes or until all transactions are confirmed,\
|
||||||
|
whichever comes first.",
|
||||||
|
),
|
||||||
|
)
|
||||||
.arg(compute_unit_price_arg()),
|
.arg(compute_unit_price_arg()),
|
||||||
)
|
)
|
||||||
.subcommand(
|
.subcommand(
|
||||||
|
@ -319,6 +341,26 @@ impl ProgramSubCommands for App<'_, '_> {
|
||||||
[default: the length of the original deployed program]",
|
[default: the length of the original deployed program]",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("max_sign_attempts")
|
||||||
|
.long("max-sign-attempts")
|
||||||
|
.takes_value(true)
|
||||||
|
.validator(is_parsable::<u64>)
|
||||||
|
.default_value("5")
|
||||||
|
.help(
|
||||||
|
"Maximum number of attempts to sign or resign transactions \
|
||||||
|
after blockhash expiration. \
|
||||||
|
If any transactions sent during the program deploy are still \
|
||||||
|
unconfirmed after the initially chosen recent blockhash \
|
||||||
|
expires, those transactions will be resigned with a new \
|
||||||
|
recent blockhash and resent. Use this setting to adjust \
|
||||||
|
the maximum number of transaction signing iterations. Each \
|
||||||
|
blockhash is valid for about 60 seconds, which means using \
|
||||||
|
the default value of 5 will lead to sending transactions \
|
||||||
|
for at least 5 minutes or until all transactions are confirmed,\
|
||||||
|
whichever comes first.",
|
||||||
|
),
|
||||||
|
)
|
||||||
.arg(compute_unit_price_arg()),
|
.arg(compute_unit_price_arg()),
|
||||||
)
|
)
|
||||||
.subcommand(
|
.subcommand(
|
||||||
|
@ -613,6 +655,7 @@ pub fn parse_program_subcommand(
|
||||||
default_signer.generate_unique_signers(bulk_signers, matches, wallet_manager)?;
|
default_signer.generate_unique_signers(bulk_signers, matches, wallet_manager)?;
|
||||||
|
|
||||||
let compute_unit_price = value_of(matches, "compute_unit_price");
|
let compute_unit_price = value_of(matches, "compute_unit_price");
|
||||||
|
let max_sign_attempts = value_of(matches, "max_sign_attempts").unwrap();
|
||||||
|
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Program(ProgramCliCommand::Deploy {
|
command: CliCommand::Program(ProgramCliCommand::Deploy {
|
||||||
|
@ -630,6 +673,7 @@ pub fn parse_program_subcommand(
|
||||||
allow_excessive_balance: matches.is_present("allow_excessive_balance"),
|
allow_excessive_balance: matches.is_present("allow_excessive_balance"),
|
||||||
skip_fee_check,
|
skip_fee_check,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts,
|
||||||
}),
|
}),
|
||||||
signers: signer_info.signers,
|
signers: signer_info.signers,
|
||||||
}
|
}
|
||||||
|
@ -702,6 +746,7 @@ pub fn parse_program_subcommand(
|
||||||
default_signer.generate_unique_signers(bulk_signers, matches, wallet_manager)?;
|
default_signer.generate_unique_signers(bulk_signers, matches, wallet_manager)?;
|
||||||
|
|
||||||
let compute_unit_price = value_of(matches, "compute_unit_price");
|
let compute_unit_price = value_of(matches, "compute_unit_price");
|
||||||
|
let max_sign_attempts = value_of(matches, "max_sign_attempts").unwrap();
|
||||||
|
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Program(ProgramCliCommand::WriteBuffer {
|
command: CliCommand::Program(ProgramCliCommand::WriteBuffer {
|
||||||
|
@ -715,6 +760,7 @@ pub fn parse_program_subcommand(
|
||||||
max_len,
|
max_len,
|
||||||
skip_fee_check,
|
skip_fee_check,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts,
|
||||||
}),
|
}),
|
||||||
signers: signer_info.signers,
|
signers: signer_info.signers,
|
||||||
}
|
}
|
||||||
|
@ -917,6 +963,7 @@ pub fn process_program_subcommand(
|
||||||
allow_excessive_balance,
|
allow_excessive_balance,
|
||||||
skip_fee_check,
|
skip_fee_check,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts,
|
||||||
} => process_program_deploy(
|
} => process_program_deploy(
|
||||||
rpc_client,
|
rpc_client,
|
||||||
config,
|
config,
|
||||||
|
@ -932,6 +979,7 @@ pub fn process_program_subcommand(
|
||||||
*allow_excessive_balance,
|
*allow_excessive_balance,
|
||||||
*skip_fee_check,
|
*skip_fee_check,
|
||||||
*compute_unit_price,
|
*compute_unit_price,
|
||||||
|
*max_sign_attempts,
|
||||||
),
|
),
|
||||||
ProgramCliCommand::Upgrade {
|
ProgramCliCommand::Upgrade {
|
||||||
fee_payer_signer_index,
|
fee_payer_signer_index,
|
||||||
|
@ -961,6 +1009,7 @@ pub fn process_program_subcommand(
|
||||||
max_len,
|
max_len,
|
||||||
skip_fee_check,
|
skip_fee_check,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts,
|
||||||
} => process_write_buffer(
|
} => process_write_buffer(
|
||||||
rpc_client,
|
rpc_client,
|
||||||
config,
|
config,
|
||||||
|
@ -972,6 +1021,7 @@ pub fn process_program_subcommand(
|
||||||
*max_len,
|
*max_len,
|
||||||
*skip_fee_check,
|
*skip_fee_check,
|
||||||
*compute_unit_price,
|
*compute_unit_price,
|
||||||
|
*max_sign_attempts,
|
||||||
),
|
),
|
||||||
ProgramCliCommand::SetBufferAuthority {
|
ProgramCliCommand::SetBufferAuthority {
|
||||||
buffer_pubkey,
|
buffer_pubkey,
|
||||||
|
@ -1104,6 +1154,7 @@ fn process_program_deploy(
|
||||||
allow_excessive_balance: bool,
|
allow_excessive_balance: bool,
|
||||||
skip_fee_check: bool,
|
skip_fee_check: bool,
|
||||||
compute_unit_price: Option<u64>,
|
compute_unit_price: Option<u64>,
|
||||||
|
max_sign_attempts: usize,
|
||||||
) -> ProcessResult {
|
) -> ProcessResult {
|
||||||
let fee_payer_signer = config.signers[fee_payer_signer_index];
|
let fee_payer_signer = config.signers[fee_payer_signer_index];
|
||||||
let upgrade_authority_signer = config.signers[upgrade_authority_signer_index];
|
let upgrade_authority_signer = config.signers[upgrade_authority_signer_index];
|
||||||
|
@ -1244,6 +1295,7 @@ fn process_program_deploy(
|
||||||
allow_excessive_balance,
|
allow_excessive_balance,
|
||||||
skip_fee_check,
|
skip_fee_check,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
do_process_program_upgrade(
|
do_process_program_upgrade(
|
||||||
|
@ -1259,6 +1311,7 @@ fn process_program_deploy(
|
||||||
buffer_signer,
|
buffer_signer,
|
||||||
skip_fee_check,
|
skip_fee_check,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
if result.is_ok() && is_final {
|
if result.is_ok() && is_final {
|
||||||
|
@ -1408,6 +1461,7 @@ fn process_write_buffer(
|
||||||
max_len: Option<usize>,
|
max_len: Option<usize>,
|
||||||
skip_fee_check: bool,
|
skip_fee_check: bool,
|
||||||
compute_unit_price: Option<u64>,
|
compute_unit_price: Option<u64>,
|
||||||
|
max_sign_attempts: usize,
|
||||||
) -> ProcessResult {
|
) -> ProcessResult {
|
||||||
let fee_payer_signer = config.signers[fee_payer_signer_index];
|
let fee_payer_signer = config.signers[fee_payer_signer_index];
|
||||||
let buffer_authority = config.signers[buffer_authority_signer_index];
|
let buffer_authority = config.signers[buffer_authority_signer_index];
|
||||||
|
@ -1474,6 +1528,7 @@ fn process_write_buffer(
|
||||||
true,
|
true,
|
||||||
skip_fee_check,
|
skip_fee_check,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts,
|
||||||
);
|
);
|
||||||
if result.is_err() && buffer_signer_index.is_none() && buffer_signer.is_some() {
|
if result.is_err() && buffer_signer_index.is_none() && buffer_signer.is_some() {
|
||||||
report_ephemeral_mnemonic(words, mnemonic);
|
report_ephemeral_mnemonic(words, mnemonic);
|
||||||
|
@ -2228,6 +2283,7 @@ fn do_process_program_write_and_deploy(
|
||||||
allow_excessive_balance: bool,
|
allow_excessive_balance: bool,
|
||||||
skip_fee_check: bool,
|
skip_fee_check: bool,
|
||||||
compute_unit_price: Option<u64>,
|
compute_unit_price: Option<u64>,
|
||||||
|
max_sign_attempts: usize,
|
||||||
) -> ProcessResult {
|
) -> ProcessResult {
|
||||||
let blockhash = rpc_client.get_latest_blockhash()?;
|
let blockhash = rpc_client.get_latest_blockhash()?;
|
||||||
|
|
||||||
|
@ -2366,6 +2422,7 @@ fn do_process_program_write_and_deploy(
|
||||||
buffer_signer,
|
buffer_signer,
|
||||||
Some(buffer_authority_signer),
|
Some(buffer_authority_signer),
|
||||||
program_signers,
|
program_signers,
|
||||||
|
max_sign_attempts,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
if let Some(program_signers) = program_signers {
|
if let Some(program_signers) = program_signers {
|
||||||
|
@ -2396,6 +2453,7 @@ fn do_process_program_upgrade(
|
||||||
buffer_signer: Option<&dyn Signer>,
|
buffer_signer: Option<&dyn Signer>,
|
||||||
skip_fee_check: bool,
|
skip_fee_check: bool,
|
||||||
compute_unit_price: Option<u64>,
|
compute_unit_price: Option<u64>,
|
||||||
|
max_sign_attempts: usize,
|
||||||
) -> ProcessResult {
|
) -> ProcessResult {
|
||||||
let blockhash = rpc_client.get_latest_blockhash()?;
|
let blockhash = rpc_client.get_latest_blockhash()?;
|
||||||
|
|
||||||
|
@ -2513,6 +2571,7 @@ fn do_process_program_upgrade(
|
||||||
buffer_signer,
|
buffer_signer,
|
||||||
Some(upgrade_authority),
|
Some(upgrade_authority),
|
||||||
Some(&[upgrade_authority]),
|
Some(&[upgrade_authority]),
|
||||||
|
max_sign_attempts,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let program_id = CliProgramId {
|
let program_id = CliProgramId {
|
||||||
|
@ -2696,6 +2755,7 @@ fn simulate_and_update_compute_unit_limit(
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::too_many_arguments)]
|
||||||
fn send_deploy_messages(
|
fn send_deploy_messages(
|
||||||
rpc_client: Arc<RpcClient>,
|
rpc_client: Arc<RpcClient>,
|
||||||
config: &CliConfig,
|
config: &CliConfig,
|
||||||
|
@ -2706,6 +2766,7 @@ fn send_deploy_messages(
|
||||||
initial_signer: Option<&dyn Signer>,
|
initial_signer: Option<&dyn Signer>,
|
||||||
write_signer: Option<&dyn Signer>,
|
write_signer: Option<&dyn Signer>,
|
||||||
final_signers: Option<&[&dyn Signer]>,
|
final_signers: Option<&[&dyn Signer]>,
|
||||||
|
max_sign_attempts: usize,
|
||||||
) -> Result<Option<Signature>, Box<dyn std::error::Error>> {
|
) -> Result<Option<Signature>, Box<dyn std::error::Error>> {
|
||||||
if let Some(message) = initial_message {
|
if let Some(message) = initial_message {
|
||||||
if let Some(initial_signer) = initial_signer {
|
if let Some(initial_signer) = initial_signer {
|
||||||
|
@ -2793,7 +2854,7 @@ fn send_deploy_messages(
|
||||||
&write_messages,
|
&write_messages,
|
||||||
&[fee_payer_signer, write_signer],
|
&[fee_payer_signer, write_signer],
|
||||||
SendAndConfirmConfig {
|
SendAndConfirmConfig {
|
||||||
resign_txs_count: Some(5),
|
resign_txs_count: Some(max_sign_attempts),
|
||||||
with_spinner: true,
|
with_spinner: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -2942,7 +3003,8 @@ mod tests {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
}
|
}
|
||||||
|
@ -2971,7 +3033,8 @@ mod tests {
|
||||||
max_len: Some(42),
|
max_len: Some(42),
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
}
|
}
|
||||||
|
@ -3002,7 +3065,8 @@ mod tests {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![
|
signers: vec![
|
||||||
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
||||||
|
@ -3035,7 +3099,8 @@ mod tests {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
}
|
}
|
||||||
|
@ -3067,7 +3132,8 @@ mod tests {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![
|
signers: vec![
|
||||||
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
||||||
|
@ -3102,7 +3168,8 @@ mod tests {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![
|
signers: vec![
|
||||||
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
||||||
|
@ -3133,7 +3200,38 @@ mod tests {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
|
}),
|
||||||
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
let test_command = test_commands.clone().get_matches_from(vec![
|
||||||
|
"test",
|
||||||
|
"program",
|
||||||
|
"deploy",
|
||||||
|
"/Users/test/program.so",
|
||||||
|
"--max-sign-attempts",
|
||||||
|
"1",
|
||||||
|
]);
|
||||||
|
assert_eq!(
|
||||||
|
parse_command(&test_command, &default_signer, &mut None).unwrap(),
|
||||||
|
CliCommandInfo {
|
||||||
|
command: CliCommand::Program(ProgramCliCommand::Deploy {
|
||||||
|
program_location: Some("/Users/test/program.so".to_string()),
|
||||||
|
fee_payer_signer_index: 0,
|
||||||
|
buffer_signer_index: None,
|
||||||
|
buffer_pubkey: None,
|
||||||
|
program_signer_index: None,
|
||||||
|
program_pubkey: None,
|
||||||
|
upgrade_authority_signer_index: 0,
|
||||||
|
is_final: false,
|
||||||
|
max_len: None,
|
||||||
|
allow_excessive_balance: false,
|
||||||
|
skip_fee_check: false,
|
||||||
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 1,
|
||||||
}),
|
}),
|
||||||
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
}
|
}
|
||||||
|
@ -3168,7 +3266,8 @@ mod tests {
|
||||||
buffer_authority_signer_index: 0,
|
buffer_authority_signer_index: 0,
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
}
|
}
|
||||||
|
@ -3194,7 +3293,8 @@ mod tests {
|
||||||
buffer_authority_signer_index: 0,
|
buffer_authority_signer_index: 0,
|
||||||
max_len: Some(42),
|
max_len: Some(42),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
}
|
}
|
||||||
|
@ -3223,7 +3323,8 @@ mod tests {
|
||||||
buffer_authority_signer_index: 0,
|
buffer_authority_signer_index: 0,
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![
|
signers: vec![
|
||||||
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
||||||
|
@ -3255,7 +3356,8 @@ mod tests {
|
||||||
buffer_authority_signer_index: 1,
|
buffer_authority_signer_index: 1,
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![
|
signers: vec![
|
||||||
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
||||||
|
@ -3292,7 +3394,8 @@ mod tests {
|
||||||
buffer_authority_signer_index: 2,
|
buffer_authority_signer_index: 2,
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![
|
signers: vec![
|
||||||
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
Box::new(read_keypair_file(&keypair_file).unwrap()),
|
||||||
|
@ -3301,6 +3404,33 @@ mod tests {
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// specify max sign attempts
|
||||||
|
let test_command = test_commands.clone().get_matches_from(vec![
|
||||||
|
"test",
|
||||||
|
"program",
|
||||||
|
"write-buffer",
|
||||||
|
"/Users/test/program.so",
|
||||||
|
"--max-sign-attempts",
|
||||||
|
"10",
|
||||||
|
]);
|
||||||
|
assert_eq!(
|
||||||
|
parse_command(&test_command, &default_signer, &mut None).unwrap(),
|
||||||
|
CliCommandInfo {
|
||||||
|
command: CliCommand::Program(ProgramCliCommand::WriteBuffer {
|
||||||
|
program_location: "/Users/test/program.so".to_string(),
|
||||||
|
fee_payer_signer_index: 0,
|
||||||
|
buffer_signer_index: None,
|
||||||
|
buffer_pubkey: None,
|
||||||
|
buffer_authority_signer_index: 0,
|
||||||
|
max_len: None,
|
||||||
|
skip_fee_check: false,
|
||||||
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 10,
|
||||||
|
}),
|
||||||
|
signers: vec![Box::new(read_keypair_file(&keypair_file).unwrap())],
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -3852,6 +3982,7 @@ mod tests {
|
||||||
allow_excessive_balance: false,
|
allow_excessive_balance: false,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
}),
|
}),
|
||||||
signers: vec![&default_keypair],
|
signers: vec![&default_keypair],
|
||||||
output_format: OutputFormat::JsonCompact,
|
output_format: OutputFormat::JsonCompact,
|
||||||
|
|
|
@ -98,6 +98,7 @@ fn test_cli_program_deploy_non_upgradeable() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
|
@ -145,6 +146,7 @@ fn test_cli_program_deploy_non_upgradeable() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
let account1 = rpc_client
|
let account1 = rpc_client
|
||||||
|
@ -201,6 +203,7 @@ fn test_cli_program_deploy_non_upgradeable() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
let err = process_command(&config).unwrap_err();
|
let err = process_command(&config).unwrap_err();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
@ -225,6 +228,7 @@ fn test_cli_program_deploy_non_upgradeable() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap_err();
|
process_command(&config).unwrap_err();
|
||||||
}
|
}
|
||||||
|
@ -287,6 +291,7 @@ fn test_cli_program_deploy_no_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
|
@ -315,6 +320,7 @@ fn test_cli_program_deploy_no_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap_err();
|
process_command(&config).unwrap_err();
|
||||||
}
|
}
|
||||||
|
@ -378,6 +384,7 @@ fn test_cli_program_deploy_with_authority() {
|
||||||
max_len: Some(max_len),
|
max_len: Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
|
@ -428,6 +435,7 @@ fn test_cli_program_deploy_with_authority() {
|
||||||
max_len: Some(max_len),
|
max_len: Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
||||||
|
@ -472,6 +480,7 @@ fn test_cli_program_deploy_with_authority() {
|
||||||
max_len: Some(max_len),
|
max_len: Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
let program_account = rpc_client.get_account(&program_pubkey).unwrap();
|
let program_account = rpc_client.get_account(&program_pubkey).unwrap();
|
||||||
|
@ -548,6 +557,7 @@ fn test_cli_program_deploy_with_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
let program_account = rpc_client.get_account(&program_pubkey).unwrap();
|
let program_account = rpc_client.get_account(&program_pubkey).unwrap();
|
||||||
|
@ -628,6 +638,7 @@ fn test_cli_program_deploy_with_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap_err();
|
process_command(&config).unwrap_err();
|
||||||
|
|
||||||
|
@ -646,6 +657,7 @@ fn test_cli_program_deploy_with_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
||||||
|
@ -751,6 +763,7 @@ fn test_cli_program_close_program() {
|
||||||
max_len: Some(max_len),
|
max_len: Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
|
@ -862,6 +875,7 @@ fn test_cli_program_extend_program() {
|
||||||
max_len: None, // Use None to check that it defaults to the max length
|
max_len: None, // Use None to check that it defaults to the max length
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
|
@ -910,6 +924,7 @@ fn test_cli_program_extend_program() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap_err();
|
process_command(&config).unwrap_err();
|
||||||
|
|
||||||
|
@ -943,6 +958,7 @@ fn test_cli_program_extend_program() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
}
|
}
|
||||||
|
@ -1008,6 +1024,7 @@ fn test_cli_program_write_buffer() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
|
@ -1045,6 +1062,7 @@ fn test_cli_program_write_buffer() {
|
||||||
max_len: Some(max_len),
|
max_len: Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
||||||
|
@ -1109,6 +1127,7 @@ fn test_cli_program_write_buffer() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
||||||
|
@ -1149,6 +1168,7 @@ fn test_cli_program_write_buffer() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
|
||||||
|
@ -1225,6 +1245,7 @@ fn test_cli_program_write_buffer() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
|
@ -1268,6 +1289,7 @@ fn test_cli_program_write_buffer() {
|
||||||
max_len: None, //Some(max_len),
|
max_len: None, //Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
config.signers = vec![&keypair, &buffer_keypair];
|
config.signers = vec![&keypair, &buffer_keypair];
|
||||||
|
@ -1284,6 +1306,7 @@ fn test_cli_program_write_buffer() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let error = process_command(&config).unwrap_err();
|
let error = process_command(&config).unwrap_err();
|
||||||
|
@ -1344,6 +1367,7 @@ fn test_cli_program_set_buffer_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
let buffer_account = rpc_client.get_account(&buffer_keypair.pubkey()).unwrap();
|
let buffer_account = rpc_client.get_account(&buffer_keypair.pubkey()).unwrap();
|
||||||
|
@ -1397,6 +1421,7 @@ fn test_cli_program_set_buffer_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
process_command(&config).unwrap_err();
|
process_command(&config).unwrap_err();
|
||||||
|
@ -1443,6 +1468,7 @@ fn test_cli_program_set_buffer_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
|
@ -1500,6 +1526,7 @@ fn test_cli_program_mismatch_buffer_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
let buffer_account = rpc_client.get_account(&buffer_keypair.pubkey()).unwrap();
|
let buffer_account = rpc_client.get_account(&buffer_keypair.pubkey()).unwrap();
|
||||||
|
@ -1525,6 +1552,7 @@ fn test_cli_program_mismatch_buffer_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap_err();
|
process_command(&config).unwrap_err();
|
||||||
|
|
||||||
|
@ -1543,6 +1571,7 @@ fn test_cli_program_mismatch_buffer_authority() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
}
|
}
|
||||||
|
@ -1627,6 +1656,7 @@ fn test_cli_program_deploy_with_offline_signing(use_offline_signer_as_fee_payer:
|
||||||
max_len: Some(max_program_data_len), // allows for larger program size with future upgrades
|
max_len: Some(max_program_data_len), // allows for larger program size with future upgrades
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
|
@ -1795,6 +1825,7 @@ fn test_cli_program_show() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
|
|
||||||
|
@ -1857,6 +1888,7 @@ fn test_cli_program_show() {
|
||||||
max_len: Some(max_len),
|
max_len: Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let min_slot = rpc_client.get_slot().unwrap();
|
let min_slot = rpc_client.get_slot().unwrap();
|
||||||
|
@ -1986,6 +2018,7 @@ fn test_cli_program_dump() {
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
|
|
||||||
|
@ -2030,6 +2063,7 @@ fn create_buffer_with_offline_authority<'a>(
|
||||||
max_len: None,
|
max_len: None,
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
process_command(config).unwrap();
|
process_command(config).unwrap();
|
||||||
let buffer_account = rpc_client.get_account(&buffer_signer.pubkey()).unwrap();
|
let buffer_account = rpc_client.get_account(&buffer_signer.pubkey()).unwrap();
|
||||||
|
@ -2125,6 +2159,7 @@ fn cli_program_deploy_with_args(compute_unit_price: Option<u64>) {
|
||||||
max_len: Some(max_len),
|
max_len: Some(max_len),
|
||||||
skip_fee_check: false,
|
skip_fee_check: false,
|
||||||
compute_unit_price,
|
compute_unit_price,
|
||||||
|
max_sign_attempts: 5,
|
||||||
});
|
});
|
||||||
config.output_format = OutputFormat::JsonCompact;
|
config.output_format = OutputFormat::JsonCompact;
|
||||||
let response = process_command(&config);
|
let response = process_command(&config);
|
||||||
|
|
|
@ -248,6 +248,7 @@ fn run_transactions_dos(
|
||||||
is_final: true,
|
is_final: true,
|
||||||
max_len: None,
|
max_len: None,
|
||||||
compute_unit_price: None,
|
compute_unit_price: None,
|
||||||
|
max_sign_attempts: 5,
|
||||||
skip_fee_check: true, // skip_fee_check
|
skip_fee_check: true, // skip_fee_check
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue