solana_runtime/bank/builtins/
prototypes.rs

1use {
2    super::core_bpf_migration::CoreBpfMigrationConfig,
3    solana_program_runtime::invoke_context::BuiltinFunctionWithContext, solana_sdk::pubkey::Pubkey,
4};
5
6/// Transitions of built-in programs at epoch boundaries when features are activated.
7pub struct BuiltinPrototype {
8    pub(crate) core_bpf_migration_config: Option<CoreBpfMigrationConfig>,
9    pub enable_feature_id: Option<Pubkey>,
10    pub program_id: Pubkey,
11    pub name: &'static str,
12    pub entrypoint: BuiltinFunctionWithContext,
13}
14
15impl std::fmt::Debug for BuiltinPrototype {
16    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
17        let mut builder = f.debug_struct("BuiltinPrototype");
18        builder.field("program_id", &self.program_id);
19        builder.field("name", &self.name);
20        builder.field("enable_feature_id", &self.enable_feature_id);
21        builder.field("core_bpf_migration_config", &self.core_bpf_migration_config);
22        builder.finish()
23    }
24}
25
26/// Transitions of stateless built-in programs at epoch boundaries when
27/// features are activated.
28/// These are built-in programs that don't actually exist, but their address
29/// is reserved.
30#[derive(Debug)]
31pub struct StatelessBuiltinPrototype {
32    pub(crate) core_bpf_migration_config: Option<CoreBpfMigrationConfig>,
33    pub program_id: Pubkey,
34    pub name: &'static str,
35}