* 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:
@ -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
@ -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(),
|
||||
|
Reference in New Issue
Block a user