Add compute budget noops (backport #20992) (#21014)

* Add compute budget program as a noop (#20992)

(cherry picked from commit 1e2bef76e3)

# Conflicts:
#	sdk/src/feature_set.rs

* resolve conflicts

Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
mergify[bot]
2021-10-27 12:47:35 -07:00
committed by GitHub
parent de1f60fb2d
commit 66caead016
3 changed files with 60 additions and 1 deletions

View File

@ -14238,6 +14238,60 @@ pub(crate) mod tests {
assert_eq!(rent_debits.0.len(), 2);
}
#[test]
fn test_compute_budget_program_noop() {
solana_logger::setup();
let GenesisConfigInfo {
mut genesis_config,
mint_keypair,
..
} = create_genesis_config_with_leader(
1_000_000_000_000_000,
&Pubkey::new_unique(),
bootstrap_validator_stake_lamports(),
);
// activate all features except..
activate_all_features(&mut genesis_config);
genesis_config
.accounts
.remove(&feature_set::tx_wide_compute_cap::id());
genesis_config
.accounts
.remove(&feature_set::requestable_heap_size::id());
let mut bank = Bank::new(&genesis_config);
fn mock_ix_processor(
_pubkey: &Pubkey,
_data: &[u8],
invoke_context: &mut dyn InvokeContext,
) -> std::result::Result<(), InstructionError> {
let compute_budget = invoke_context.get_bpf_compute_budget();
assert_eq!(
*compute_budget,
BpfComputeBudget {
max_units: 200_000,
heap_size: None,
..BpfComputeBudget::default()
}
);
Ok(())
}
let program_id = solana_sdk::pubkey::new_rand();
bank.add_builtin("mock_program", program_id, mock_ix_processor);
let message = Message::new(
&[
compute_budget::request_units(1),
compute_budget::request_heap_frame(48 * 1024),
Instruction::new_with_bincode(program_id, &0, vec![]),
],
Some(&mint_keypair.pubkey()),
);
let tx = Transaction::new(&[&mint_keypair], message, bank.last_blockhash());
bank.process_transaction(&tx).unwrap();
}
#[test]
fn test_compute_request_instruction() {
solana_logger::setup();

View File

@ -94,7 +94,7 @@ fn feature_builtins() -> Vec<(Builtin, Pubkey, ActivationType)> {
solana_sdk::compute_budget::id(),
solana_compute_budget_program::process_instruction,
),
feature_set::tx_wide_compute_cap::id(),
feature_set::add_compute_budget_program::id(),
ActivationType::NewProgram,
),
(

View File

@ -247,6 +247,10 @@ pub mod requestable_heap_size {
solana_sdk::declare_id!("CCu4boMmfLuqcmfTLPHQiUo22ZdUsXjgzPAURYaWt1Bw");
}
pub mod add_compute_budget_program {
solana_sdk::declare_id!("4d5AKtxoh93Dwm1vHXUU3iRATuMndx1c431KgT2td52r");
}
lazy_static! {
/// Map of feature identifiers to user-visible description
pub static ref FEATURE_NAMES: HashMap<Pubkey, &'static str> = [
@ -309,6 +313,7 @@ lazy_static! {
(sol_log_data_syscall_enabled::id(), "enable sol_log_data syscall"),
(ed25519_program_enabled::id(), "enable builtin ed25519 signature verify program"),
(requestable_heap_size::id(), "Requestable heap frame size"),
(add_compute_budget_program::id(), "Add compute_budget_program"),
/*************** ADD NEW FEATURES HERE ***************/
]
.iter()