Writing an instruction: create
In the previous sections, we have defined our program's main data structure VestingContract.
The next step is to write our program's one of two main primitives: create.
We'll start by renaming the src/processor/example_instr.rs file to create.rs.
Similarly we'll rename the ExampleInstr variant of the instruction::ProgramInstruction enum to Create, and the instruction::example binding to create.
We should also alter the log message in processor.rs from "Instruction: Example Instruction" to "Instruction: Create", and update the instruction comment at the top of create.rs to //! Create a new token vesting contract.
This primitive will perform several operations:
- Initialize a new
VestingContractaccount/object. - Configure the
VestingContractwith user-provided parameters. - Transfer funds into the program vault.
An instruction's specification is defined by its Accounts and Params objects. Let's start by thinking about what kinds of accounts we'll need, and then we'll take a look at the associated parameters.