From 697fc46d170df5d8782eddf2667c5280a9b0d7c8 Mon Sep 17 00:00:00 2001 From: Andrew Fitzgerald Date: Thu, 25 Jul 2024 11:01:24 -0400 Subject: [PATCH 1/7] solana-fee --- Cargo.lock | 8 ++++++++ Cargo.toml | 2 ++ fee/Cargo.toml | 14 ++++++++++++++ fee/src/lib.rs | 40 ++++++++++++++++++++++++++++++++++++++++ sdk/src/fee.rs | 6 +++--- 5 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 fee/Cargo.toml create mode 100644 fee/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 36d073bd31211e..8581dbc64b27cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6297,6 +6297,14 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-fee" +version = "2.1.0" +dependencies = [ + "solana-sdk", + "solana-svm-transaction", +] + [[package]] name = "solana-frozen-abi" version = "2.1.0" diff --git a/Cargo.toml b/Cargo.toml index a49bdfbd14e227..91c2ad4004575a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,6 +37,7 @@ members = [ "download-utils", "entry", "faucet", + "fee", "frozen-abi", "frozen-abi/macro", "genesis", @@ -360,6 +361,7 @@ solana-define-syscall = { path = "define-syscall", version = "=2.1.0" } solana-download-utils = { path = "download-utils", version = "=2.1.0" } solana-entry = { path = "entry", version = "=2.1.0" } solana-faucet = { path = "faucet", version = "=2.1.0" } +solana-fee = { path = "fee", version = "=2.1.0" } solana-frozen-abi = { path = "frozen-abi", version = "=2.1.0" } solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.0" } solana-tps-client = { path = "tps-client", version = "=2.1.0" } diff --git a/fee/Cargo.toml b/fee/Cargo.toml new file mode 100644 index 00000000000000..0b8902bf2566bd --- /dev/null +++ b/fee/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "solana-fee" +description = "Solana fee calculation" +documentation = "https://docs.rs/solana-fee" +version = { workspace = true } +authors = { workspace = true } +repository = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +edition = { workspace = true } + +[dependencies] +solana-sdk = { workspace = true } +solana-svm-transaction = { workspace = true } diff --git a/fee/src/lib.rs b/fee/src/lib.rs new file mode 100644 index 00000000000000..9804409e4a0496 --- /dev/null +++ b/fee/src/lib.rs @@ -0,0 +1,40 @@ +use {solana_sdk::fee::FeeDetails, solana_svm_transaction::svm_message::SVMMessage}; + +/// Calculate fee for `SanitizedMessage` +pub fn calculate_fee( + message: &impl SVMMessage, + zero_fees_for_test: bool, + lamports_per_signature: u64, + prioritization_fee: u64, + remove_rounding_in_fee_calculation: bool, +) -> u64 { + calculate_fee_details( + message, + zero_fees_for_test, + lamports_per_signature, + prioritization_fee, + remove_rounding_in_fee_calculation, + ) + .total_fee() +} + +pub fn calculate_fee_details( + message: &impl SVMMessage, + zero_fees_for_test: bool, + lamports_per_signature: u64, + prioritization_fee: u64, + remove_rounding_in_fee_calculation: bool, +) -> FeeDetails { + if zero_fees_for_test { + return FeeDetails::default(); + } + let signature_fee = message + .num_total_signatures() + .saturating_mul(lamports_per_signature); + + FeeDetails { + transaction_fee: signature_fee, + prioritization_fee, + remove_rounding_in_fee_calculation, + } +} diff --git a/sdk/src/fee.rs b/sdk/src/fee.rs index f2159ee6b0257c..ee598d0c97e428 100644 --- a/sdk/src/fee.rs +++ b/sdk/src/fee.rs @@ -33,9 +33,9 @@ pub struct FeeStructure { #[derive(Debug, Default, Clone, Copy, Eq, PartialEq, Deserialize, Serialize)] pub struct FeeDetails { - transaction_fee: u64, - prioritization_fee: u64, - remove_rounding_in_fee_calculation: bool, + pub transaction_fee: u64, + pub prioritization_fee: u64, + pub remove_rounding_in_fee_calculation: bool, } impl FeeDetails { From c6a03be50fd7fa2ca6cfcd88a4e618b1d54a1654 Mon Sep 17 00:00:00 2001 From: Andrew Fitzgerald Date: Thu, 25 Jul 2024 11:50:36 -0400 Subject: [PATCH 2/7] use solana_fee --- Cargo.lock | 3 +++ core/Cargo.toml | 1 + core/src/banking_stage/consumer.rs | 16 ++++++++-------- runtime/Cargo.toml | 1 + runtime/src/bank.rs | 20 ++++++++++---------- runtime/src/bank/fee_distribution.rs | 16 ++++++---------- runtime/src/bank/tests.rs | 16 +++++++++++----- sdk/src/fee.rs | 9 +++++++++ svm/Cargo.toml | 1 + svm/src/transaction_processor.rs | 13 +++++-------- 10 files changed, 55 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8581dbc64b27cb..a78c6e93d916f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6101,6 +6101,7 @@ dependencies = [ "solana-core", "solana-cost-model", "solana-entry", + "solana-fee", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-geyser-plugin-manager", @@ -7257,6 +7258,7 @@ dependencies = [ "solana-compute-budget-program", "solana-config-program", "solana-cost-model", + "solana-fee", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-inline-spl", @@ -7584,6 +7586,7 @@ dependencies = [ "solana-bpf-loader-program", "solana-compute-budget", "solana-compute-budget-program", + "solana-fee", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-loader-v4-program", diff --git a/core/Cargo.toml b/core/Cargo.toml index 6ceeba256a2a95..a065e77eac9a31 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -51,6 +51,7 @@ solana-compute-budget = { workspace = true } solana-connection-cache = { workspace = true } solana-cost-model = { workspace = true } solana-entry = { workspace = true } +solana-fee = { workspace = true } solana-frozen-abi = { workspace = true, optional = true } solana-frozen-abi-macro = { workspace = true, optional = true } solana-geyser-plugin-manager = { workspace = true } diff --git a/core/src/banking_stage/consumer.rs b/core/src/banking_stage/consumer.rs index 9a0108a3851770..785b8f02a997ee 100644 --- a/core/src/banking_stage/consumer.rs +++ b/core/src/banking_stage/consumer.rs @@ -24,6 +24,7 @@ use { solana_sdk::{ clock::{Slot, FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET, MAX_PROCESSING_AGE}, feature_set, + fee::FeeBudgetLimits, message::SanitizedMessage, saturating_add_assign, timing::timestamp, @@ -741,15 +742,14 @@ impl Consumer { error_counters: &mut TransactionErrorMetrics, ) -> Result<(), TransactionError> { let fee_payer = message.fee_payer(); - let budget_limits = - process_compute_budget_instructions(message.program_instructions_iter())?.into(); - let fee = bank.fee_structure().calculate_fee( + let budget_limits = FeeBudgetLimits::from(process_compute_budget_instructions( + message.program_instructions_iter(), + )?); + let fee = solana_fee::calculate_fee( message, - bank.get_lamports_per_signature(), - &budget_limits, - bank.feature_set.is_active( - &feature_set::include_loaded_accounts_data_size_in_fee_calculation::id(), - ), + bank.get_lamports_per_signature() == 0, + bank.fee_structure().lamports_per_signature, + budget_limits.prioritization_fee, bank.feature_set .is_active(&feature_set::remove_rounding_in_fee_calculation::id()), ); diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 3fb8ee982e4b46..1f823bf1ea40d9 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -54,6 +54,7 @@ solana-compute-budget = { workspace = true } solana-compute-budget-program = { workspace = true } solana-config-program = { workspace = true } solana-cost-model = { workspace = true } +solana-fee = { workspace = true } solana-frozen-abi = { workspace = true, optional = true } solana-frozen-abi-macro = { workspace = true, optional = true } solana-inline-spl = { workspace = true } diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 7898831773ad18..037f7e7ff88c11 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -114,10 +114,9 @@ use { epoch_schedule::EpochSchedule, feature, feature_set::{ - self, include_loaded_accounts_data_size_in_fee_calculation, - remove_rounding_in_fee_calculation, reward_full_priority_fee, FeatureSet, + self, remove_rounding_in_fee_calculation, reward_full_priority_fee, FeatureSet, }, - fee::{FeeDetails, FeeStructure}, + fee::{FeeBudgetLimits, FeeDetails, FeeStructure}, fee_calculator::FeeRateGovernor, genesis_config::{ClusterType, GenesisConfig}, hard_forks::HardForks, @@ -3048,14 +3047,15 @@ impl Bank { message: &SanitizedMessage, lamports_per_signature: u64, ) -> u64 { - self.fee_structure().calculate_fee( + let fee_budget_limits = FeeBudgetLimits::from( + process_compute_budget_instructions(message.program_instructions_iter()) + .unwrap_or_default(), + ); + solana_fee::calculate_fee( message, - lamports_per_signature, - &process_compute_budget_instructions(message.program_instructions_iter()) - .unwrap_or_default() - .into(), - self.feature_set - .is_active(&include_loaded_accounts_data_size_in_fee_calculation::id()), + lamports_per_signature == 0, + self.fee_structure().lamports_per_signature, + fee_budget_limits.prioritization_fee, self.feature_set .is_active(&remove_rounding_in_fee_calculation::id()), ) diff --git a/runtime/src/bank/fee_distribution.rs b/runtime/src/bank/fee_distribution.rs index 671dba8ac2e9cb..00c1871d7dd080 100644 --- a/runtime/src/bank/fee_distribution.rs +++ b/runtime/src/bank/fee_distribution.rs @@ -4,10 +4,7 @@ use { log::{debug, warn}, solana_sdk::{ account::{ReadableAccount, WritableAccount}, - feature_set::{ - include_loaded_accounts_data_size_in_fee_calculation, - remove_rounding_in_fee_calculation, reward_full_priority_fee, - }, + feature_set::{remove_rounding_in_fee_calculation, reward_full_priority_fee}, fee::FeeBudgetLimits, pubkey::Pubkey, reward_info::RewardInfo, @@ -85,12 +82,11 @@ impl Bank { transaction: &SanitizedTransaction, fee_budget_limits: &FeeBudgetLimits, ) -> u64 { - let fee_details = self.fee_structure().calculate_fee_details( - transaction.message(), - self.get_lamports_per_signature(), - fee_budget_limits, - self.feature_set - .is_active(&include_loaded_accounts_data_size_in_fee_calculation::id()), + let fee_details = solana_fee::calculate_fee_details( + transaction, + self.get_lamports_per_signature() == 0, + self.fee_structure().lamports_per_signature, + fee_budget_limits.prioritization_fee, self.feature_set .is_active(&remove_rounding_in_fee_calculation::id()), ); diff --git a/runtime/src/bank/tests.rs b/runtime/src/bank/tests.rs index 925c126c9afefe..aa94d8e2b3ba94 100644 --- a/runtime/src/bank/tests.rs +++ b/runtime/src/bank/tests.rs @@ -10025,11 +10025,17 @@ fn calculate_test_fee( lamports_per_signature: u64, fee_structure: &FeeStructure, ) -> u64 { - let budget_limits = process_compute_budget_instructions(message.program_instructions_iter()) - .unwrap_or_default() - .into(); - - fee_structure.calculate_fee(message, lamports_per_signature, &budget_limits, false, true) + let budget_limits = FeeBudgetLimits::from( + process_compute_budget_instructions(message.program_instructions_iter()) + .unwrap_or_default(), + ); + solana_fee::calculate_fee( + message, + lamports_per_signature == 0, + fee_structure.lamports_per_signature, + budget_limits.prioritization_fee, + true, + ) } #[test] diff --git a/sdk/src/fee.rs b/sdk/src/fee.rs index ee598d0c97e428..f636d4986dab70 100644 --- a/sdk/src/fee.rs +++ b/sdk/src/fee.rs @@ -126,6 +126,10 @@ impl FeeStructure { /// Calculate fee for `SanitizedMessage` #[cfg(not(target_os = "solana"))] + #[deprecated( + since = "2.1.0", + note = "Please use `solana_fee::calculate_fee` instead." + )] pub fn calculate_fee( &self, message: &SanitizedMessage, @@ -134,6 +138,7 @@ impl FeeStructure { include_loaded_account_data_size_in_fee: bool, remove_rounding_in_fee_calculation: bool, ) -> u64 { + #[allow(deprecated)] self.calculate_fee_details( message, lamports_per_signature, @@ -146,6 +151,10 @@ impl FeeStructure { /// Calculate fee details for `SanitizedMessage` #[cfg(not(target_os = "solana"))] + #[deprecated( + since = "2.1.0", + note = "Please use `solana_fee::calculate_fee_details` instead." + )] pub fn calculate_fee_details( &self, message: &SanitizedMessage, diff --git a/svm/Cargo.toml b/svm/Cargo.toml index e99a695a8d2619..753cc9253ae433 100644 --- a/svm/Cargo.toml +++ b/svm/Cargo.toml @@ -18,6 +18,7 @@ serde = { workspace = true, features = ["rc"] } serde_derive = { workspace = true } solana-bpf-loader-program = { workspace = true } solana-compute-budget = { workspace = true } +solana-fee = { workspace = true } solana-frozen-abi = { workspace = true, optional = true } solana-frozen-abi-macro = { workspace = true, optional = true } solana-loader-v4-program = { workspace = true } diff --git a/svm/src/transaction_processor.rs b/svm/src/transaction_processor.rs index c3600772b80091..3fbc52eaa3c190 100644 --- a/svm/src/transaction_processor.rs +++ b/svm/src/transaction_processor.rs @@ -37,10 +37,7 @@ use { solana_sdk::{ account::{AccountSharedData, ReadableAccount, PROGRAM_OWNERS}, clock::{Epoch, Slot}, - feature_set::{ - include_loaded_accounts_data_size_in_fee_calculation, - remove_rounding_in_fee_calculation, FeatureSet, - }, + feature_set::{remove_rounding_in_fee_calculation, FeatureSet}, fee::{FeeBudgetLimits, FeeStructure}, hash::Hash, inner_instruction::{InnerInstruction, InnerInstructionsList}, @@ -449,11 +446,11 @@ impl TransactionBatchProcessor { } = checked_details; let fee_budget_limits = FeeBudgetLimits::from(compute_budget_limits); - let fee_details = fee_structure.calculate_fee_details( + let fee_details = solana_fee::calculate_fee_details( message, - lamports_per_signature, - &fee_budget_limits, - feature_set.is_active(&include_loaded_accounts_data_size_in_fee_calculation::id()), + lamports_per_signature == 0, + fee_structure.lamports_per_signature, + fee_budget_limits.prioritization_fee, feature_set.is_active(&remove_rounding_in_fee_calculation::id()), ); From 9cb6521171912701a05e883d43c93930c84655ed Mon Sep 17 00:00:00 2001 From: Andrew Fitzgerald Date: Thu, 25 Jul 2024 12:02:13 -0400 Subject: [PATCH 3/7] cargo-for-all --- programs/sbf/Cargo.lock | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index d38c8ea1700f13..7b138f06d28fc3 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -4835,6 +4835,7 @@ dependencies = [ "solana-connection-cache", "solana-cost-model", "solana-entry", + "solana-fee", "solana-geyser-plugin-manager", "solana-gossip", "solana-ledger", @@ -4970,6 +4971,14 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-fee" +version = "2.1.0" +dependencies = [ + "solana-sdk", + "solana-svm-transaction", +] + [[package]] name = "solana-genesis-utils" version = "2.1.0" @@ -5620,6 +5629,7 @@ dependencies = [ "solana-compute-budget-program", "solana-config-program", "solana-cost-model", + "solana-fee", "solana-inline-spl", "solana-loader-v4-program", "solana-measure", @@ -6328,6 +6338,7 @@ dependencies = [ "serde_derive", "solana-bpf-loader-program", "solana-compute-budget", + "solana-fee", "solana-loader-v4-program", "solana-log-collector", "solana-measure", @@ -6340,6 +6351,13 @@ dependencies = [ "solana-vote", ] +[[package]] +name = "solana-svm-transaction" +version = "2.1.0" +dependencies = [ + "solana-sdk", +] + [[package]] name = "solana-system-program" version = "2.1.0" From 050d2942142311b37791597feaea2654e67dc335 Mon Sep 17 00:00:00 2001 From: Andrew Fitzgerald Date: Thu, 25 Jul 2024 13:44:39 -0400 Subject: [PATCH 4/7] program tests --- programs/sbf/Cargo.lock | 1 + programs/sbf/Cargo.toml | 2 ++ programs/sbf/tests/programs.rs | 30 +++++++++++++++++------------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 7b138f06d28fc3..486247b24cb24f 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -5681,6 +5681,7 @@ dependencies = [ "solana-bpf-loader-program", "solana-cli-output", "solana-compute-budget", + "solana-fee", "solana-ledger", "solana-log-collector", "solana-logger", diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index e61318bd85f962..6e00d70fd3abef 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -33,6 +33,7 @@ solana-cli-output = { path = "../../cli-output", version = "=2.1.0" } solana-compute-budget = { path = "../../compute-budget", version = "=2.1.0" } solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.0" } solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.0" } +solana-fee = { path = "../../fee", version = "=2.1.0" } solana-ledger = { path = "../../ledger", version = "=2.1.0" } solana-log-collector = { path = "../../log-collector", version = "=2.1.0" } solana-logger = { path = "../../logger", version = "=2.1.0" } @@ -99,6 +100,7 @@ solana-accounts-db = { workspace = true } solana-bpf-loader-program = { workspace = true } solana-cli-output = { workspace = true } solana-compute-budget = { workspace = true } +solana-fee = { workspace = true} solana-ledger = { workspace = true } solana-log-collector = { workspace = true } solana-logger = { workspace = true } diff --git a/programs/sbf/tests/programs.rs b/programs/sbf/tests/programs.rs index 99cdba5666b793..54b26f818ac124 100644 --- a/programs/sbf/tests/programs.rs +++ b/programs/sbf/tests/programs.rs @@ -46,7 +46,7 @@ use { compute_budget::ComputeBudgetInstruction, entrypoint::MAX_PERMITTED_DATA_INCREASE, feature_set::{self, FeatureSet}, - fee::FeeStructure, + fee::{FeeBudgetLimits, FeeStructure}, fee_calculator::FeeRateGovernor, genesis_config::ClusterType, hash::Hash, @@ -3890,13 +3890,15 @@ fn test_program_fees() { &ReservedAccountKeys::empty_key_set(), ) .unwrap(); - let expected_normal_fee = fee_structure.calculate_fee( + let fee_budget_limits = FeeBudgetLimits::from( + process_compute_budget_instructions(sanitized_message.program_instructions_iter()) + .unwrap_or_default(), + ); + let expected_normal_fee = solana_fee::calculate_fee( &sanitized_message, - congestion_multiplier, - &process_compute_budget_instructions(sanitized_message.program_instructions_iter()) - .unwrap_or_default() - .into(), - false, + congestion_multiplier == 0, + fee_structure.lamports_per_signature, + fee_budget_limits.prioritization_fee, true, ); bank_client @@ -3918,13 +3920,15 @@ fn test_program_fees() { &ReservedAccountKeys::empty_key_set(), ) .unwrap(); - let expected_prioritized_fee = fee_structure.calculate_fee( + let fee_budget_limits = FeeBudgetLimits::from( + process_compute_budget_instructions(sanitized_message.program_instructions_iter()) + .unwrap_or_default(), + ); + let expected_prioritized_fee = solana_fee::calculate_fee( &sanitized_message, - congestion_multiplier, - &process_compute_budget_instructions(sanitized_message.program_instructions_iter()) - .unwrap_or_default() - .into(), - false, + congestion_multiplier == 0, + fee_structure.lamports_per_signature, + fee_budget_limits.prioritization_fee, true, ); assert!(expected_normal_fee < expected_prioritized_fee); From 17c154757ebd29192549c840cc16e50007e05376 Mon Sep 17 00:00:00 2001 From: Andrew Fitzgerald Date: Thu, 25 Jul 2024 14:29:17 -0400 Subject: [PATCH 5/7] formatting? --- programs/sbf/Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index 6e00d70fd3abef..050b2f42d2a61b 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -22,8 +22,8 @@ net2 = "0.2.37" num-derive = "0.4.2" num-traits = "0.2" rand = "0.8" -serde = "1.0.112" # must match the serde_derive version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 -serde_derive = "1.0.112" # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 +serde = "1.0.112" # must match the serde_derive version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 +serde_derive = "1.0.112" # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_json = "1.0.56" solana-account-decoder = { path = "../../account-decoder", version = "=2.1.0" } solana-accounts-db = { path = "../../accounts-db", version = "=2.1.0" } @@ -100,7 +100,7 @@ solana-accounts-db = { workspace = true } solana-bpf-loader-program = { workspace = true } solana-cli-output = { workspace = true } solana-compute-budget = { workspace = true } -solana-fee = { workspace = true} +solana-fee = { workspace = true } solana-ledger = { workspace = true } solana-log-collector = { workspace = true } solana-logger = { workspace = true } From e65eae5d43f8c44b3d18c57b919ce9204f4a3eb5 Mon Sep 17 00:00:00 2001 From: Andrew Fitzgerald Date: Thu, 25 Jul 2024 17:38:01 -0400 Subject: [PATCH 6/7] FeeDetails::new --- fee/src/lib.rs | 6 +++--- runtime/src/bank/tests.rs | 6 +++--- sdk/src/fee.rs | 9 ++++----- svm/src/transaction_processor.rs | 6 +++--- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/fee/src/lib.rs b/fee/src/lib.rs index 9804409e4a0496..869d4dc7f4711c 100644 --- a/fee/src/lib.rs +++ b/fee/src/lib.rs @@ -32,9 +32,9 @@ pub fn calculate_fee_details( .num_total_signatures() .saturating_mul(lamports_per_signature); - FeeDetails { - transaction_fee: signature_fee, + FeeDetails::new( + signature_fee, prioritization_fee, remove_rounding_in_fee_calculation, - } + ) } diff --git a/runtime/src/bank/tests.rs b/runtime/src/bank/tests.rs index aa94d8e2b3ba94..744fc661ba0594 100644 --- a/runtime/src/bank/tests.rs +++ b/runtime/src/bank/tests.rs @@ -2866,7 +2866,7 @@ fn test_filter_program_errors_and_collect_fee() { bank.deactivate_feature(&feature_set::reward_full_priority_fee::id()); let tx_fee = 42; - let fee_details = FeeDetails::new_for_tests(tx_fee, 0, false); + let fee_details = FeeDetails::new(tx_fee, 0, false); let results = vec![ new_execution_result(Ok(()), fee_details), new_execution_result( @@ -2899,7 +2899,7 @@ fn test_filter_program_errors_and_collect_priority_fee() { bank.deactivate_feature(&feature_set::reward_full_priority_fee::id()); let priority_fee = 42; - let fee_details: FeeDetails = FeeDetails::new_for_tests(0, priority_fee, false); + let fee_details: FeeDetails = FeeDetails::new(0, priority_fee, false); let results = vec![ new_execution_result(Ok(()), fee_details), new_execution_result( @@ -12873,7 +12873,7 @@ fn test_filter_program_errors_and_collect_fee_details() { let initial_payer_balance = 7_000; let tx_fee = 5000; let priority_fee = 1000; - let tx_fee_details = FeeDetails::new_for_tests(tx_fee, priority_fee, false); + let tx_fee_details = FeeDetails::new(tx_fee, priority_fee, false); let expected_collected_fee_details = CollectorFeeDetails { transaction_fee: 2 * tx_fee, priority_fee: 2 * priority_fee, diff --git a/sdk/src/fee.rs b/sdk/src/fee.rs index f636d4986dab70..24e61e1d14848f 100644 --- a/sdk/src/fee.rs +++ b/sdk/src/fee.rs @@ -33,14 +33,13 @@ pub struct FeeStructure { #[derive(Debug, Default, Clone, Copy, Eq, PartialEq, Deserialize, Serialize)] pub struct FeeDetails { - pub transaction_fee: u64, - pub prioritization_fee: u64, - pub remove_rounding_in_fee_calculation: bool, + transaction_fee: u64, + prioritization_fee: u64, + remove_rounding_in_fee_calculation: bool, } impl FeeDetails { - #[cfg(feature = "dev-context-only-utils")] - pub fn new_for_tests( + pub fn new( transaction_fee: u64, prioritization_fee: u64, remove_rounding_in_fee_calculation: bool, diff --git a/svm/src/transaction_processor.rs b/svm/src/transaction_processor.rs index 3fbc52eaa3c190..f870deafa8d9b4 100644 --- a/svm/src/transaction_processor.rs +++ b/svm/src/transaction_processor.rs @@ -1907,7 +1907,7 @@ mod tests { fee_payer_rent_epoch ), compute_budget_limits, - fee_details: FeeDetails::new_for_tests(transaction_fee, priority_fee, false), + fee_details: FeeDetails::new(transaction_fee, priority_fee, false), fee_payer_rent_debit, fee_payer_account: post_validation_fee_payer_account, }) @@ -1979,7 +1979,7 @@ mod tests { 0, // rent epoch ), compute_budget_limits, - fee_details: FeeDetails::new_for_tests(transaction_fee, 0, false), + fee_details: FeeDetails::new(transaction_fee, 0, false), fee_payer_rent_debit, fee_payer_account: post_validation_fee_payer_account, }) @@ -2220,7 +2220,7 @@ mod tests { 0, // fee_payer_rent_epoch ), compute_budget_limits, - fee_details: FeeDetails::new_for_tests(transaction_fee, priority_fee, false), + fee_details: FeeDetails::new(transaction_fee, priority_fee, false), fee_payer_rent_debit: 0, // rent due fee_payer_account: post_validation_fee_payer_account, }) From 4c1a3c9cead471ad77255aa32d6acaa77927a0c0 Mon Sep 17 00:00:00 2001 From: Andrew Fitzgerald Date: Thu, 25 Jul 2024 17:39:22 -0400 Subject: [PATCH 7/7] fee_budget_limits renames --- core/src/banking_stage/consumer.rs | 4 ++-- runtime/src/bank/tests.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/banking_stage/consumer.rs b/core/src/banking_stage/consumer.rs index 785b8f02a997ee..3b684ff57e679a 100644 --- a/core/src/banking_stage/consumer.rs +++ b/core/src/banking_stage/consumer.rs @@ -742,14 +742,14 @@ impl Consumer { error_counters: &mut TransactionErrorMetrics, ) -> Result<(), TransactionError> { let fee_payer = message.fee_payer(); - let budget_limits = FeeBudgetLimits::from(process_compute_budget_instructions( + let fee_budget_limits = FeeBudgetLimits::from(process_compute_budget_instructions( message.program_instructions_iter(), )?); let fee = solana_fee::calculate_fee( message, bank.get_lamports_per_signature() == 0, bank.fee_structure().lamports_per_signature, - budget_limits.prioritization_fee, + fee_budget_limits.prioritization_fee, bank.feature_set .is_active(&feature_set::remove_rounding_in_fee_calculation::id()), ); diff --git a/runtime/src/bank/tests.rs b/runtime/src/bank/tests.rs index 744fc661ba0594..597fee1dd3c648 100644 --- a/runtime/src/bank/tests.rs +++ b/runtime/src/bank/tests.rs @@ -10025,7 +10025,7 @@ fn calculate_test_fee( lamports_per_signature: u64, fee_structure: &FeeStructure, ) -> u64 { - let budget_limits = FeeBudgetLimits::from( + let fee_budget_limits = FeeBudgetLimits::from( process_compute_budget_instructions(message.program_instructions_iter()) .unwrap_or_default(), ); @@ -10033,7 +10033,7 @@ fn calculate_test_fee( message, lamports_per_signature == 0, fee_structure.lamports_per_signature, - budget_limits.prioritization_fee, + fee_budget_limits.prioritization_fee, true, ) }