|
1 |
| -use { |
2 |
| - solana_program_runtime::invoke_context::BuiltinFunctionWithContext, |
3 |
| - solana_sdk::{ |
4 |
| - bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, feature_set, pubkey::Pubkey, |
5 |
| - }, |
6 |
| -}; |
7 |
| - |
8 |
| -/// Transitions of built-in programs at epoch bondaries when features are activated. |
9 |
| -pub struct BuiltinPrototype { |
10 |
| - pub feature_id: Option<Pubkey>, |
11 |
| - pub program_id: Pubkey, |
12 |
| - pub name: &'static str, |
13 |
| - pub entrypoint: BuiltinFunctionWithContext, |
14 |
| -} |
| 1 | +pub mod prototypes; |
15 | 2 |
|
16 |
| -impl 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)] |
27 |
| -impl solana_frozen_abi::abi_example::AbiExample for BuiltinPrototype { |
28 |
| - fn example() -> Self { |
29 |
| - // BuiltinPrototype isn't serializable by definition. |
30 |
| - solana_program_runtime::declare_process_instruction!(MockBuiltin, 0, |_invoke_context| { |
31 |
| - // Do nothing |
32 |
| - Ok(()) |
33 |
| - }); |
34 |
| - Self { |
35 |
| - feature_id: None, |
36 |
| - program_id: Pubkey::default(), |
37 |
| - name: "", |
38 |
| - entrypoint: MockBuiltin::vm, |
39 |
| - } |
40 |
| - } |
41 |
| -} |
| 3 | +pub use prototypes::{BuiltinPrototype, StatelessBuiltinPrototype}; |
| 4 | +use solana_sdk::{bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, feature_set}; |
42 | 5 |
|
43 | 6 | pub static BUILTINS: &[BuiltinPrototype] = &[
|
44 | 7 | BuiltinPrototype {
|
45 |
| - feature_id: None, |
| 8 | + enable_feature_id: None, |
46 | 9 | program_id: solana_system_program::id(),
|
47 | 10 | name: "system_program",
|
48 | 11 | entrypoint: solana_system_program::system_processor::Entrypoint::vm,
|
49 | 12 | },
|
50 | 13 | BuiltinPrototype {
|
51 |
| - feature_id: None, |
| 14 | + enable_feature_id: None, |
52 | 15 | program_id: solana_vote_program::id(),
|
53 | 16 | name: "vote_program",
|
54 | 17 | entrypoint: solana_vote_program::vote_processor::Entrypoint::vm,
|
55 | 18 | },
|
56 | 19 | BuiltinPrototype {
|
57 |
| - feature_id: None, |
| 20 | + enable_feature_id: None, |
58 | 21 | program_id: solana_stake_program::id(),
|
59 | 22 | name: "stake_program",
|
60 | 23 | entrypoint: solana_stake_program::stake_instruction::Entrypoint::vm,
|
61 | 24 | },
|
62 | 25 | BuiltinPrototype {
|
63 |
| - feature_id: None, |
| 26 | + enable_feature_id: None, |
64 | 27 | program_id: solana_config_program::id(),
|
65 | 28 | name: "config_program",
|
66 | 29 | entrypoint: solana_config_program::config_processor::Entrypoint::vm,
|
67 | 30 | },
|
68 | 31 | BuiltinPrototype {
|
69 |
| - feature_id: None, |
| 32 | + enable_feature_id: None, |
70 | 33 | program_id: bpf_loader_deprecated::id(),
|
71 | 34 | name: "solana_bpf_loader_deprecated_program",
|
72 | 35 | entrypoint: solana_bpf_loader_program::Entrypoint::vm,
|
73 | 36 | },
|
74 | 37 | BuiltinPrototype {
|
75 |
| - feature_id: None, |
| 38 | + enable_feature_id: None, |
76 | 39 | program_id: bpf_loader::id(),
|
77 | 40 | name: "solana_bpf_loader_program",
|
78 | 41 | entrypoint: solana_bpf_loader_program::Entrypoint::vm,
|
79 | 42 | },
|
80 | 43 | BuiltinPrototype {
|
81 |
| - feature_id: None, |
| 44 | + enable_feature_id: None, |
82 | 45 | program_id: bpf_loader_upgradeable::id(),
|
83 | 46 | name: "solana_bpf_loader_upgradeable_program",
|
84 | 47 | entrypoint: solana_bpf_loader_program::Entrypoint::vm,
|
85 | 48 | },
|
86 | 49 | BuiltinPrototype {
|
87 |
| - feature_id: None, |
| 50 | + enable_feature_id: None, |
88 | 51 | program_id: solana_sdk::compute_budget::id(),
|
89 | 52 | name: "compute_budget_program",
|
90 | 53 | entrypoint: solana_compute_budget_program::Entrypoint::vm,
|
91 | 54 | },
|
92 | 55 | BuiltinPrototype {
|
93 |
| - feature_id: None, |
| 56 | + enable_feature_id: None, |
94 | 57 | program_id: solana_sdk::address_lookup_table::program::id(),
|
95 | 58 | name: "address_lookup_table_program",
|
96 | 59 | entrypoint: solana_address_lookup_table_program::processor::Entrypoint::vm,
|
97 | 60 | },
|
98 | 61 | BuiltinPrototype {
|
99 |
| - feature_id: Some(feature_set::zk_token_sdk_enabled::id()), |
| 62 | + enable_feature_id: Some(feature_set::zk_token_sdk_enabled::id()), |
100 | 63 | program_id: solana_zk_token_sdk::zk_token_proof_program::id(),
|
101 | 64 | name: "zk_token_proof_program",
|
102 | 65 | entrypoint: solana_zk_token_proof_program::Entrypoint::vm,
|
103 | 66 | },
|
104 | 67 | BuiltinPrototype {
|
105 |
| - feature_id: Some(feature_set::enable_program_runtime_v2_and_loader_v4::id()), |
| 68 | + enable_feature_id: Some(feature_set::enable_program_runtime_v2_and_loader_v4::id()), |
106 | 69 | program_id: solana_sdk::loader_v4::id(),
|
107 | 70 | name: "loader_v4",
|
108 | 71 | entrypoint: solana_loader_v4_program::Entrypoint::vm,
|
109 | 72 | },
|
110 | 73 | ];
|
| 74 | + |
| 75 | +pub static STATELESS_BUILTINS: &[StatelessBuiltinPrototype] = &[StatelessBuiltinPrototype { |
| 76 | + program_id: solana_sdk::feature::id(), |
| 77 | + name: "feature_gate_program", |
| 78 | +}]; |
0 commit comments