Смарт-контракти: як програма замінює посередника

Безкоштовний курс з криптовалюти
Рівень 1: Основи блокчейнуУрок 1.6 · 15 з 698 хв читання

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

Коротко про головне
  • Смарт-контракт — це код, записаний у блокчейн, який виконується за заданими правилами однаково на всіх вузлах мережі.
  • Він не розумний і не юридичний договір: він робить рівно те, що написано в коді, включно з помилками.
  • На смарт-контрактах працюють обмінники, кредитні сервіси, стейблкоїни, NFT і майже весь DeFi.
  • Головні ризики — вразливості в коді, ключі адміністратора і дозволи, які ви самі видаєте контракту.

Що таке смарт-контракт

Термін запровадив криптограф Нік Сабо ще в 1990-х, задовго до появи біткоїна. Щоб пояснити суть, він наводив як приклад торговельний автомат: кинув монету, натиснув кнопку — і напій твій. Продавець не потрібен, бо правило «заплатив — отримав» вбудоване в сам механізм.

Смарт-контракт працює за тим самим принципом, тільки замість заліза — програма, а замість монетоприймача — блокчейн. Код із правилами публікують у мережі, і він отримує власну адресу, як звичайний гаманець. Будь-хто може надіслати на цю адресу транзакцію, і контракт зробить те, що в ньому закладено: переведе токени, видасть позику або зарахує NFT.

Масовими смарт-контракти стали після запуску Ethereum 2015 року. Сьогодні вони є в Solana, BNB Chain, Avalanche, Tron і десятках інших мереж. Назви й мови програмування відрізняються, але суть спільна: правила прописані в коді, і виконує їх мережа, а не людина.

Термін · Чому «смарт», якщо він не розумний

Слово smart тут означає «автоматичний», а не «розумний». Контракт не розуміє, чого хочуть сторони, і не вміє виправляти помилки — він просто виконує інструкції.

Як виконується смарт-контракт

Візьмімо децентралізований обмінник. Коли ви натискаєте «Обміняти», гаманець формує транзакцію з викликом потрібної функції контракту і просить її підписати. Після підпису транзакція йде в мережу, і кожен вузол, який перевіряє блок, проганяє ті самі дані через той самий код і отримує той самий результат. Тому ніхто не може таємно підмінити підсумок.

За виконання коду стягують комісію. В Ethereum її називають газом: що складніша операція, то більше обчислень і то дорожче. Якщо газу не вистачило або умову контракту не виконано, транзакція відкочується, але комісію за спробу все одно спишуть.

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

Звідси просте практичне правило: перед підписом дивіться не лише на суму, а й на те, з яким контрактом ви маєте справу і яку функцію викликаєте. Хороші гаманці показують це просто у вікні підтвердження, а деякі ще й попереджають про підозрілі адреси.

  1. Розробник пише код, наприклад на Solidity, і публікує його в мережі.
  2. Контракт отримує адресу, і його код стає видимим для всіх.
  3. Користувач підписує транзакцію з викликом функції контракту.
  4. Вузли мережі виконують код і додають результат до блоку.
  5. Баланси й дані контракту змінюються, а запис про це залишається в блокчейні назавжди.

Чим смарт-контракт відрізняється від звичайного договору

Звичайний договір описує наміри людей, а виконувати його доводиться самим людям — за потреби через суд. Смарт-контракт виконує себе сам, але лише в межах блокчейну: токени він переведе, а от перевірити, чи доставили вам диван, не зможе.

Щоб дізнатися щось про зовнішній світ, наприклад курс долара чи результат матчу, контракту потрібен оракул — сервіс, який приносить дані в блокчейн. Найвідоміший приклад — мережа Chainlink. Оракул стає точкою довіри: якщо він передасть неправильну ціну, контракт сумлінно виконає помилкову дію.

Звичайний договір Смарт-контракт
Хто виконує Сторони, банк, нотаріус, суд Вузли блокчейну автоматично
Швидкість Дні й тижні Час підтвердження транзакції
Чи можна змінити Так, за згодою сторін Ні, якщо не закладено оновлення
Що, як помилка Можна оскаржити Помилка виконається, як написано
Зв’язок із реальним світом Прямий Лише через оракули

Приклад · Торговельний автомат у DeFi

В обміннику на кшталт Uniswap ви надсилаєте в контракт USDC, а він за формулою розраховує, скільки ETH вам належить, і одразу їх переводить. Ні оператора, ні заявки на обмін — лише код і пул ліквідності.

Де ви вже зустрічаєте смарт-контракти

Майже будь-який токен, крім нативних монет на кшталт BTC і ETH, — це смарт-контракт. Той самий USDT у мережі Ethereum чи Tron існує як контракт, що зберігає таблицю балансів і правила переказу. Надсилаючи токен другові, ви насправді викликаєте функцію цього контракту.

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

Поза фінансами контракти використовують для голосувань у спільнотах, ігрових предметів, квитків і підтвердження права на цифрові об’єкти. Не всі ці ідеї прижилися, але принцип скрізь один: правила відкриті для всіх, і їхнє виконання не залежить від доброї волі однієї компанії.

Як подивитися на смарт-контракт на власні очі

Щоб смарт-контракти перестали бути абстракцією, досить один раз відкрити оглядач блоків. Це сайт, який показує все, що відбувається в мережі: транзакції, адреси, баланси і код контрактів. Якщо ви пам’ятаєте з уроку про те, як працює блокчейн, що всі записи публічні, оглядач — просто зручне вікно в ці записи.

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

Там само видно, хто створив контракт, скільки з ним було транзакцій і які в нього є функції. А через вкладку з функціями читання можна без жодної комісії дізнатися, наприклад, загальний випуск токена або баланс будь-якої адреси.

  1. Знайдіть адресу контракту токена USDT у мережі Ethereum на CoinGecko або CoinMarketCap.
  2. Вставте її в пошук на etherscan.io.
  3. Відкрийте вкладку Contract і переконайтеся, що код верифіковано.
  4. У вкладці Read Contract знайдіть функцію totalSupply і подивіться поточний випуск.
  5. Прогорніть останні транзакції: кожен рядок — це виклик функції контракту.

Порада · Навчайтеся в тестовій мережі

Якщо хочете спробувати взаємодію з контрактами, використовуйте тестові мережі на кшталт Sepolia. Монети там безплатні, і помилка не коштуватиме вам грошей.

Ризики: коли код проти вас

Помилку контракт виконає так само старанно, як і правильну логіку. Класичний приклад — The DAO 2016 року: через вразливість у коді зловмисник вивів велику суму ETH. Спільнота вирішила скасувати наслідки, і через незгоду з цим рішенням мережа розкололася на Ethereum та Ethereum Classic.

Відтоді протоколи, мости й обмінники зламують регулярно. Найчастіші причини — помилки в логіці, маніпуляції з ціною в оракула і вкрадені ключі адміністратора. Аудит коду знижує ризик, але не дає стовідсоткової гарантії: зламували й перевірені проєкти.

Для звичайного користувача найнебезпечніші — дозволи. Підключаючи гаманець до сайту, ви часто даєте контракту право витрачати ваші токени, іноді без обмеження суми. Шахрайський сайт або зламаний протокол може скористатися цим дозволом пізніше. Як розпізнавати такі пастки, розібрано в уроці про шахрайські проєкти.

  • Перевіряйте, що код контракту верифіковано в оглядачі блоків, наприклад в Etherscan.
  • Шукайте публічні аудити й дивіться, хто і коли їх робив.
  • Читайте, що саме гаманець просить підписати, а не натискайте «Підтвердити» автоматично.
  • Час від часу відкликайте старі дозволи через сервіси на кшталт Revoke.cash.
  • Тримайте основні кошти на гаманці, який не підключаєте до експериментальних сайтів.

Важливо · Скасувати транзакцію не можна

Якщо контракт уже виконав переказ, дзвінком у підтримку його не повернути. Відповідальність за те, що ви підписали, лежить на вас.

Завдання до уроку

Пройдіть кроки з розділу «Як подивитися на смарт-контракт на власні очі»: знайдіть на Etherscan контракт USDT у мережі Ethereum, переконайтеся, що код верифіковано, і дізнайтеся через Read Contract значення totalSupply (у USDT шість знаків після коми, тож останні шість цифр — це дробова частина). Потім відкрийте будь-яку свіжу транзакцію цього контракту й подивіться, яку функцію в ній викликано — найчастіше Transfer. Так ви на власні очі побачите, що переказ токена — це виклик коду.

Навчайтеся й заробляйтеБезкоштовні турніри щодня — шлях до призів у USDT

Вхід безкоштовний, торгівля на демо-рахунку — власні гроші не потрібні. У безкоштовних турнірах виграють Tour Pass, а з ними заходять у турніри з призами в USDT. Найкращі йдуть далі — до funded-рахунку на $5 000.

Часті запитання

Чи можна написати смарт-контракт без знання програмування?

Конструктори токенів і шаблони існують, але запускати щось в основній мережі, не розбираючись у коді, ризиковано. Для навчання краще використовувати тестові мережі, де монети нічого не коштують.

Чи є смарт-контракти в біткоїна?

У біткоїні є проста мова скриптів: з її допомогою роблять мультипідписи й блокування за часом. Складні застосунки на кшталт обмінників і кредитних протоколів на ній не будують — для цього з’явилися Ethereum та інші мережі.

Чи має смарт-контракт юридичну силу?

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

Що робити, якщо я підписав підозрілий дозвіл?

Одразу відкличте його через оглядач блоків або сервіс керування дозволами і переведіть решту активів на новий гаманець. Що швидше ви це зробите, то менше шансів, що дозволом устигнуть скористатися.

Обговорення

Обговорення цієї статті — у BuyCrypt Live у застосунку. Увійдіть через Google або Apple, і акаунт BuyCrypt створиться автоматично.

Обговорити в застосунку →