diff --git a/Cargo.lock b/Cargo.lock index 2da7b5f..e40753c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2457,6 +2457,7 @@ dependencies = [ "solana-address-lookup-table-interface", "solana-address-lookup-table-program", "solana-bpf-loader-program", + "solana-builtins", "solana-clock", "solana-compute-budget", "solana-compute-budget-instruction", diff --git a/Cargo.toml b/Cargo.toml index 56523eb..4e998e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ solana-account = "2.2" solana-address-lookup-table-interface = "2.2" solana-address-lookup-table-program = "2.2" solana-bpf-loader-program = "2.2" +solana-builtins = "2.2" solana-clock = "2.2" solana-compute-budget = "2.2" solana-compute-budget-instruction = "2.2" diff --git a/crates/litesvm/Cargo.toml b/crates/litesvm/Cargo.toml index 3861e7d..ccc75ea 100644 --- a/crates/litesvm/Cargo.toml +++ b/crates/litesvm/Cargo.toml @@ -25,6 +25,7 @@ solana-account.workspace = true solana-address-lookup-table-interface.workspace = true solana-address-lookup-table-program.workspace = true solana-bpf-loader-program.workspace = true +solana-builtins.workspace = true solana-clock.workspace = true solana-compute-budget.workspace = true solana-compute-budget-instruction.workspace = true diff --git a/crates/litesvm/src/builtin.rs b/crates/litesvm/src/builtin.rs deleted file mode 100644 index ec87edf..0000000 --- a/crates/litesvm/src/builtin.rs +++ /dev/null @@ -1,87 +0,0 @@ -use solana_feature_set::{ - enable_loader_v4, zk_elgamal_proof_program_enabled, zk_token_sdk_enabled, -}; -use solana_program_runtime::invoke_context::BuiltinFunctionWithContext; -use solana_pubkey::Pubkey; - -pub(crate) struct BuiltinPrototype { - pub feature_id: Option, - pub program_id: Pubkey, - pub name: &'static str, - pub entrypoint: BuiltinFunctionWithContext, -} - -pub(crate) static BUILTINS: &[BuiltinPrototype] = &[ - BuiltinPrototype { - feature_id: None, - program_id: solana_system_program::id(), - name: "system_program", - entrypoint: solana_system_program::system_processor::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_vote_program::id(), - name: "vote_program", - entrypoint: solana_vote_program::vote_processor::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_stake_program::id(), - name: "stake_program", - entrypoint: solana_stake_program::stake_instruction::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_config_program::id(), - name: "config_program", - entrypoint: solana_config_program::config_processor::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_sdk_ids::bpf_loader_deprecated::id(), - name: "solana_bpf_loader_deprecated_program", - entrypoint: solana_bpf_loader_program::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_sdk_ids::bpf_loader::id(), - name: "solana_bpf_loader_program", - entrypoint: solana_bpf_loader_program::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_sdk_ids::bpf_loader_upgradeable::id(), - name: "solana_bpf_loader_upgradeable_program", - entrypoint: solana_bpf_loader_program::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_sdk_ids::compute_budget::id(), - name: "compute_budget_program", - entrypoint: solana_compute_budget_program::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: None, - program_id: solana_sdk_ids::address_lookup_table::id(), - name: "address_lookup_table_program", - entrypoint: solana_address_lookup_table_program::processor::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: Some(zk_token_sdk_enabled::id()), - program_id: solana_sdk_ids::zk_token_proof_program::id(), - name: "zk_token_proof_program", - entrypoint: solana_zk_token_proof_program::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: Some(enable_loader_v4::id()), - program_id: solana_sdk_ids::loader_v4::id(), - name: "loader_v4", - entrypoint: solana_loader_v4_program::Entrypoint::vm, - }, - BuiltinPrototype { - feature_id: Some(zk_elgamal_proof_program_enabled::id()), - program_id: solana_sdk_ids::zk_elgamal_proof_program::id(), - name: "zk_elgamal_proof_program", - entrypoint: solana_zk_elgamal_proof_program::Entrypoint::vm, - }, -]; diff --git a/crates/litesvm/src/lib.rs b/crates/litesvm/src/lib.rs index f1d0866..0706c54 100644 --- a/crates/litesvm/src/lib.rs +++ b/crates/litesvm/src/lib.rs @@ -260,6 +260,7 @@ use precompiles::load_precompiles; use qualifier_attr::qualifiers; use solana_bpf_loader_program::syscalls::create_program_runtime_environment_v1; use solana_bpf_loader_program::syscalls::create_program_runtime_environment_v2; +use solana_builtins::BUILTINS; use solana_compute_budget::compute_budget::ComputeBudget; use solana_compute_budget::compute_budget_limits::ComputeBudgetLimits; use solana_compute_budget_instruction::instructions_processor::process_compute_budget_instructions; @@ -317,7 +318,6 @@ use { use crate::{ accounts_db::AccountsDb, - builtin::BUILTINS, error::LiteSVMError, history::TransactionHistory, message_processor::process_message, @@ -330,7 +330,6 @@ pub mod error; pub mod types; mod accounts_db; -mod builtin; mod format_logs; mod history; mod message_processor; @@ -462,7 +461,7 @@ impl LiteSVM { fn set_builtins(&mut self) { BUILTINS.iter().for_each(|builtint| { if builtint - .feature_id + .enable_feature_id .map_or(true, |x| self.feature_set.is_active(&x)) { let loaded_program =