Trait solana_sdk::process_instruction::InvokeContext [−][src]
pub trait InvokeContext {
Show 16 methods
fn push(&mut self, key: &Pubkey) -> Result<(), InstructionError>;
fn pop(&mut self);
fn invoke_depth(&self) -> usize;
fn verify_and_update(
&mut self,
message: &Message,
instruction: &CompiledInstruction,
accounts: &[Rc<RefCell<AccountSharedData>>],
caller_pivileges: Option<&[bool]>
) -> Result<(), InstructionError>;
fn get_caller(&self) -> Result<&Pubkey, 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>>>;
}
Expand description
Invocation context passed to loaders
Required methods
Push a program ID on to the invocation stack
fn invoke_depth(&self) -> usize
fn invoke_depth(&self) -> usize
Current depth of the invocation stake
fn verify_and_update(
&mut self,
message: &Message,
instruction: &CompiledInstruction,
accounts: &[Rc<RefCell<AccountSharedData>>],
caller_pivileges: Option<&[bool]>
) -> Result<(), InstructionError>
fn verify_and_update(
&mut self,
message: &Message,
instruction: &CompiledInstruction,
accounts: &[Rc<RefCell<AccountSharedData>>],
caller_pivileges: Option<&[bool]>
) -> Result<(), InstructionError>
Verify and update PreAccount state based on program execution
fn get_caller(&self) -> Result<&Pubkey, InstructionError>
fn get_caller(&self) -> Result<&Pubkey, InstructionError>
Get the program ID of the currently executing program
fn get_programs(&self) -> &[(Pubkey, ProcessInstructionWithContext)]
fn get_programs(&self) -> &[(Pubkey, ProcessInstructionWithContext)]
Get a list of built-in programs
fn get_logger(&self) -> Rc<RefCell<dyn Logger>>
fn get_logger(&self) -> Rc<RefCell<dyn Logger>>
Get this invocation’s logger
fn get_bpf_compute_budget(&self) -> &BpfComputeBudget
fn get_bpf_compute_budget(&self) -> &BpfComputeBudget
Get this invocation’s compute budget
fn get_compute_meter(&self) -> Rc<RefCell<dyn ComputeMeter>>
fn get_compute_meter(&self) -> Rc<RefCell<dyn ComputeMeter>>
Get this invocation’s compute meter
fn add_executor(&self, pubkey: &Pubkey, executor: Arc<dyn Executor>)
fn add_executor(&self, pubkey: &Pubkey, executor: Arc<dyn Executor>)
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
fn record_instruction(&self, instruction: &Instruction)
fn record_instruction(&self, instruction: &Instruction)
Record invoked instruction
fn is_feature_active(&self, feature_id: &Pubkey) -> bool
fn is_feature_active(&self, feature_id: &Pubkey) -> bool
Get the bank’s active feature set
fn get_account(&self, pubkey: &Pubkey) -> Option<Rc<RefCell<AccountSharedData>>>
fn get_account(&self, pubkey: &Pubkey) -> Option<Rc<RefCell<AccountSharedData>>>
Get an account from a pre-account
Update timing