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 MAGIC_CONTEXT_PUBKEY: Pubkey =
14    pubkey!("MagicContext1111111111111111111111111111111");
15
16/// Vault account that collects rent for ephemeral accounts.
17pub const EPHEMERAL_VAULT_PUBKEY: Pubkey =
18    pubkey!("MagicVau1t999999999999999999999999999999999");
19
20/// We believe 5MB should be enough to store all scheduled commits within a
21/// slot. Once we store more data in the magic context we need to reconsicer
22/// this size.
23/// NOTE: the default max accumulated account size per transaction is 64MB.
24/// See: MAX_LOADED_ACCOUNTS_DATA_SIZE_BYTES inside program-runtime/src/compute_budget_processor.rs
25pub const MAGIC_CONTEXT_SIZE: usize = 1024 * 1024 * 5; // 5 MB
26
27/// Rent rate for ephemeral accounts: 32 lamports per byte.
28/// This is ~109x cheaper than Solana's base rent (3,480 lamports/byte).
29pub const EPHEMERAL_RENT_PER_BYTE: u64 = 32;