solana_program

Module system_instruction

Source
Expand description

Instructions and constructors for the system program.

The system program is responsible for the creation of accounts and nonce accounts. It is responsible for transferring lamports from accounts owned by the system program, including typical user wallet accounts.

Account creation typically involves three steps: allocate space, transfer lamports for rent, assign to its owning program. The create_account function does all three at once. All new accounts must contain enough lamports to be rent exempt, or else the creation instruction will fail.

The accounts created by the system program can either be user-controlled, where the secret keys are held outside the blockchain, or they can be program derived addresses, where write access to accounts is granted by an owning program.

The system program ID is defined in system_program.

Most of the functions in this module construct an Instruction, that must be submitted to the runtime for execution, either via RPC, typically with RpcClient, or through cross-program invocation.

When invoking through CPI, the invoke or invoke_signed instruction requires all account references to be provided explicitly as AccountInfo values. The account references required are specified in the documentation for the SystemInstruction variants for each system program instruction, and these variants are linked from the documentation for their constructors.

Enums§

SystemError
SystemInstruction
An instruction to the system program.

Constants§

MAX_PERMITTED_ACCOUNTS_DATA_ALLOCATIONS_PER_TRANSACTION
Maximum permitted size of new allocations per transaction, in bytes.
MAX_PERMITTED_DATA_LENGTH
Maximum permitted size of account data (10 MiB).

Functions§

advance_nonce_account
Advance the value of a durable transaction nonce.
allocate
Allocate space for an account.
allocate_with_seed
assign
Assign ownership of an account from the system program.
assign_with_seed
authorize_nonce_account
Change the authority of a durable transaction nonce account.
create_account
Create an account.
create_account_with_seed
create_nonce_account
Create an account containing a durable transaction nonce.
create_nonce_account_with_seed
transfer
Transfer lamports from an account owned by the system program.
transfer_many
Transfer lamports from an account owned by the system program to multiple accounts.
transfer_with_seed
upgrade_nonce_account
One-time idempotent upgrade of legacy nonce versions in order to bump them out of chain blockhash domain.
withdraw_nonce_account
Withdraw lamports from a durable transaction nonce account.