fix cu consumed computations (#25)

* fix cu consumed computations

* fix compilation errors
This commit is contained in:
kirill lykov 2024-02-28 07:38:43 -08:00 committed by GitHub
parent 44ef92f52e
commit d1d61c4afa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 15 additions and 19 deletions

View File

@ -17,7 +17,8 @@ use solana_sdk::{
slot_history::Slot, slot_history::Slot,
}; };
use solana_transaction_status::{ use solana_transaction_status::{
RewardType, TransactionDetails, UiConfirmedBlock, UiTransactionEncoding, option_serializer::OptionSerializer, RewardType, TransactionDetails, UiConfirmedBlock,
UiTransactionEncoding,
}; };
use crate::states::{BlockData, TransactionConfirmRecord, TransactionSendRecord}; use crate::states::{BlockData, TransactionConfirmRecord, TransactionSendRecord};
@ -46,11 +47,18 @@ pub async fn process_blocks(
if let Some(transactions) = &block.transactions { if let Some(transactions) = &block.transactions {
let nb_transactions = transactions.len(); let nb_transactions = transactions.len();
let mut cu_consumed: u64 = 0; let mut mm_cu_consumed: u64 = 0;
let mut total_cu_consumed: u64 = 0;
for solana_transaction_status::EncodedTransactionWithStatusMeta { for solana_transaction_status::EncodedTransactionWithStatusMeta {
transaction, meta, .. transaction, meta, ..
} in transactions } in transactions
{ {
let tx_cu_consumed =
meta.as_ref()
.map_or(0, |meta| match meta.compute_units_consumed {
OptionSerializer::Some(cu_consumed) => cu_consumed,
_ => 0,
});
let transaction = match transaction.decode() { let transaction = match transaction.decode() {
Some(tx) => tx, Some(tx) => tx,
None => { None => {
@ -58,21 +66,11 @@ pub async fn process_blocks(
} }
}; };
for signature in &transaction.signatures { for signature in &transaction.signatures {
let transaction_record_op = {
let rec = transaction_map.get(signature);
rec.map(|x| x.clone())
};
// add CU in counter // add CU in counter
if let Some(meta) = &meta { total_cu_consumed = total_cu_consumed.saturating_add(tx_cu_consumed);
if let solana_transaction_status::option_serializer::OptionSerializer::Some(x) = if let Some((_, (transaction_record, _))) = transaction_map.remove(signature) {
meta.compute_units_consumed
{
cu_consumed = cu_consumed.saturating_add(x);
}
}
if let Some(transaction_record) = transaction_record_op {
let transaction_record = transaction_record.0;
mm_transaction_count += 1; mm_transaction_count += 1;
mm_cu_consumed = mm_cu_consumed.saturating_add(tx_cu_consumed);
match tx_confirm_records.send(TransactionConfirmRecord { match tx_confirm_records.send(TransactionConfirmRecord {
signature: transaction_record.signature.to_string(), signature: transaction_record.signature.to_string(),
@ -105,8 +103,6 @@ pub async fn process_blocks(
} }
} }
} }
transaction_map.remove(signature);
} }
} }
// push block data // push block data
@ -122,8 +118,8 @@ pub async fn process_blocks(
}, },
number_of_mango_simulation_txs: mm_transaction_count, number_of_mango_simulation_txs: mm_transaction_count,
total_transactions: nb_transactions as u64, total_transactions: nb_transactions as u64,
cu_consumed: 0, cu_consumed: total_cu_consumed,
cu_consumed_by_mango_simulations: cu_consumed, cu_consumed_by_mango_simulations: mm_cu_consumed,
commitment, commitment,
}); });
} }