Update fee api to use blockhash (#21054)
This commit is contained in:
@ -340,7 +340,11 @@ fn build_messages(
|
||||
do_create_associated_token_account,
|
||||
);
|
||||
let fee_payer_pubkey = args.fee_payer.pubkey();
|
||||
let message = Message::new(&instructions, Some(&fee_payer_pubkey));
|
||||
let message = Message::new_with_blockhash(
|
||||
&instructions,
|
||||
Some(&fee_payer_pubkey),
|
||||
&client.get_latest_blockhash()?,
|
||||
);
|
||||
messages.push(message);
|
||||
stake_extras.push((new_stake_account_keypair, lockup_date));
|
||||
}
|
||||
@ -1209,14 +1213,15 @@ mod tests {
|
||||
use solana_test_validator::TestValidator;
|
||||
use solana_transaction_status::TransactionConfirmationStatus;
|
||||
|
||||
fn one_signer_message() -> Message {
|
||||
Message::new(
|
||||
fn one_signer_message(client: &RpcClient) -> Message {
|
||||
Message::new_with_blockhash(
|
||||
&[Instruction::new_with_bytes(
|
||||
Pubkey::new_unique(),
|
||||
&[],
|
||||
vec![AccountMeta::new(Pubkey::default(), true)],
|
||||
)],
|
||||
None,
|
||||
&client.get_latest_blockhash().unwrap(),
|
||||
)
|
||||
}
|
||||
|
||||
@ -1598,7 +1603,7 @@ mod tests {
|
||||
&sender_keypair_file,
|
||||
None,
|
||||
);
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args).unwrap();
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args).unwrap();
|
||||
|
||||
// Unfunded payer
|
||||
let unfunded_payer = Keypair::new();
|
||||
@ -1612,7 +1617,7 @@ mod tests {
|
||||
.into();
|
||||
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(
|
||||
@ -1651,7 +1656,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.into();
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(
|
||||
@ -1705,7 +1710,7 @@ mod tests {
|
||||
&sender_keypair_file,
|
||||
None,
|
||||
);
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args).unwrap();
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args).unwrap();
|
||||
|
||||
// Unfunded sender
|
||||
let unfunded_payer = Keypair::new();
|
||||
@ -1717,7 +1722,7 @@ mod tests {
|
||||
args.fee_payer = read_keypair_file(&sender_keypair_file).unwrap().into();
|
||||
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(sources, vec![FundingSource::SystemAccount].into());
|
||||
@ -1733,7 +1738,7 @@ mod tests {
|
||||
.into();
|
||||
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(sources, vec![FundingSource::FeePayer].into());
|
||||
@ -1821,7 +1826,7 @@ mod tests {
|
||||
&sender_keypair_file,
|
||||
Some(stake_args),
|
||||
);
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args).unwrap();
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args).unwrap();
|
||||
|
||||
// Underfunded stake-account
|
||||
let expensive_allocation_amount = 5000.0;
|
||||
@ -1831,7 +1836,7 @@ mod tests {
|
||||
lockup_date: "".to_string(),
|
||||
}];
|
||||
let err_result = check_payer_balances(
|
||||
&[one_signer_message()],
|
||||
&[one_signer_message(&client)],
|
||||
&expensive_allocations,
|
||||
&client,
|
||||
&args,
|
||||
@ -1859,7 +1864,7 @@ mod tests {
|
||||
.into();
|
||||
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(
|
||||
@ -1898,7 +1903,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.into();
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(
|
||||
@ -1959,7 +1964,7 @@ mod tests {
|
||||
&sender_keypair_file,
|
||||
Some(stake_args),
|
||||
);
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args).unwrap();
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args).unwrap();
|
||||
|
||||
// Unfunded sender
|
||||
let unfunded_payer = Keypair::new();
|
||||
@ -1971,7 +1976,7 @@ mod tests {
|
||||
args.fee_payer = read_keypair_file(&sender_keypair_file).unwrap().into();
|
||||
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(sources, vec![FundingSource::SystemAccount].into());
|
||||
@ -1987,7 +1992,7 @@ mod tests {
|
||||
.into();
|
||||
|
||||
let err_result =
|
||||
check_payer_balances(&[one_signer_message()], &allocations, &client, &args)
|
||||
check_payer_balances(&[one_signer_message(&client)], &allocations, &client, &args)
|
||||
.unwrap_err();
|
||||
if let Error::InsufficientFunds(sources, amount) = err_result {
|
||||
assert_eq!(sources, vec![FundingSource::FeePayer].into());
|
||||
|
Reference in New Issue
Block a user