Підсумок
Основні програми забезпечують фундаментальну функціональність мережі: управління обліковими записами (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 | Переказує lamports між обліковими записами. Відправник повинен підписати. |
TransferWithSeed | Те саме, що й Transfer, але з адреси, виведеної з seed. Обліковий запис, чий pubkey використовувався для виведення адреси, повинен підписати. |
Allocate | Встановлює довжину даних облікового запису. Обліковий запис повинен підписати, мати порожні дані та належати System Program. Максимум 10 МіБ. |
AllocateWithSeed | Те саме, що й Allocate, але для адреси, виведеної з seed. Також призначає власника. Обліковий запис, чий pubkey використовувався для виведення адреси, повинен підписати. |
AdvanceNonceAccount | Просуває значення nonce до поточного blockhash. Повноваження nonce повинні підписати. |
InitializeNonceAccount | Ініціалізує обліковий запис як nonce-обліковий запис із заданими повноваженнями. Обліковий запис повинен бути звільнений від rent. |
AuthorizeNonceAccount | Змінює повноваження nonce. Поточні повноваження повинні підписати. |
WithdrawNonceAccount | Знімає lamports з nonce-облікового запису. Повноваження повинні підписати. Якщо не закривається, залишок повинен покривати rent. |
UpgradeNonceAccount | Оновлює nonce-обліковий запис зі старого формату до поточної версії. Обліковий запис повинен бути доступним для запису та містити застарілу версію nonce. |
Усі основні програми
| Програма | ID програми | Опис | Джерело |
|---|---|---|---|
| System | 11111111111111111111111111111111 | Створює акаунти, переказує SOL, виділяє дані та призначає власність | Джерело |
| Vote | Vote111111111111111111111111111111111111111 | Створює та керує акаунтами, які відстежують стан голосування валідаторів та винагороди | Джерело |
| Stake | Stake11111111111111111111111111111111111111 | Створює та керує делегуванням стейку валідаторам | Джерело |
| Config | Config1111111111111111111111111111111111111 | Зберігає конфігураційні дані в блокчейні з контролем доступу на основі ключів | Джерело |
| Compute Budget | ComputeBudget111111111111111111111111111111 | Встановлює ліміти обчислювальних одиниць та пріоритетні комісії для транзакцій | Джерело |
| Address Lookup Table | AddressLookupTab1e1111111111111111111111111 | Керує таблицями пошуку адрес для транзакцій, які посилаються на багато акаунтів | Джерело |
| ZK ElGamal Proof | ZkE1Gama1Proof11111111111111111111111111111 | Перевіряє докази з нульовим розголошенням для даних, зашифрованих ElGamal | Джерело |
Програми-завантажувачі
Кожна програма належить програмі-завантажувачу. Завантажувачі обробляють розгортання, оновлення та виконання програм, якими вони володіють. Дивіться Програми-завантажувачі для повного списку завантажувачів та їхніх адрес.
Is this page helpful?