Trait solana_sdk::process_instruction::InvokeContext[][src]

pub trait InvokeContext {
Show 20 methods fn push(
        &mut self,
        key: &Pubkey,
        keyed_accounts: &[(bool, bool, &Pubkey, &RefCell<AccountSharedData>)]
    ) -> Result<(), InstructionError>;
fn pop(&mut self);
fn invoke_depth(&self) -> usize;
fn verify_and_update(
        &mut self,
        instruction: &CompiledInstruction,
        accounts: &[(Pubkey, Rc<RefCell<AccountSharedData>>)],
        write_privileges: &[bool]
    ) -> Result<(), InstructionError>;
fn get_caller(&self) -> Result<&Pubkey, InstructionError>;
fn remove_first_keyed_account(&mut self) -> Result<(), InstructionError>;
fn get_keyed_accounts(
        &self
    ) -> Result<&[KeyedAccount<'_>], InstructionError>;
fn get_programs(&self) -> &[(Pubkey, ProcessInstructionWithContext)];
fn get_logger(&self) -> Rc<RefCell<dyn Logger>>;
fn get_bpf_compute_budget(&self) -> &BpfComputeBudget;
fn get_compute_meter(&self) -> Rc<RefCell<dyn ComputeMeter>>;
fn add_executor(&self, pubkey: &Pubkey, executor: Arc<dyn Executor>);
fn get_executor(&self, pubkey: &Pubkey) -> Option<Arc<dyn Executor>>;
fn record_instruction(&self, instruction: &Instruction);
fn is_feature_active(&self, feature_id: &Pubkey) -> bool;
fn get_account(
        &self,
        pubkey: &Pubkey
    ) -> Option<Rc<RefCell<AccountSharedData>>>;
fn update_timing(
        &mut self,
        serialize_us: u64,
        create_vm_us: u64,
        execute_us: u64,
        deserialize_us: u64
    );
fn get_sysvar_data(&self, id: &Pubkey) -> Option<Rc<Vec<u8>>>;
fn set_return_data(&mut self, return_data: Option<(Pubkey, Vec<u8>)>);
fn get_return_data(&self) -> &Option<(Pubkey, Vec<u8>)>;
}
Expand description

Invocation context passed to loaders

Required methods

Push a stack frame onto the invocation stack

Used in MessageProcessor::process_cross_program_instruction

Pop a stack frame from the invocation stack

Used in MessageProcessor::process_cross_program_instruction

Current depth of the invocation stake

Verify and update PreAccount state based on program execution

Get the program ID of the currently executing program

Removes the first keyed account

Get the list of keyed accounts

Get a list of built-in programs

Get this invocation’s logger

Get this invocation’s compute budget

Get this invocation’s compute meter

Loaders may need to do work in order to execute a program. Cache the work that can be re-used across executions

Get the completed loader work that can be re-used across executions

Record invoked instruction

Get the bank’s active feature set

Get an account by its key

Update timing

Get sysvar data

Set the return data

Get the return data

Implementors