Summary
Core programs provide fundamental network functionality: account management (System Program), consensus (Vote, Stake), transaction optimization (Compute Budget, Address Lookup Table), and privacy (ZK ElGamal Proof). Includes System Program instruction reference and source links for all 7 programs.
The System Program
The System Program (11111111111111111111111111111111) is the only program that
can create new accounts. All new accounts are initially owned by the System
Program, though ownership is typically reassigned upon creation. The System
Program consumes
DEFAULT_COMPUTE_UNITS
(150 CUs) per instruction.
System Program instruction reference
| Instruction | Description |
|---|---|
CreateAccount | Creates a new account. Allocates space bytes, assigns owner, and transfers lamports from the payer. The new account and the payer must sign. |
CreateAccountWithSeed | Same as CreateAccount, but derives the new account's address from an account's pubkey, a seed string, and the owner program. The account whose pubkey was used to derive the address and the payer must sign. |
Assign | Sets the account's owner. Account must sign. No-op if already that owner. |
AssignWithSeed | Same as Assign, but for a seed-derived address. The account whose pubkey was used to derive the address must sign. |
Transfer | Transfers lamports between accounts. The sender must sign. |
TransferWithSeed | Same as Transfer, but from a seed-derived address. The account whose pubkey was used to derive the address must sign. |
Allocate | Sets the account's data length. Account must sign, have empty data, and be owned by System Program. Maximum 10 MiB. |
AllocateWithSeed | Same as Allocate, but for a seed-derived address. Also assigns the owner. The account whose pubkey was used to derive the address must sign. |
AdvanceNonceAccount | Advances the nonce value to the current blockhash. Nonce authority must sign. |
InitializeNonceAccount | Initializes an account as a nonce account with the given authority. Account must be rent-exempt. |
AuthorizeNonceAccount | Changes the nonce authority. Current authority must sign. |
WithdrawNonceAccount | Withdraws lamports from a nonce account. Authority must sign. If not closing, remaining balance must cover rent. |
UpgradeNonceAccount | Upgrades a nonce account from legacy to current version format. Account must be writable and contain a legacy nonce version. |
All core programs
| Program | Program ID | Description | Source |
|---|---|---|---|
| System | 11111111111111111111111111111111 | Creates accounts, transfers SOL, allocates data, and assigns ownership | Source |
| Vote | Vote111111111111111111111111111111111111111 | Creates and manages accounts that track validator voting state and rewards | Source |
| Stake | Stake11111111111111111111111111111111111111 | Creates and manages stake delegations to validators | Source |
| Config | Config1111111111111111111111111111111111111 | Stores configuration data on-chain with key-based access control | Source |
| Compute Budget | ComputeBudget111111111111111111111111111111 | Sets compute unit limits and priority fees for transactions | Source |
| Address Lookup Table | AddressLookupTab1e1111111111111111111111111 | Manages address lookup tables for transactions that reference many accounts | Source |
| ZK ElGamal Proof | ZkE1Gama1Proof11111111111111111111111111111 | Verifies zero-knowledge proofs for ElGamal-encrypted data | Source |
Loader programs
Every program is owned by a loader program. Loaders handle deployment, upgrade, and execution of the programs they own. See Loader Programs for the full list of loaders and their addresses.
Is this page helpful?