solana-tokens: enable confirmation of many transactions (#13876)
* Update comment * Chunk signature status checks to handle distributions greater than 256 tx
This commit is contained in:
parent
4a4a4d8e49
commit
c59e088142
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue