From ea34eb8a4bf455423d10d8be14f17d82bb77a8f6 Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Sun, 19 Sep 2021 14:50:41 -0500 Subject: [PATCH] Update feature switch for reduced required deploy balance (#19999) --- programs/bpf_loader/src/lib.rs | 9 ++++++--- sdk/src/feature_set.rs | 5 +++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index 2a5278e2c4..ba24d4f454 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -32,7 +32,7 @@ use solana_sdk::{ entrypoint::{HEAP_LENGTH, SUCCESS}, feature_set::{ add_missing_program_error_mappings, close_upgradeable_program_accounts, fix_write_privs, - stop_verify_mul64_imm_nonzero, + reduce_required_deploy_balance, stop_verify_mul64_imm_nonzero, }, ic_logger_msg, ic_msg, instruction::{AccountMeta, InstructionError}, @@ -390,7 +390,10 @@ fn process_loader_upgradeable_instruction( return Err(InstructionError::InvalidArgument); } - if invoke_context.is_feature_active(&fix_write_privs::id()) { + let predrain_buffer = invoke_context + .is_feature_active(&reduce_required_deploy_balance::id()) + && invoke_context.is_feature_active(&fix_write_privs::id()); + if predrain_buffer { // Drain the Buffer account to payer before paying for programdata account payer .try_account_ref_mut()? @@ -448,7 +451,7 @@ fn process_loader_upgradeable_instruction( })?; program.try_account_ref_mut()?.set_executable(true); - if !invoke_context.is_feature_active(&fix_write_privs::id()) { + if !predrain_buffer { // Drain the Buffer account back to the payer payer .try_account_ref_mut()? diff --git a/sdk/src/feature_set.rs b/sdk/src/feature_set.rs index 1f8272e060..6efe4726db 100644 --- a/sdk/src/feature_set.rs +++ b/sdk/src/feature_set.rs @@ -207,6 +207,10 @@ pub mod fix_write_privs { solana_sdk::declare_id!("7Tr5C1tdcCeBVD8jxtHYnvjL1DGdFboYBHCJkEFdenBb"); } +pub mod reduce_required_deploy_balance { + solana_sdk::declare_id!("EBeznQDjcPG8491sFsKZYBi5S5jTVXMpAKNDJMQPS2kq"); +} + lazy_static! { /// Map of feature identifiers to user-visible description pub static ref FEATURE_NAMES: HashMap = [ @@ -254,6 +258,7 @@ lazy_static! { (check_seed_length::id(), "Check program address seed lengths"), (return_data_syscall_enabled::id(), "enable sol_{set,get}_return_data syscall"), (fix_write_privs::id(), "fix native invoke write privileges"), + (reduce_required_deploy_balance::id(), "reduce required payer balance for program deploys"), /*************** ADD NEW FEATURES HERE ***************/ ] .iter()