Refactor: Remove Message and CompiledInstruction from InvokeContext interfaces (#22102)

* Introduces InstructionAccount which is like AccountMeta but uses an index instead of a Pubkey

* Renames InvokeContext::create_message() to InvokeContext::prepare_instruction()

* Removes Message and CompiledInstruction from InvokeContext interfaces.

* Resolves TODOs of sol_invoke_signed() in program-test.

* Moves CompiledInstruction::visit_each_account() into invoke_context.rs
This commit is contained in:
Alexander Meißner
2021-12-24 16:17:55 +01:00
committed by GitHub
parent 214b561a28
commit 2ab4f34c02
7 changed files with 458 additions and 583 deletions

View File

@ -208,21 +208,11 @@ native machine code before execting it in the virtual machine.",
input.instruction_data
}
};
let preparation = prepare_mock_invoke_context(transaction_accounts, instruction_accounts);
let program_indices = [0, 1];
let preparation = prepare_mock_invoke_context(
&program_indices,
&[],
transaction_accounts,
instruction_accounts,
);
let mut invoke_context = InvokeContext::new_mock(&preparation.accounts, &[]);
let mut invoke_context = InvokeContext::new_mock(&preparation.transaction_accounts, &[]);
invoke_context
.push(
&preparation.message,
&preparation.message.instructions[0],
&program_indices,
&preparation.account_indices,
)
.push(&preparation.instruction_accounts, &program_indices)
.unwrap();
let keyed_accounts = invoke_context.get_keyed_accounts().unwrap();
let (mut parameter_bytes, account_lengths) = serialize_parameters(