diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 4821232107acc5..91e9f29d7a7f10 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -119,7 +119,7 @@ use { feature, feature_set::{ self, include_loaded_accounts_data_size_in_fee_calculation, - remove_rounding_in_fee_calculation, FeatureSet, + remove_rounding_in_fee_calculation, reward_full_priority_fee, FeatureSet, }, fee::{FeeDetails, FeeStructure}, fee_calculator::{FeeCalculator, FeeRateGovernor}, @@ -3703,7 +3703,11 @@ impl Bank { if *hash == Hash::default() { // finish up any deferred changes to account state self.collect_rent_eagerly(); - self.distribute_transaction_fees(); + if self.feature_set.is_active(&reward_full_priority_fee::id()) { + self.distribute_transaction_fee_details(); + } else { + self.distribute_transaction_fees(); + } self.distribute_rent_fees(); self.update_slot_history(); self.run_incinerator(); @@ -5063,8 +5067,11 @@ impl Bank { let mut update_transaction_statuses_time = Measure::start("update_transaction_statuses"); self.update_transaction_statuses(sanitized_txs, &execution_results); - let fee_collection_results = - self.filter_program_errors_and_collect_fee(sanitized_txs, &execution_results); + let fee_collection_results = if self.feature_set.is_active(&reward_full_priority_fee::id()) { + self.filter_program_errors_and_collect_fee_details(sanitized_txs, &execution_results) + } else { + self.filter_program_errors_and_collect_fee(sanitized_txs, &execution_results) + }; update_transaction_statuses_time.stop(); timings.saturating_add_in_place( ExecuteTimingType::UpdateTransactionStatuses, diff --git a/sdk/src/feature_set.rs b/sdk/src/feature_set.rs index abecf4fafb6b1d..6d60c386838410 100644 --- a/sdk/src/feature_set.rs +++ b/sdk/src/feature_set.rs @@ -784,6 +784,10 @@ pub mod remove_rounding_in_fee_calculation { solana_sdk::declare_id!("BtVN7YjDzNE6Dk7kTT7YTDgMNUZTNgiSJgsdzAeTg2jF"); } +pub mod reward_full_priority_fee { + solana_sdk::declare_id!("3opE3EzAKnUftUDURkzMgwpNgimBAypW1mNDYH4x4Zg7"); +} + lazy_static! { /// Map of feature identifiers to user-visible description pub static ref FEATURE_NAMES: HashMap = [ @@ -975,6 +979,7 @@ lazy_static! { (enable_gossip_duplicate_proof_ingestion::id(), "enable gossip duplicate proof ingestion #32963"), (enable_chained_merkle_shreds::id(), "Enable chained Merkle shreds #34916"), (remove_rounding_in_fee_calculation::id(), "Removing unwanted rounding in fee calculation #34982"), + (reward_full_priority_fee::id(), "Reward full priority fee to validators #34731"), /*************** ADD NEW FEATURES HERE ***************/ ] .iter()