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