fix cu consumed computations (#25)
* fix cu consumed computations * fix compilation errors
This commit is contained in:
parent
44ef92f52e
commit
d1d61c4afa
|
@ -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,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue