Add nonced-tx check to RpcClient (#12600)

This commit is contained in:
Tyera Eulberg
2020-09-30 18:44:17 -06:00
committed by GitHub
parent 1866521df6
commit 8f10e407ee

View File

@ -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