Build on Solana
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
Anonymous
You need to enroll in the course to be able to comment!