Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.

Commit 74a7539

Browse files
committed
Move burn() back into FeeCalculator
Appease BPF tests
1 parent 727dec1 commit 74a7539

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

runtime/src/bank.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,7 @@ impl Bank {
751751
let collector_fees = self.collector_fees.load(Ordering::Relaxed) as u64;
752752

753753
if collector_fees != 0 {
754-
let (unburned, burned) = self.fee_rate_governor.burn(collector_fees);
754+
let (unburned, burned) = self.fee_calculator.burn(collector_fees);
755755
// burn a portion of fees
756756
self.deposit(&self.collector_id, unburned);
757757
self.capitalization.fetch_sub(burned, Ordering::Relaxed);
@@ -3453,9 +3453,9 @@ mod tests {
34533453
} = create_genesis_config_with_leader(mint, &leader, 3);
34543454
genesis_config.fee_rate_governor.lamports_per_signature = 4; // something divisible by 2
34553455

3456-
let expected_fee_paid = genesis_config.fee_rate_governor.lamports_per_signature;
3457-
let (expected_fee_collected, expected_fee_burned) =
3458-
genesis_config.fee_rate_governor.burn(expected_fee_paid);
3456+
let fee_calculator = genesis_config.fee_rate_governor.create_fee_calculator();
3457+
let expected_fee_paid = fee_calculator.lamports_per_signature;
3458+
let (expected_fee_collected, expected_fee_burned) = fee_calculator.burn(expected_fee_paid);
34593459

34603460
let mut bank = Bank::new(&genesis_config);
34613461

@@ -3601,7 +3601,7 @@ mod tests {
36013601
bank.get_balance(&leader),
36023602
initial_balance
36033603
+ bank
3604-
.fee_rate_governor
3604+
.fee_calculator
36053605
.burn(bank.fee_calculator.lamports_per_signature * 2)
36063606
.0
36073607
);

sdk/src/fee_calculator.rs

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,16 @@ pub struct FeeCalculator {
88
// The current cost of a signature This amount may increase/decrease over time based on
99
// cluster processing load.
1010
pub lamports_per_signature: u64,
11+
12+
// What portion of collected fees are to be destroyed, as a fraction of std::u8::MAX
13+
pub burn_percent: u8,
1114
}
1215

1316
impl Default for FeeCalculator {
1417
fn default() -> Self {
1518
Self {
1619
lamports_per_signature: 0,
20+
burn_percent: DEFAULT_BURN_PERCENT,
1721
}
1822
}
1923
}
@@ -22,12 +26,19 @@ impl FeeCalculator {
2226
pub fn new(lamports_per_signature: u64) -> Self {
2327
Self {
2428
lamports_per_signature,
29+
..FeeCalculator::default()
2530
}
2631
}
2732

2833
pub fn calculate_fee(&self, message: &Message) -> u64 {
2934
self.lamports_per_signature * u64::from(message.header.num_required_signatures)
3035
}
36+
37+
/// calculate unburned fee from a fee total, returns (unburned, burned)
38+
pub fn burn(&self, fees: u64) -> (u64, u64) {
39+
let burned = fees * u64::from(self.burn_percent) / 100;
40+
(fees - burned, burned)
41+
}
3142
}
3243

3344
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug)]
@@ -148,16 +159,11 @@ impl FeeRateGovernor {
148159
me
149160
}
150161

151-
/// calculate unburned fee from a fee total, returns (unburned, burned)
152-
pub fn burn(&self, fees: u64) -> (u64, u64) {
153-
let burned = fees * u64::from(self.burn_percent) / 100;
154-
(fees - burned, burned)
155-
}
156-
157162
/// create a FeeCalculator based on current cluster signature throughput
158163
pub fn create_fee_calculator(&self) -> FeeCalculator {
159164
FeeCalculator {
160165
lamports_per_signature: self.lamports_per_signature,
166+
burn_percent: self.burn_percent,
161167
}
162168
}
163169
}
@@ -168,15 +174,15 @@ mod tests {
168174
use crate::{pubkey::Pubkey, system_instruction};
169175

170176
#[test]
171-
fn test_fee_rate_governor_burn() {
172-
let mut fee_rate_governor = FeeRateGovernor::default();
173-
assert_eq!(fee_rate_governor.burn(2), (1, 1));
177+
fn test_fee_calculator_burn() {
178+
let mut fee_calculator = FeeCalculator::default();
179+
assert_eq!(fee_calculator.burn(2), (1, 1));
174180

175-
fee_rate_governor.burn_percent = 0;
176-
assert_eq!(fee_rate_governor.burn(2), (2, 0));
181+
fee_calculator.burn_percent = 0;
182+
assert_eq!(fee_calculator.burn(2), (2, 0));
177183

178-
fee_rate_governor.burn_percent = 100;
179-
assert_eq!(fee_rate_governor.burn(2), (0, 2));
184+
fee_calculator.burn_percent = 100;
185+
assert_eq!(fee_calculator.burn(2), (0, 2));
180186
}
181187

182188
#[test]

0 commit comments

Comments
 (0)