Add nonced-tx check to RpcClient (#12600)
This commit is contained in:
@ -32,7 +32,7 @@ use solana_sdk::{
|
|||||||
hash::Hash,
|
hash::Hash,
|
||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
signature::Signature,
|
signature::Signature,
|
||||||
transaction::{self, Transaction},
|
transaction::{self, uses_durable_nonce, Transaction},
|
||||||
};
|
};
|
||||||
use solana_transaction_status::{
|
use solana_transaction_status::{
|
||||||
EncodedConfirmedBlock, EncodedConfirmedTransaction, TransactionStatus, UiTransactionEncoding,
|
EncodedConfirmedBlock, EncodedConfirmedTransaction, TransactionStatus, UiTransactionEncoding,
|
||||||
@ -415,7 +415,13 @@ impl RpcClient {
|
|||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
) -> ClientResult<Signature> {
|
) -> ClientResult<Signature> {
|
||||||
let signature = self.send_transaction(transaction)?;
|
let signature = self.send_transaction(transaction)?;
|
||||||
let recent_blockhash = transaction.message.recent_blockhash;
|
let recent_blockhash = if uses_durable_nonce(transaction).is_some() {
|
||||||
|
self.get_recent_blockhash_with_commitment(CommitmentConfig::recent())?
|
||||||
|
.value
|
||||||
|
.0
|
||||||
|
} else {
|
||||||
|
transaction.message.recent_blockhash
|
||||||
|
};
|
||||||
let status = loop {
|
let status = loop {
|
||||||
let status = self.get_signature_status(&signature)?;
|
let status = self.get_signature_status(&signature)?;
|
||||||
if status.is_none() {
|
if status.is_none() {
|
||||||
@ -1117,7 +1123,13 @@ impl RpcClient {
|
|||||||
"[{}/{}] Finalizing transaction {}",
|
"[{}/{}] Finalizing transaction {}",
|
||||||
confirmations, desired_confirmations, transaction.signatures[0],
|
confirmations, desired_confirmations, transaction.signatures[0],
|
||||||
));
|
));
|
||||||
let recent_blockhash = transaction.message.recent_blockhash;
|
let recent_blockhash = if uses_durable_nonce(transaction).is_some() {
|
||||||
|
self.get_recent_blockhash_with_commitment(CommitmentConfig::recent())?
|
||||||
|
.value
|
||||||
|
.0
|
||||||
|
} else {
|
||||||
|
transaction.message.recent_blockhash
|
||||||
|
};
|
||||||
let signature = self.send_transaction_with_config(transaction, config)?;
|
let signature = self.send_transaction_with_config(transaction, config)?;
|
||||||
let (signature, status) = loop {
|
let (signature, status) = loop {
|
||||||
// Get recent commitment in order to count confirmations for successful transactions
|
// Get recent commitment in order to count confirmations for successful transactions
|
||||||
|
Reference in New Issue
Block a user