* Inlines MessageProcessor::execute_instruction() in MessageProcessor::process_message(). * Moves MessageProcessor::create_pre_accounts() into ThisInvokeContext::push(). * Move instruction_recorders slice into InvokeContext. * Makes account_indices optional in InvokeContext::push(). * Separates initial InvokeContext::push() from ThisInvokeContext::new(). * invoke_context.pop() the base invocation frame. * Zip message.instructions.iter() and program_indices.iter(). * Moves ThisInvokeContext::new() to the beginning of the loop inside MessageProcessor::process_message(). * Hoists ThisInvokeContext::new() out of loop inside MessageProcessor::process_message(). * Removes unnecessary clone() from ThisInvokeContext::new() in MessageProcessor ::process_message(). * Stop ignoring errors from MessageProcessor::create_pre_accounts(). * Moves MessageProcessor::verify_account_references() and MessageProcessor::verify() into InvokeContext::verify().
Solana SDK
Use the Solana SDK Crate to write client side applications in Rust. If writing on-chain programs, use the Solana Program Crate instead.
More information about Solana is available in the Solana documentation.
The Solana Program Library provides examples of how to use this crate.
Still have questions? Ask us on Discord