Add fees to tx-wide caps (backport #22081) (#23095)

* Add fees to tx-wide caps (#22081)

(cherry picked from commit 3d9874b95a)

# Conflicts:
#	runtime/src/bank.rs

* resolve

Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
mergify[bot]
2022-02-15 01:36:02 +00:00
committed by GitHub
parent 85570ac207
commit 2c8cfdb3f3
15 changed files with 1145 additions and 185 deletions

View File

@ -28,7 +28,8 @@ use {
account_utils::StateMut,
bpf_loader_upgradeable::{self, UpgradeableLoaderState},
clock::{BankId, Slot, INITIAL_RENT_EPOCH},
feature_set::{self, FeatureSet},
feature_set::{self, tx_wide_compute_cap, FeatureSet},
fee::FeeStructure,
genesis_config::ClusterType,
hash::Hash,
message::{
@ -506,6 +507,7 @@ impl Accounts {
error_counters: &mut ErrorCounters,
rent_collector: &RentCollector,
feature_set: &FeatureSet,
fee_structure: &FeeStructure,
) -> Vec<TransactionLoadResult> {
txs.iter()
.zip(lock_results)
@ -518,7 +520,12 @@ impl Accounts {
hash_queue.get_lamports_per_signature(tx.message().recent_blockhash())
});
let fee = if let Some(lamports_per_signature) = lamports_per_signature {
Bank::calculate_fee(tx.message(), lamports_per_signature)
Bank::calculate_fee(
tx.message(),
lamports_per_signature,
fee_structure,
feature_set.is_active(&tx_wide_compute_cap::id()),
)
} else {
return (Err(TransactionError::BlockhashNotFound), None);
};
@ -1336,6 +1343,8 @@ mod tests {
lamports_per_signature: u64,
rent_collector: &RentCollector,
error_counters: &mut ErrorCounters,
feature_set: &FeatureSet,
fee_structure: &FeeStructure,
) -> Vec<TransactionLoadResult> {
let mut hash_queue = BlockhashQueue::new(100);
hash_queue.register_hash(&tx.message().recent_blockhash, lamports_per_signature);
@ -1359,7 +1368,8 @@ mod tests {
&hash_queue,
error_counters,
rent_collector,
&FeatureSet::all_enabled(),
feature_set,
fee_structure,
)
}
@ -1375,6 +1385,8 @@ mod tests {
lamports_per_signature,
&RentCollector::default(),
error_counters,
&FeatureSet::all_enabled(),
&FeeStructure::default(),
)
}
@ -1522,6 +1534,8 @@ mod tests {
let fee = Bank::calculate_fee(
&SanitizedMessage::try_from(tx.message().clone()).unwrap(),
10,
&FeeStructure::default(),
false,
);
assert_eq!(fee, 10);
@ -1568,6 +1582,8 @@ mod tests {
#[test]
fn test_load_accounts_fee_payer_is_nonce() {
let mut error_counters = ErrorCounters::default();
let mut feature_set = FeatureSet::all_enabled();
feature_set.deactivate(&tx_wide_compute_cap::id());
let rent_collector = RentCollector::new(
0,
&EpochSchedule::default(),
@ -1604,6 +1620,8 @@ mod tests {
min_balance,
&rent_collector,
&mut error_counters,
&feature_set,
&FeeStructure::default(),
);
assert_eq!(loaded_accounts.len(), 1);
let (load_res, _nonce) = &loaded_accounts[0];
@ -1618,6 +1636,8 @@ mod tests {
min_balance,
&rent_collector,
&mut error_counters,
&feature_set,
&FeeStructure::default(),
);
assert_eq!(loaded_accounts.len(), 1);
let (load_res, _nonce) = &loaded_accounts[0];
@ -1631,6 +1651,8 @@ mod tests {
min_balance,
&rent_collector,
&mut error_counters,
&feature_set,
&FeeStructure::default(),
);
assert_eq!(loaded_accounts.len(), 1);
let (load_res, _nonce) = &loaded_accounts[0];
@ -2956,6 +2978,7 @@ mod tests {
&mut error_counters,
&rent_collector,
&FeatureSet::all_enabled(),
&FeeStructure::default(),
)
}

File diff suppressed because it is too large Load Diff

View File

@ -274,7 +274,7 @@ mod tests {
executors.clone(),
&mut Vec::new(),
Arc::new(FeatureSet::all_enabled()),
ComputeBudget::new(),
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&sysvar_cache,
Hash::default(),
@ -304,7 +304,7 @@ mod tests {
executors.clone(),
&mut Vec::new(),
Arc::new(FeatureSet::all_enabled()),
ComputeBudget::new(),
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&sysvar_cache,
Hash::default(),
@ -338,7 +338,7 @@ mod tests {
executors,
&mut Vec::new(),
Arc::new(FeatureSet::all_enabled()),
ComputeBudget::new(),
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&sysvar_cache,
Hash::default(),
@ -484,7 +484,7 @@ mod tests {
executors.clone(),
&mut Vec::new(),
Arc::new(FeatureSet::all_enabled()),
ComputeBudget::new(),
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&sysvar_cache,
Hash::default(),
@ -518,7 +518,7 @@ mod tests {
executors.clone(),
&mut Vec::new(),
Arc::new(FeatureSet::all_enabled()),
ComputeBudget::new(),
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&sysvar_cache,
Hash::default(),
@ -549,7 +549,7 @@ mod tests {
executors,
&mut Vec::new(),
Arc::new(FeatureSet::all_enabled()),
ComputeBudget::new(),
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&sysvar_cache,
Hash::default(),
@ -607,7 +607,7 @@ mod tests {
Rc::new(RefCell::new(Executors::default())),
&mut Vec::new(),
Arc::new(FeatureSet::all_enabled()),
ComputeBudget::new(),
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&sysvar_cache,
Hash::default(),