MakeExecutable
Index: 2
Sets the account as executable, marking it as a program.
Below, within the Instruction data
field, we find a local variable instruction_data
that contains vec![2]
, the correct index for making a call to SystemProgram::MakeExecutable
.
let instruction_data = vec![2];
let instruction = Instruction {
program_id: Pubkey::system_program(),
accounts: vec![AccountMeta {
pubkey,
is_signer: true,
is_writable: true,
}],
data: instruction_data,
}
We can proceed to confirm that the program is executable with read_account_info which returns an AccountInfoResult that gets parsed to obtain the is_executable
value.
assert!(
read_account_info("node_url", program_pubkey)
.unwrap()
.is_executable
);