Програма (smart contract) як автоматична інструкція для мережі

Уявіть, що ви хочете переказати криптовалюту другу. У традиційному банку це робить касир або комп'ютерна система банку. У блокчейні Solana цю роль виконує програма — набір правил, записаних кодом, який мережа виконує автоматично, без жодних посередників.

У світі блокчейну такі програми частіше називають смарт-контрактами (від англійського smart contract — «розумний контракт»). У Solana прийнято використовувати термін «програма», і це не просто інша назва — за цим стоїть інша архітектура, про яку ми поговоримо далі.

Головна ідея: програма — це інструкція, яка живе на блокчейні. Коли хтось надсилає транзакцію, що посилається на цю програму, валідатори (учасники мережі, які перевіряють і підтверджують транзакції) виконують цю інструкцію. Результат виконання однаковий для всіх валідаторів, тому мережа приходить до єдиної згоди щодо того, що саме відбулося.

Аналогія з автоматом для кави та технічний факт

Щоб краще зрозуміти, як працює програма, уявіть автомат із кавою.

Аналогія: автомат для кави. Ви кидаєте монету, натискаєте кнопку «еспресо» — і автомат сам перемелює зерна, проливає гарячу воду, видає чашку. Ніхто не стоїть між вами та кавою. Усе працює за фіксованою програмою, яку написав виробник. Якщо ви кинули правильну суму і натиснули правильну кнопку, ви отримаєте каву. Інакше — ні.

Технічний факт: програма в Solana. Програма в Solana — це скомпільований код, розміщений у блокчейні. Найчастіше його пишуть мовою програмування Rust, а потім компілюють у формат BPF (Berkeley Packet Filter — спеціальний формат байт-коду, який здатна виконувати віртуальна машина Solana). Коли користувач надсилає транзакцію, що вказує на цю програму, валідатори завантажують її код, виконують у своєму середовищі й приходять до однакового результату. Програма не «думає» і не «вирішує» — вона слідує алгоритму крок за кроком.

Різниця між аналогією та реальністю: автомат для кави — фізичний пристрій, який можна пошкодити або відключити від електрики. Програма в Solana працює на тисячах валідаторів одночасно, і щоб змінити її логіку, потрібно розгорнути нову версію коду в мережі.

Які завдання виконують програми в Solana

Програми — це те, що робить блокчейн корисним поза простими переказами монет. Ось основні напрямки:

  • Переказ токенів. Програма SPL Token відповідає за створення, передачу та облік токенів у мережі Solana. Кожен переказ токенів, який ви робите у своєму гаманці, насправді викликає цю програму.
  • Обмін токенів (децентралізовані біржі). Програми дозволяють обмінювати один токен на інший без посередника. Ви вказуєте, що хочете обміняти, а програма автоматично розраховує курс і виконує обмін.
  • Створення та управління NFT. NFT (невзаємозамінні токени) — це унікальні цифрові записи про право власності на зображення, відео, музику чи інші об'єкти. Програми визначають, хто є власником NFT, і забезпечують правильність передачі.
  • Децентралізовані фінанси (DeFi). Програми реалізують кредитування, стейкінг (блокування токенів для отримання винагороди) та інші фінансові механізми без банків.
  • Ігри. Програми зберігають стан гри — інвентар гравця, прогрес, результати битв — на блокчейні, що робить їх прозорими та незалежними від одного сервера.
  • Голосування та управління. Програми дозволяють власникам токенів голосувати за зміни в проєкті, і результати неможливо підробити.

Без програм Solana була б просто мережею для переказу монет SOL між користувачами. Програми перетворюють її на платформу для додатків.

Чим програми Solana відрізняються від смарт-контрактів інших мереж

Якщо ви зустрічалися з Ethereum або іншими блокчейнами, ви могли чути термін «смарт-контракт». У Solana використовують термін «програма», і це не просто питання назви. Є кілька ключових відмінностей.

Розділення коду та даних. У багатьох блокчейнах смарт-контракт містить і логіку (код), і стан (дані — наприклад, баланси користувачів). У Solana програма містить лише логіку. Всі дані зберігаються окремо — у спеціальних структурах, які називаються акаунтами. Програма лише читає ці дані, обробляє їх і записує зміни назад в акаунти. Детальніше про акаунти ми поговоримо в наступному матеріалі.

Безстанність. Програми в Solana не зберігають власного стану між викликами. Уся пам'ять живе в акаунтах. Це дозволяє мережі ефективніше керувати ресурсами і виконувати багато транзакцій паралельно.

Взаємодія між програмами. У Solana є механізм CPI (Cross-Program Invocation — перехресний виклик програм). Це означає, що одна програма під час свого виконання може звернутися до іншої програми. Наприклад, програма децентралізованої біржі під час обміну токенів звертається до програми SPL Token, щоб змінити баланси. У деяких інших мережах така взаємодія також існує, але в Solana вона є фундаментальною частиною архітектури.

Формат виконання. Програми компілюються у BPF-байткод, який виконується в спеціальній віртуальній машині Solana. Це забезпечує високу швидкість виконання та сумісність із інструментами, які вже існували для BPF в операційних системах.

Ці відмінності не означають, що Solana «краща» чи «гірша». Вони відображають інший інженерний підхід, який дозволяє досягати високої швидкості обробки транзакцій.

Де навчитися створювати програми

Якщо після цього матеріалу у вас з'явився інтерес написати власну програму для Solana — це чудова мета. Для цього потрібні базові навички програмування, знайомство з мовою Rust та розуміння архітектури Solana.

Ми підготували окремий навчальний маршрут для розробників, де крок за кроком пояснено, як створювати програми: від налаштування середовища до розгортання першого смарт-контракту в тестовій мережі. Почати можна з розділу Solana Dev Basics.