Learn more about Mintlify
Enter your email to receive updates about new features and product releases.
Reference for Anchor’s Rust macros including
#[program] pub mod my_program { use super::*; pub fn initialize(ctx: Context<Initialize>) -> Result<()> { // Instruction logic Ok(()) } }
declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
#[derive(Accounts)] pub struct Initialize<'info> { #[account(init, payer = user, space = 8 + 8)] pub data: Account<'info, Data>, #[account(mut)] pub user: Signer<'info>, pub system_program: Program<'info, System>, }
#[account] pub struct Data { pub value: u64, }
#[event] pub struct DataUpdated { pub old_value: u64, pub new_value: u64, }
emit!(DataUpdated { old_value: 0, new_value: 42, });
#[error_code] pub enum ErrorCode { #[msg("Invalid authority")] InvalidAuthority, #[msg("Insufficient funds")] InsufficientFunds, }
require!(ctx.accounts.user.key() == ctx.accounts.data.authority, ErrorCode::InvalidAuthority);
require_keys_eq!(ctx.accounts.user.key(), ctx.accounts.data.authority);