Skip to main content

magicblock_magic_program_api/
lib.rs

1pub mod args;
2pub mod instruction;
3pub mod pda;
4pub mod response;
5
6pub use solana_program::{declare_id, pubkey, pubkey::Pubkey};
7
8declare_id!("Magic11111111111111111111111111111111111111");
9
10pub const CRANK_PROGRAM_ID: Pubkey =
11    pubkey!("Crank11111111111111111111111111111111111111");
12
13pub const CALLBACK_PROGRAM_ID: Pubkey =
14    pubkey!("CaLLback11111111111111111111111111111111111");
15
16pub const MAGIC_CONTEXT_PUBKEY: Pubkey =
17    pubkey!("MagicContext1111111111111111111111111111111");
18
19/// Vault account that collects rent for ephemeral accounts.
20pub const EPHEMERAL_VAULT_PUBKEY: Pubkey =
21    pubkey!("MagicVau1t999999999999999999999999999999999");
22
23/// We believe 5MB should be enough to store all scheduled commits within a
24/// slot. Once we store more data in the magic context we need to reconsicer
25/// this size.
26/// NOTE: the default max accumulated account size per transaction is 64MB.
27/// See: MAX_LOADED_ACCOUNTS_DATA_SIZE_BYTES inside program-runtime/src/compute_budget_processor.rs
28pub const MAGIC_CONTEXT_SIZE: usize = 1024 * 1024 * 5; // 5 MB
29
30/// Rent rate for ephemeral accounts: 32 lamports per byte.
31/// This is ~109x cheaper than Solana's base rent (3,480 lamports/byte).
32pub const EPHEMERAL_RENT_PER_BYTE: u64 = 32;