From 8f10e407ee99d4ab25d2a5fee9c3d9183e82cf57 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Wed, 30 Sep 2020 18:44:17 -0600 Subject: [PATCH] Add nonced-tx check to RpcClient (#12600) --- client/src/rpc_client.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/client/src/rpc_client.rs b/client/src/rpc_client.rs index 7fbef4798..dd78ef5b2 100644 --- a/client/src/rpc_client.rs +++ b/client/src/rpc_client.rs @@ -32,7 +32,7 @@ use solana_sdk::{ hash::Hash, pubkey::Pubkey, signature::Signature, - transaction::{self, Transaction}, + transaction::{self, uses_durable_nonce, Transaction}, }; use solana_transaction_status::{ EncodedConfirmedBlock, EncodedConfirmedTransaction, TransactionStatus, UiTransactionEncoding, @@ -415,7 +415,13 @@ impl RpcClient { transaction: &Transaction, ) -> ClientResult { 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 = self.get_signature_status(&signature)?; if status.is_none() { @@ -1117,7 +1123,13 @@ impl RpcClient { "[{}/{}] Finalizing transaction {}", 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, status) = loop { // Get recent commitment in order to count confirmations for successful transactions