miraland_runtime/
builtins.rs1use {
2 miraland_program_runtime::invoke_context::BuiltinFunctionWithContext,
3 miraland_sdk::{
4 bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, feature_set, pubkey::Pubkey,
5 },
6};
7
8pub struct BuiltinPrototype {
10 pub feature_id: Option<Pubkey>,
11 pub program_id: Pubkey,
12 pub name: &'static str,
13 pub entrypoint: BuiltinFunctionWithContext,
14}
15
16impl std::fmt::Debug for BuiltinPrototype {
17 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
18 let mut builder = f.debug_struct("BuiltinPrototype");
19 builder.field("program_id", &self.program_id);
20 builder.field("name", &self.name);
21 builder.field("feature_id", &self.feature_id);
22 builder.finish()
23 }
24}
25
26#[cfg(RUSTC_WITH_SPECIALIZATION)]
27impl miraland_frozen_abi::abi_example::AbiExample for BuiltinPrototype {
28 fn example() -> Self {
29 miraland_program_runtime::declare_process_instruction!(MockBuiltin, 0, |_invoke_context| {
31 Ok(())
33 });
34 Self {
35 feature_id: None,
36 program_id: Pubkey::default(),
37 name: "",
38 entrypoint: MockBuiltin::vm,
39 }
40 }
41}
42
43pub static BUILTINS: &[BuiltinPrototype] = &[
44 BuiltinPrototype {
45 feature_id: None,
46 program_id: miraland_system_program::id(),
47 name: "system_program",
48 entrypoint: miraland_system_program::system_processor::Entrypoint::vm,
49 },
50 BuiltinPrototype {
51 feature_id: None,
52 program_id: miraland_vote_program::id(),
53 name: "vote_program",
54 entrypoint: miraland_vote_program::vote_processor::Entrypoint::vm,
55 },
56 BuiltinPrototype {
57 feature_id: None,
58 program_id: miraland_stake_program::id(),
59 name: "stake_program",
60 entrypoint: miraland_stake_program::stake_instruction::Entrypoint::vm,
61 },
62 BuiltinPrototype {
63 feature_id: None,
64 program_id: miraland_config_program::id(),
65 name: "config_program",
66 entrypoint: miraland_config_program::config_processor::Entrypoint::vm,
67 },
68 BuiltinPrototype {
69 feature_id: None,
70 program_id: bpf_loader_deprecated::id(),
71 name: "miraland_bpf_loader_deprecated_program",
72 entrypoint: miraland_bpf_loader_program::Entrypoint::vm,
73 },
74 BuiltinPrototype {
75 feature_id: None,
76 program_id: bpf_loader::id(),
77 name: "miraland_bpf_loader_program",
78 entrypoint: miraland_bpf_loader_program::Entrypoint::vm,
79 },
80 BuiltinPrototype {
81 feature_id: None,
82 program_id: bpf_loader_upgradeable::id(),
83 name: "miraland_bpf_loader_upgradeable_program",
84 entrypoint: miraland_bpf_loader_program::Entrypoint::vm,
85 },
86 BuiltinPrototype {
87 feature_id: None,
88 program_id: miraland_sdk::compute_budget::id(),
89 name: "compute_budget_program",
90 entrypoint: miraland_compute_budget_program::Entrypoint::vm,
91 },
92 BuiltinPrototype {
93 feature_id: None,
94 program_id: miraland_sdk::address_lookup_table::program::id(),
95 name: "address_lookup_table_program",
96 entrypoint: miraland_address_lookup_table_program::processor::Entrypoint::vm,
97 },
98 BuiltinPrototype {
99 feature_id: Some(feature_set::zk_token_sdk_enabled::id()),
100 program_id: miraland_zk_token_sdk::zk_token_proof_program::id(),
101 name: "zk_token_proof_program",
102 entrypoint: miraland_zk_token_proof_program::Entrypoint::vm,
103 },
104 BuiltinPrototype {
105 feature_id: Some(feature_set::enable_program_runtime_v2_and_loader_v4::id()),
106 program_id: miraland_sdk::loader_v4::id(),
107 name: "loader_v4",
108 entrypoint: miraland_loader_v4_program::Entrypoint::vm,
109 },
110];