Add validator flag to opt in to cpi and logs storage (#14922)
* Add validator flag to opt in to cpi and logs storage * Default TestValidator to opt-in; allow using in multinode-demo * No clone Co-authored-by: Carl Lin <carl@solana.com>
This commit is contained in:
@@ -2,7 +2,7 @@ use crossbeam_channel::{Receiver, RecvTimeoutError};
|
||||
use itertools::izip;
|
||||
use solana_ledger::{blockstore::Blockstore, blockstore_processor::TransactionStatusBatch};
|
||||
use solana_runtime::{
|
||||
bank::{Bank, NonceRollbackInfo},
|
||||
bank::{Bank, InnerInstructionsList, NonceRollbackInfo, TransactionLogMessages},
|
||||
transaction_utils::OrderedIterator,
|
||||
};
|
||||
use solana_transaction_status::{InnerInstructions, TransactionStatusMeta};
|
||||
@@ -60,6 +60,18 @@ impl TransactionStatusService {
|
||||
} = write_transaction_status_receiver.recv_timeout(Duration::from_secs(1))?;
|
||||
|
||||
let slot = bank.slot();
|
||||
let inner_instructions_iter: Box<dyn Iterator<Item = Option<InnerInstructionsList>>> =
|
||||
if let Some(inner_instructions) = inner_instructions {
|
||||
Box::new(inner_instructions.into_iter())
|
||||
} else {
|
||||
Box::new(std::iter::repeat_with(|| None))
|
||||
};
|
||||
let transaction_logs_iter: Box<dyn Iterator<Item = TransactionLogMessages>> =
|
||||
if let Some(transaction_logs) = transaction_logs {
|
||||
Box::new(transaction_logs.into_iter())
|
||||
} else {
|
||||
Box::new(std::iter::repeat_with(Vec::new))
|
||||
};
|
||||
for (
|
||||
(_, transaction),
|
||||
(status, nonce_rollback),
|
||||
@@ -76,8 +88,8 @@ impl TransactionStatusService {
|
||||
balances.post_balances,
|
||||
token_balances.pre_token_balances,
|
||||
token_balances.post_token_balances,
|
||||
inner_instructions,
|
||||
transaction_logs
|
||||
inner_instructions_iter,
|
||||
transaction_logs_iter
|
||||
) {
|
||||
if Bank::can_commit(&status) && !transaction.signatures.is_empty() {
|
||||
let fee_calculator = nonce_rollback
|
||||
|
Reference in New Issue
Block a user