Macro solana_sdk::declare_program [−][src]
macro_rules! declare_program { ($bs58_string:expr, $name:ident, $entrypoint:expr) => { ... }; }
Expand description
Convenience macro to declare a native program
bs58_string: bs58 string representation the program’s id
name: Name of the program
filename: must match the library name in Cargo.toml
entrypoint: Program’s entrypoint, must be of type Entrypoint
id: Path to the program id access function, used if this macro is not
called in src/lib
Examples
use std::str::FromStr; use solana_sdk::{ declare_program, instruction::InstructionError, keyed_account::KeyedAccount, process_instruction::InvokeContext, pubkey::Pubkey, }; fn my_process_instruction( program_id: &Pubkey, keyed_accounts: &[KeyedAccount], instruction_data: &[u8], invoke_context: &mut dyn InvokeContext, ) -> Result<(), InstructionError> { // Process an instruction Ok(()) } declare_program!( "My11111111111111111111111111111111111111111", solana_my_program, my_process_instruction ); let my_id = Pubkey::from_str("My11111111111111111111111111111111111111111").unwrap(); assert_eq!(id(), my_id);
use std::str::FromStr; use solana_sdk::{ declare_program, instruction::InstructionError, keyed_account::KeyedAccount, process_instruction::InvokeContext, pubkey::Pubkey, }; fn my_process_instruction( program_id: &Pubkey, keyed_accounts: &[KeyedAccount], instruction_data: &[u8], invoke_context: &mut dyn InvokeContext, ) -> Result<(), InstructionError> { // Process an instruction Ok(()) } declare_program!( solana_sdk::system_program::ID, solana_my_program, my_process_instruction ); assert_eq!(id(), solana_sdk::system_program::ID);