Кратко
Базовые программы обеспечивают фундаментальную функциональность сети: управление аккаунтами (System Program), консенсус (Vote, Stake), оптимизацию транзакций (Compute Budget, Address Lookup Table) и приватность (ZK ElGamal Proof). Включает справочник инструкций System Program и ссылки на исходный код всех 7 программ.
System Program
System Program (11111111111111111111111111111111) — единственная программа,
которая может создавать новые аккаунты. Все новые аккаунты изначально
принадлежат System Program, однако право собственности обычно передаётся при
создании. System Program потребляет
DEFAULT_COMPUTE_UNITS
(150 CU) за инструкцию.
Справочник инструкций System Program
| Инструкция | Описание |
|---|---|
CreateAccount | Создаёт новый аккаунт. Выделяет space байт, назначает owner и переводит lamports от плательщика. Новый аккаунт и плательщик должны подписать. |
CreateAccountWithSeed | То же, что и CreateAccount, но адрес нового аккаунта вычисляется на основе pubkey аккаунта, seed-строки и программы-владельца. Аккаунт, pubkey которого использован для вычисления адреса, и плательщик должны подписать. |
Assign | Устанавливает владельца аккаунта. Аккаунт должен подписать. Если уже установлен этот владелец — ничего не происходит. |
AssignWithSeed | То же, что и Assign, но для адреса, полученного через seed. Аккаунт, pubkey которого использован для вычисления адреса, должен подписать. |
Transfer | Переводит лампорты между аккаунтами. Отправитель должен подписать. |
TransferWithSeed | То же, что и Transfer, но с адреса, полученного через seed. Аккаунт, pubkey которого использован для вычисления адреса, должен подписать. |
Allocate | Устанавливает длину данных аккаунта. Аккаунт должен подписать, иметь пустые данные и принадлежать System Program. Максимум 10 МБ. |
AllocateWithSeed | То же, что и Allocate, но для адреса, полученного через seed. Также назначает владельца. Аккаунт, pubkey которого использован для вычисления адреса, должен подписать. |
AdvanceNonceAccount | Продвигает значение nonce до текущего blockhash. Владелец nonce должен подписать. |
InitializeNonceAccount | Инициализирует аккаунт как nonce-аккаунт с указанным владельцем. Аккаунт должен быть освобождён от rent. |
AuthorizeNonceAccount | Меняет владельца nonce. Текущий владелец должен подписать. |
WithdrawNonceAccount | Выводит лампорты с nonce-аккаунта. Владелец должен подписать. Если аккаунт не закрывается, остаток должен покрывать rent. |
UpgradeNonceAccount | Обновляет nonce-аккаунт с устаревшей версии до текущего формата. Аккаунт должен быть доступен для записи и содержать устаревшую версию nonce. |
Все основные программы
| Программа | Program ID | Описание | Исходный код |
|---|---|---|---|
| System | 11111111111111111111111111111111 | Создаёт аккаунты, переводит SOL, выделяет данные и назначает владельцев | Source |
| Vote | Vote111111111111111111111111111111111111111 | Создаёт и управляет аккаунтами, отслеживающими состояние голосования валидаторов и награды | Source |
| Stake | Stake11111111111111111111111111111111111111 | Создаёт и управляет делегированием стейка валидаторам | Source |
| Config | Config1111111111111111111111111111111111111 | Хранит конфигурационные данные в блокчейне с контролем доступа по ключу | Source |
| Compute Budget | ComputeBudget111111111111111111111111111111 | Устанавливает лимиты вычислительных единиц и приоритетные комиссии для транзакций | Source |
| Address Lookup Table | AddressLookupTab1e1111111111111111111111111 | Управляет таблицами поиска адресов для транзакций с большим числом аккаунтов | Source |
| ZK ElGamal Proof | ZkE1Gama1Proof11111111111111111111111111111 | Проверяет доказательства с нулевым разглашением для данных, зашифрованных по ElGamal | Source |
Загрузочные программы
Каждая программа принадлежит загрузочной программе. Загрузчики отвечают за развёртывание, обновление и выполнение принадлежащих им программ. Полный список загрузчиков и их адресов смотрите в разделе Загрузочные программы.
Is this page helpful?