Learn everything about Solana
Counter II - Implementing Process Instruction
Counter II - Implementing Process Instruction
In this lesson, we are going to see how we can implement the process_instruction function which defines how our smart contract handles user inputs.
Here is the changes we have made to lib.rs in this video:
entrypoint!(process_instruction);
pub fn process_instruction(
_program_id: &Pubkey,
accounts: &[AccountInfo],
instructions_data: &[u8],
) -> ProgramResult {
msg!("Counter program entry point");
let instruction: CounterInstructions = CounterInstructions::unpack(instructions_data)?;
let accounts_iter = &mut accounts.iter();
let account = next_account_info(accounts_iter)?;
let mut counter_account = CounterAccount::try_from_slice(&account.data.borrow())?;
match instruction {
CounterInstructions::Increment => {
counter_account.counter += 1;
}
CounterInstructions::Decrement => {
counter_account.counter -= 1;
}
CounterInstructions::Reset => {
counter_account.counter = 0;
}
CounterInstructions::Update(args) => {
counter_account.counter = args.value;
}
}
counter_account.serialize(&mut &mut account.data.borrow_mut()[..])?;
Ok(())
}
Comments
You need to enroll in the course to be able to comment!