Add feature for pending SPL Token self-transfer fix

This commit is contained in:
Trent Nelson 2021-01-28 18:43:52 -07:00 committed by mergify[bot]
parent 31019e9828
commit 85b5dbead6
2 changed files with 10 additions and 5 deletions

View File

@ -4687,8 +4687,8 @@ impl Bank {
self.rent_collector.rent.burn_percent = 50; // 50% rent burn self.rent_collector.rent.burn_percent = 50; // 50% rent burn
} }
if new_feature_activations.contains(&feature_set::spl_token_v2_multisig_fix::id()) { if new_feature_activations.contains(&feature_set::spl_token_v2_self_transfer_fix::id()) {
self.apply_spl_token_v2_multisig_fix(); self.apply_spl_token_v2_self_transfer_fix();
} }
// Remove me after a while around v1.6 // Remove me after a while around v1.6
if !self.no_stake_rewrite.load(Relaxed) if !self.no_stake_rewrite.load(Relaxed)
@ -4780,7 +4780,7 @@ impl Bank {
} }
} }
fn apply_spl_token_v2_multisig_fix(&mut self) { fn apply_spl_token_v2_self_transfer_fix(&mut self) {
if let Some(mut account) = self.get_account(&inline_spl_token_v2_0::id()) { if let Some(mut account) = self.get_account(&inline_spl_token_v2_0::id()) {
self.capitalization.fetch_sub(account.lamports, Relaxed); self.capitalization.fetch_sub(account.lamports, Relaxed);
account.lamports = 0; account.lamports = 0;
@ -11068,7 +11068,7 @@ pub(crate) mod tests {
} }
#[test] #[test]
fn test_spl_token_v2_multisig_fix() { fn test_spl_token_v2_self_transfer_fix() {
let (genesis_config, _mint_keypair) = create_genesis_config(0); let (genesis_config, _mint_keypair) = create_genesis_config(0);
let mut bank = Bank::new(&genesis_config); let mut bank = Bank::new(&genesis_config);
@ -11083,7 +11083,7 @@ pub(crate) mod tests {
assert_eq!(bank.get_balance(&inline_spl_token_v2_0::id()), 100); assert_eq!(bank.get_balance(&inline_spl_token_v2_0::id()), 100);
let original_capitalization = bank.capitalization(); let original_capitalization = bank.capitalization();
bank.apply_spl_token_v2_multisig_fix(); bank.apply_spl_token_v2_self_transfer_fix();
// Account is now empty, and the account lamports were burnt // Account is now empty, and the account lamports were burnt
assert_eq!(bank.get_balance(&inline_spl_token_v2_0::id()), 0); assert_eq!(bank.get_balance(&inline_spl_token_v2_0::id()), 0);

View File

@ -170,6 +170,10 @@ pub mod track_writable_deescalation {
solana_sdk::declare_id!("HVPSxqskEtRLRT2ZeEMmkmt9FWqoFX4vrN6f5VaadLED"); solana_sdk::declare_id!("HVPSxqskEtRLRT2ZeEMmkmt9FWqoFX4vrN6f5VaadLED");
} }
pub mod spl_token_v2_self_transfer_fix {
solana_sdk::declare_id!("BL99GYhdjjcv6ys22C9wPgn2aTVERDbPHHo4NbS3hgp7");
}
lazy_static! { lazy_static! {
/// Map of feature identifiers to user-visible description /// Map of feature identifiers to user-visible description
pub static ref FEATURE_NAMES: HashMap<Pubkey, &'static str> = [ pub static ref FEATURE_NAMES: HashMap<Pubkey, &'static str> = [
@ -211,6 +215,7 @@ lazy_static! {
(full_inflation::candidate_example::vote::id(), "community vote allowing candidate_example to enable full inflation"), (full_inflation::candidate_example::vote::id(), "community vote allowing candidate_example to enable full inflation"),
(full_inflation::candidate_example::enable::id(), "full inflation enabled by candidate_example"), (full_inflation::candidate_example::enable::id(), "full inflation enabled by candidate_example"),
(track_writable_deescalation::id(), "track account writable deescalation"), (track_writable_deescalation::id(), "track account writable deescalation"),
(spl_token_v2_self_transfer_fix::id(), "spl-token self-transfer fix"),
/*************** ADD NEW FEATURES HERE ***************/ /*************** ADD NEW FEATURES HERE ***************/
] ]
.iter() .iter()