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);