forked from solana-labs/solana
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add docs for the builtin programs (solana-labs#10359)
* Add docs for the builtin programs * Cleanup
- Loading branch information
Showing
2 changed files
with
62 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# Builtin Programs | ||
|
||
Solana contains a small handful of builtin programs, which are required to run | ||
validator nodes. Unlike third-party programs, the builtin programs are part of | ||
the validator implementation and can be upgraded as part of cluster upgrades. | ||
Upgrades may occur to add features, fix bugs, or improve performance. Interface | ||
changes to individual instructions should rarely, if ever, occur. Instead, when | ||
change is needed, new instructions are added and previous ones are marked | ||
deprecated. Apps can upgrade on their own timeline without concern of breakages | ||
across upgrades. | ||
|
||
The builtin programs include the System, Config, Stake, Vote, and BPFLoader | ||
programs. For each, we provide the program ID and describe each supported | ||
instruction. A transaction can mix and match instructions from different | ||
programs, as well include instructions from third-party programs. | ||
|
||
## System Program | ||
|
||
Create accounts and transfer lamports between them | ||
|
||
* Program ID: `11111111111111111111111111111111` | ||
* Instructions: [SystemInstruction](https://docs.rs/solana-sdk/LATEST_SOLANA_RELEASE_VERSION/solana_sdk/system_instruction/enum.SystemInstruction.html) | ||
|
||
## Config Program | ||
|
||
Add configuration data to the chain and the list of public keys that are permitted to modify it | ||
|
||
* Program ID: `Config1111111111111111111111111111111111111` | ||
* Instructions: [config_instruction](https://docs.rs/solana-config-program/LATEST_SOLANA_RELEASE_VERSION/solana_config_program/config_instruction/index.html) | ||
|
||
Unlike the other programs, the Config program does not define any individual | ||
instructions. It has just one implicit instruction, a "store" instruction. Its | ||
instruction data is a set of keys that gate access to the account, and the | ||
data to store in it. | ||
|
||
## Stake Program | ||
|
||
Create stake accounts and delegate it to validators | ||
|
||
* Program ID: `Stake11111111111111111111111111111111111111` | ||
* Instructions: [StakeInstruction](https://docs.rs/solana-stake-program/LATEST_SOLANA_RELEASE_VERSION/solana_stake_program/stake_instruction/enum.StakeInstruction.html) | ||
|
||
## Vote Program | ||
|
||
Create vote accounts and vote on blocks | ||
|
||
* Program ID: `Vote111111111111111111111111111111111111111` | ||
* Instructions: [VoteInstruction](https://docs.rs/solana-vote-program/LATEST_SOLANA_RELEASE_VERSION/solana_vote_program/vote_instruction/enum.VoteInstruction.html) | ||
|
||
## BPF Loader | ||
|
||
Add programs to the chain. | ||
|
||
* Program ID: `BPFLoader1111111111111111111111111111111111` | ||
* Instructions: [LoaderInstruction](https://docs.rs/solana-sdk/LATEST_SOLANA_RELEASE_VERSION/solana_sdk/loader_instruction/enum.LoaderInstruction.html) | ||
|
||
The BPF Loader marks itself as its "owner" of the executable account it | ||
creates to store your program. When a user invokes an instruction via a | ||
program ID, the Solana runtime will load both your executable account and its | ||
owner, the BPF Loader. The runtime then passes your program to the BPF Loader | ||
to process the instruction. |