From c59e088142adf77706f4a9c584080b06b4d4b859 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Mon, 30 Nov 2020 19:55:18 -0700 Subject: [PATCH] solana-tokens: enable confirmation of many transactions (#13876) * Update comment * Chunk signature status checks to handle distributions greater than 256 tx --- tokens/src/commands.rs | 17 +++++++++++++---- tokens/src/spl_token.rs | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/tokens/src/commands.rs b/tokens/src/commands.rs index a45ff59a9a..a1a7621149 100644 --- a/tokens/src/commands.rs +++ b/tokens/src/commands.rs @@ -18,6 +18,7 @@ use solana_client::{ client_error::{ClientError, Result as ClientResult}, rpc_client::RpcClient, rpc_config::RpcSendTransactionConfig, + rpc_request::MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS, }; use solana_sdk::{ commitment_config::CommitmentConfig, @@ -566,15 +567,23 @@ fn update_finalized_transactions( .map(|(tx, _slot)| tx.signatures[0]) .filter(|sig| *sig != Signature::default()) // Filter out dry-run signatures .collect(); - let transaction_statuses = client - .get_signature_statuses(&unconfirmed_signatures)? - .value; + let mut statuses = vec![]; + for unconfirmed_signatures_chunk in + unconfirmed_signatures.chunks(MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS - 1) + { + statuses.extend( + client + .get_signature_statuses(&unconfirmed_signatures_chunk)? + .value + .into_iter(), + ); + } let root_slot = client.get_slot()?; let mut confirmations = None; for ((transaction, last_valid_slot), opt_transaction_status) in unconfirmed_transactions .into_iter() - .zip(transaction_statuses.into_iter()) + .zip(statuses.into_iter()) { match db::update_finalized_transaction( db, diff --git a/tokens/src/spl_token.rs b/tokens/src/spl_token.rs index faa2070d8c..bc9aa2a45f 100644 --- a/tokens/src/spl_token.rs +++ b/tokens/src/spl_token.rs @@ -186,5 +186,5 @@ mod tests { // async fn test_process_spl_token_transfer_amount_allocations() // async fn test_check_spl_token_balances() // - // TODO: link to v1.4 tests + // https://github.com/solana-labs/solana/blob/5511d52c6284013a24ced10966d11d8f4585799e/tokens/src/spl_token.rs#L490-L685 }