use {
pinocchio::{
entrypoint::{InstructionContext, MaybeAccount},
error::ProgramError,
ProgramResult,
},
solana_program_log::log,
};
pub fn process_instruction(mut context: InstructionContext) -> ProgramResult {
let mut missing_required_signature = false;
if context.remaining() > 0 {
log!("Signed by:");
while context.remaining() > 0 {
if let MaybeAccount::Account(account) = context.next_account()? {
if account.is_signer() {
#[cfg(any(target_os = "solana", target_arch = "bpf"))]
unsafe {
pinocchio::syscalls::sol_log_pubkey(account.address().as_array().as_ptr())
};
} else {
missing_required_signature = true;
}
}
}
if missing_required_signature {
return Err(ProgramError::MissingRequiredSignature);
}
}
let instruction_data = unsafe { context.instruction_data_unchecked() };
log!("Memo (len {})", instruction_data.len());
#[cfg(any(target_os = "solana", target_arch = "bpf"))]
unsafe {
pinocchio::syscalls::sol_log_(instruction_data.as_ptr(), instruction_data.len() as u64);
}
Ok(())
}