Skip to content

Commit

Permalink
refactor: remove GetComputeBudgetDetails trait, update call sites to …
Browse files Browse the repository at this point in the history
…use underlying function directly (solana-labs#2362)
  • Loading branch information
tao-stones authored Jul 31, 2024
1 parent a527e1d commit 6e067fc
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 210 deletions.
10 changes: 5 additions & 5 deletions core/src/banking_stage/consumer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ use {
},
solana_runtime::{
bank::{Bank, LoadAndExecuteTransactionsOutput},
compute_budget_details::GetComputeBudgetDetails,
transaction_batch::TransactionBatch,
},
solana_sdk::{
Expand Down Expand Up @@ -578,10 +577,11 @@ impl Consumer {
.sanitized_transactions()
.iter()
.filter_map(|transaction| {
let round_compute_unit_price_enabled = false; // TODO get from working_bank.feature_set
transaction
.get_compute_budget_details(round_compute_unit_price_enabled)
.map(|details| details.compute_unit_price)
process_compute_budget_instructions(
transaction.message().program_instructions_iter(),
)
.ok()
.map(|limits| limits.compute_unit_price)
})
.minmax();
let (min_prioritization_fees, max_prioritization_fees) =
Expand Down
33 changes: 20 additions & 13 deletions core/src/banking_stage/immutable_deserialized_packet.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
use {
super::packet_filter::PacketFilterFailure,
solana_compute_budget::compute_budget_processor::{
process_compute_budget_instructions, ComputeBudgetLimits,
},
solana_perf::packet::Packet,
solana_runtime::compute_budget_details::{ComputeBudgetDetails, GetComputeBudgetDetails},
solana_sanitize::SanitizeError,
solana_sdk::{
hash::Hash,
Expand Down Expand Up @@ -43,7 +45,8 @@ pub struct ImmutableDeserializedPacket {
transaction: SanitizedVersionedTransaction,
message_hash: Hash,
is_simple_vote: bool,
compute_budget_details: ComputeBudgetDetails,
compute_unit_price: u64,
compute_unit_limit: u32,
}

impl ImmutableDeserializedPacket {
Expand All @@ -55,21 +58,29 @@ impl ImmutableDeserializedPacket {
let is_simple_vote = packet.meta().is_simple_vote_tx();

// drop transaction if prioritization fails.
let mut compute_budget_details = sanitized_transaction
.get_compute_budget_details(packet.meta().round_compute_unit_price())
.ok_or(DeserializedPacketError::PrioritizationFailure)?;
let ComputeBudgetLimits {
mut compute_unit_price,
compute_unit_limit,
..
} = process_compute_budget_instructions(
sanitized_transaction
.get_message()
.program_instructions_iter(),
)
.map_err(|_| DeserializedPacketError::PrioritizationFailure)?;

// set compute unit price to zero for vote transactions
if is_simple_vote {
compute_budget_details.compute_unit_price = 0;
compute_unit_price = 0;
};

Ok(Self {
original_packet: packet,
transaction: sanitized_transaction,
message_hash,
is_simple_vote,
compute_budget_details,
compute_unit_price,
compute_unit_limit,
})
}

Expand All @@ -90,15 +101,11 @@ impl ImmutableDeserializedPacket {
}

pub fn compute_unit_price(&self) -> u64 {
self.compute_budget_details.compute_unit_price
self.compute_unit_price
}

pub fn compute_unit_limit(&self) -> u64 {
self.compute_budget_details.compute_unit_limit
}

pub fn compute_budget_details(&self) -> ComputeBudgetDetails {
self.compute_budget_details.clone()
u64::from(self.compute_unit_limit)
}

// This function deserializes packets into transactions, computes the blake3 hash of transaction
Expand Down
183 changes: 0 additions & 183 deletions runtime/src/compute_budget_details.rs

This file was deleted.

1 change: 0 additions & 1 deletion runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ pub mod bank_client;
pub mod bank_forks;
pub mod bank_utils;
pub mod commitment;
pub mod compute_budget_details;
pub mod epoch_stakes;
pub mod genesis_utils;
pub mod installed_scheduler_pool;
Expand Down
17 changes: 9 additions & 8 deletions runtime/src/prioritization_fee_cache.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use {
crate::{bank::Bank, compute_budget_details::GetComputeBudgetDetails, prioritization_fee::*},
crate::{bank::Bank, prioritization_fee::*},
crossbeam_channel::{unbounded, Receiver, Sender},
log::*,
solana_compute_budget::compute_budget_processor::process_compute_budget_instructions,
solana_measure::measure_us,
solana_sdk::{
clock::{BankId, Slot},
Expand Down Expand Up @@ -201,20 +202,20 @@ impl PrioritizationFeeCache {
continue;
}

let round_compute_unit_price_enabled = false; // TODO: bank.feture_set.is_active(round_compute_unit_price)
let compute_budget_details = sanitized_transaction
.get_compute_budget_details(round_compute_unit_price_enabled);
let compute_budget_limits = process_compute_budget_instructions(
sanitized_transaction.message().program_instructions_iter(),
);
let account_locks = sanitized_transaction
.get_account_locks(bank.get_transaction_account_lock_limit());

if compute_budget_details.is_none() || account_locks.is_err() {
if compute_budget_limits.is_err() || account_locks.is_err() {
continue;
}
let compute_budget_details = compute_budget_details.unwrap();
let compute_budget_limits = compute_budget_limits.unwrap();

// filter out any transaction that requests zero compute_unit_limit
// since its priority fee amount is not instructive
if compute_budget_details.compute_unit_limit == 0 {
if compute_budget_limits.compute_unit_limit == 0 {
continue;
}

Expand All @@ -229,7 +230,7 @@ impl PrioritizationFeeCache {
.send(CacheServiceUpdate::TransactionUpdate {
slot: bank.slot(),
bank_id: bank.bank_id(),
transaction_fee: compute_budget_details.compute_unit_price,
transaction_fee: compute_budget_limits.compute_unit_price,
writable_accounts,
})
.unwrap_or_else(|err| {
Expand Down

0 comments on commit 6e067fc

Please sign in to comment.