Secret terminal
Blog /
Смарт-контракти: що це простими словами

Смарт-контракти: що це простими словами

Никита
Никита
CEO Secret Terminal
14 хв
Смарт-контракти: що це простими словами

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

Далі тільки механіка, без рекламних формулювань. За що мережа бере комісію і чому читання з контракту буває безкоштовним. Чим approve відрізняється від swap. Чому код не може сам подивитися ціну біткоїна. Як «незмінний» контракт оновлюють через проксі.

Тема здається абстрактною, поки ви не підпишете транзакцію, після якої гроші підуть не туди.

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

Смарт-контракт - це програма, яка зберігається в блокчейні за власною адресою і виконується вузлами мережі (комп'ютерами, які перевіряють операції), коли до неї звертаються транзакцією. У контракту є код, сховище (його постійна пам'ять) і баланс. Приклади далі взяті з Ethereum, в інших мережах деталі відрізняються. Для Ethereum контракт - такий самий акаунт, як у звичайного користувача, тільки приватного ключа в нього немає: ним керує записаний код.

У текстах українською зустрічається і буквальний переклад: «розумні контракти». Розуму в них немає, тільки автоматика. Термін smart contract придумав Нік Сабо: у 1994 році він описав ідею автоматичного виконання умов. Сам собою код ще не означає юридичний договір. Мережа виконує те, що написано в коді, навіть якщо написано криво.

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

Аналогія: автомат з газованою водою

Порівняння з торговим автоматом запропонував той самий Нік Сабо.

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

В аналогії є три уточнення.

Перше. Автомат не бігає за вами по вулиці: поки ніхто не натиснув кнопку, він не робить нічого. Контракт теж не запускає себе сам. Зміна стану в мережі починається з транзакції, яку хтось надіслав і оплатив; локальне читання влаштоване інакше.

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

Третє, найнеприємніше. Якщо механізм бракований і автомат видає дві банки замість однієї, ремонтувати його нікому. Черга охочих вибудується за хвилини. З контрактом так само: помилка в коді доступна відразу всім.

Як працює

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

Виклик функції - це така сама транзакція, як переказ ETH, тільки в полі data вказано, яку функцію запустити і з якими параметрами. Вузли виконують код у віртуальній машині Ethereum (EVM), і кожен отримує той самий результат.

Газ. Обчислення в мережі вимірюють в одиницях газу. Простий переказ ETH коштує 21 000 одиниць. Виклик контракту дорожчий, бо до базових 21 000 додається газ за виконання коду і запис у сховище. Комісія дорівнює використаному газу, помноженому на його ціну: базова комісія плюс чайові. Базову частину мережа спалює, чайові отримує валідатор, який включив транзакцію в блок.

Умовний розрахунок за базової комісії 8 gwei і чайових 1 gwei, тобто 9 gwei за одиницю газу (1 gwei - це одна мільярдна ETH):

ОпераціяГаз (приблизно)Комісія в ETHУ доларах за ціни ETH 3000
Переказ ETH21 0000,0001890,57
approve токена46 0000,0004141,24
Простий swap в одному пулі150 0000,001354,05

Розрахунок показує формулу, а не актуальний тариф. Витрата газу залежить від контракту токена і протоколу (застосунку з контрактів), а ціна газу змінюється із завантаженням мережі. У мережах другого рівня (L2, надбудовах над Ethereum) комісія зазвичай нижча, але універсального «в десять разів дешевше» не існує: усе залежить від мережі і її завантаження.

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

Читання: безкоштовне і платне. Безкоштовне читання - це запит eth_call. Гаманець або сайт просить вузол виконати функцію контракту і повернути відповідь. Транзакція не створюється, у блокчейн нічого не записується, газ не списується: вузол обчислює у себе, решта мережі в цьому не бере участі. Так інтерфейс показує баланс або курс обміну ще до того, як ви щось підписали.

Платне читання відбувається всередині транзакції. Наприклад, у ході обміну контракт біржі запитує в пулу (контракту із запасом двох токенів), скільки в ньому резервів. Такий запит виконують усі вузли, і кожне звернення до сховища витрачає газ. Він входить у комісію тієї самої транзакції, хоча читання дешевше за запис.

Цифра на екрані отримана через eth_call і до моменту виконання вашої транзакції може застаріти.

approve і swap. Перше - дозвіл, друге - обмін. У класичній схемі це дві окремі транзакції.

Токен стандарту ERC-20 теж контракт, баланси всіх утримувачів записані в його сховищі. Сторонній контракт не забере ваші токени без дозволу. Функція approve записує в контракті токена ліміт: такій-то адресі (наприклад, контракту-роутеру децентралізованої біржі) можна списати з вашого балансу до такої-то суми. Токени при цьому не рухаються.

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

Обмін з окремим approve обходиться дорожче, адже транзакцій дві (самому ETH approve не потрібен: ETH не токен стандарту ERC-20). Тому інтерфейси часто просять дозвіл на необмежену суму, щоб вам не довелося платити за approve перед кожним обміном. Такий дозвіл діє і після обміну. Якщо контракт, якому він виданий, зламають або він з самого початку був шкідливим, з вашої адреси можна списати весь залишок токена. Відключення гаманця від сайта нічого не скасовує: відкликання дозволу - окрема транзакція з комісією. Я б ставив ліміт під суму конкретної угоди, навіть ціною зайвого approve.

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

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

Ризик залишається. Ціна може застаріти, якщо оновлення затрималося. Ще небезпечніше, коли протокол читає поточну ціну прямо з пулу децентралізованої біржі. Атакувальник отримує флеш-позику (кредит без застави, який повертають у тій самій транзакції), великою покупкою зсуває ціну в пулі і тут же позичає під переоцінену заставу більше, ніж належить. Код протоколу відпрацював без помилок. Він просто повірив неправильній ціні.

Проксі та оновлюваність. Заборону на зміну коду протоколи обходять через проксі. Проксі - це контракт-посередник: до нього звертаються користувачі, у його сховищі лежать баланси і налаштування, а логіки в ньому майже немає. Кожен виклик він передає контракту-реалізації через delegatecall. Ця інструкція бере код з іншого контракту, але виконує його над сховищем самого проксі. Щоб оновити протокол, команда записує в проксі адресу нової реалізації. Адреса для користувачів і баланси залишаються тими самими, логіка змінюється.

Раз логіку можна замінити, значить, у якоїсь адреси є на це право. І без проксі код нерідко залишає адміністратору особливі права, наприклад поставити контракт на паузу. Перевірте, чи можна оновити контракт і в кого ключ: мультисиг (гаманець, де операцію підтверджують кілька власників) з таймлоком (обов'язковою затримкою перед набуттям чинності зміни) - один рівень ризику, одиночна адреса невідомого власника - зовсім інший.

Де використовуються

DeFi

DeFi (децентралізовані фінанси) - сфера, де місце банку і брокера зайняв код: обмін, кредити і деривативи працюють через контракти. Як побудована вся екосистема, читайте в окремому матеріалі «Що таке DeFi простими словами».

Класична децентралізована біржа працює як автоматичний маркет-мейкер. Два токени лежать у пулі, ціну задає співвідношення резервів (у Uniswap v2 формула x × y = k, де x і y - резерви двох токенів), обмін іде проти пулу, а не проти чужої лімітної заявки. Стакана заявок (списку лімітних заявок на купівлю і продаж) у таких пулах немає.

Кредитні протоколи тримають заставу в контракті і рахують показник здоров'я позиції (наскільки застава покриває борг). В Aave ліквідація (примусове погашення боргу за рахунок застави) стає можливою, коли показник падає нижче 1. Запустити її може будь-який учасник мережі. Він гасить борг позичальника і забирає заставу на ту саму суму плюс премію.

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

NFT

NFT (невзаємозамінний токен) - це запис у контракті (найчастіше стандарту ERC-721), який зв'язує унікальний ідентифікатор з адресою власника. Сама картинка в блокчейні зазвичай не зберігається, бо це надто дорого. У контракті лежить посилання на опис і зображення, а вони розміщені в IPFS (розподіленій файловій мережі) або на звичайному сервері.

Що записано в коді:

  • власник токена і порядок передачі
  • правила випуску (мінту): ціна, ліміт на адресу, час старту
  • розмір роялті, тобто відрахування автору з перепродажу

Розмір відрахувань площадці повідомляє стандарт ERC-2981, але платити він не змушує: у його тексті виплата прямо названа добровільною, бо переказ токена між гаманцями ще не означає продажу. Площадки цим користуються. У серпні 2023 року OpenSea оголосила про перехід на необов'язкові відрахування.

Крім картинок, так випускають квитки і доменні імена.

DAO

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

В одних DAO ухвалене рішення виконується автоматично, транзакцією з контракту. В інших голосування тільки фіксує волю учасників, а переказ підписують конкретні люди з мультисига.

Токен управління продається на ринку, значить, вплив можна купити. За низької явки результат вирішують кілька великих утримувачів.

Ціну помилки в коді показала історія The DAO, інвестиційного фонду під управлінням коду, у 2016 році. Уразливість повторного входу (контракт надсилав кошти раніше, ніж оновлював баланс) дозволила вивести з нього понад 3,6 млн ETH. Спільнота проголосувала за хардфорк (несумісну зміну правил мережі), який повернув кошти вкладникам.

Ризики

Незмінність коду захищає від підміни правил, але через неї помилку в розгорнутому контракті не виправити заднім числом, а вкрадене, як правило, не повертається.

Баги і хаки

За звітом аналітичної компанії TRM Labs від 1 липня 2026 року, за перше півріччя сталося 207 зламів, більше, ніж за будь-які шість місяців її спостережень. Украли при цьому 972 млн доларів, менше половини від 2,3 млрд за перше півріччя 2025 року.

Зламів через уразливості смарт-контрактів було 125 із 207, але на них припала мала частина суми. Близько 76% украденого дали приблизно 15% інцидентів. Це атаки на інфраструктуру і операційні процеси: на системи, доступи і ключі підпису, через які керують активами.

Класи уразливостей у коді повторюються роками:

  • Повторний вхід (reentrancy): викликаний код знову заходить у функцію, поки баланс не оновлено.
  • Маніпуляція ціною оракула через флеш-позику.
  • Помилки контролю доступу: критичну функцію може викликати хто завгодно.
  • Арифметика і логіка: переповнення, округлення, економічна модель, яка ламається за справного коду.

Окрема історія - шкідливий підпис. Стандарт ERC-2612 (функція permit, є не в кожного токена) і схеми на кшталт Permit2 дозволяють видати дозвіл на списання токенів не транзакцією, а підписом повідомлення. Газ за підпис не списується, в історії адреси він не з'являється. Пізніше отримувач підпису сам надішле його в блокчейн і спише токени. На підробленому сайті такий підпис може виглядати як безневинний «вхід у застосунок».

Типові помилки користувача. Зламувати тут нічого не доводиться, користувач усе віддає сам.

  • Необмежений approve «на майбутнє» і забуті дозволи. Економія на газі обертається чужим доступом до всього залишку токена.
  • Підпис без читання. «Безкоштовно» не означає «безпечно».
  • Вірити цифрі в інтерфейсі і не дивитися на мінімальну суму до отримання.
  • Слово «аудит» на сайті проєкту замість самого звіту.
  • Переказ токенів на адресу контракту, який не вміє з ними працювати. Стандарт ERC-20 отримувача не перевіряє, і токени можуть залишитися там назавжди.

Аудит

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

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

У звіті перевірте три речі. Хто перевіряв і яка в цієї команди репутація. Яку версію коду і коли перевіряли: якщо контракт після цього оновлювали, у мережі працює вже не той код, що описаний у звіті. Чи виправлені критичні знахідки, чи тільки «взяті до відома».

Показовий випадок - кредитний протокол Euler Finance. За словами самої команди, він проходив аудит набагато частіше, ніж прийнято в галузі. У березні 2023 року протокол усе одно втратив близько 197 млн доларів, бо у функції donateToReserves не вистачало однієї перевірки стану позиції. За наступні три тижні кошти вдалося повернути, але такий результат - рідкість.

Крім звіту, варто дізнатися, чи є в проєкту винагорода за знайдені уразливості (bug bounty), як довго протокол працює з реальними грошима і чи є таймлок на критичні зміни.

Перед входом у будь-який протокол я б з'ясовував, хто може змінити контракт, які дозволи він отримає і яку суму не страшно втратити повністю.

Смарт-контракти і трейдинг

Торгівля на централізованій біржі йде без смарт-контрактів. Коли ви відкриваєте позицію на Binance або Bybit, код у блокчейні не виконується. Заявки зводить внутрішня система біржі, а блокчейн бере участь тільки при введенні і виведенні коштів.

На ринок контракти впливають по-іншому, через події, які видно в блокчейні.

Розблокування токенів. Графік видачі токенів команді та інвесторам (вестинг) нерідко записаний у контракті, і дати відомі заздалегідь. Велике розблокування збільшує пропозицію в обігу, але продавати отримувачі не зобов'язані.

Ліквідації в кредитних протоколах. Як тільки позиція стала доступною для ліквідації, закрити її може будь-який учасник, і транзакція видна всім. При різкому падінні ціни такі ліквідації можуть посилити продажі на ринку, який і так іде вниз.

Сюди ж належать комісії: для арбітражу між площадками газ на переказ - пряма витрата, яка може зʼїсти всю різницю цін. Великі перекази на біржові адреси теж видно відразу, але депозит ще не продаж, адже токени могли завести під заставу або просто перекласти.

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

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

Як читати стакан і кластери разом, показано в безкоштовному уроці на YouTube-каналі Secret Terminal. Він входить у повний курс з криптотрейдингу з п'яти частин для новачків.

Матеріал освітній і не містить інвестиційних рекомендацій.

FAQ

  • Смарт-контракт: що це простими словами?

    Це програма в блокчейні, яка автоматично виконує закладені в неї умови, коли до неї звертаються транзакцією. Працює як торговий автомат: умова виконана - результат виданий, і скасувати операцію не можна. «Розумні контракти» - те саме, буквальний переклад терміна.

  • Хто контролює смарт-контракт після запуску?

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

  • За що списується газ, а що безкоштовно?

    Газом оплачуються обчислення і запис у блокчейн: простий переказ ETH коштує 21 000 одиниць газу, виклик контракту дорожчий. Читання через eth_call безкоштовне, бо транзакція не створюється і вузол обчислює відповідь у себе. Те саме читання всередині транзакції витрачає газ.

  • Чим approve відрізняється від swap?

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

  • Чи може смарт-контракт сам дізнатися курс біткоїна?

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

  • Чи гарантує аудит безпеку протоколу?

    Ні. Аудит знижує ймовірність помилки, але описує конкретну версію коду на конкретну дату і знаходить не все. Euler Finance проходив аудит неодноразово і в березні 2023 року все одно втратив близько 197 млн доларів через одну пропущену перевірку.

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

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

Смарт-контракти працюють у блокчейні, а угоди на централізованій біржі проходять через стакан заявок. Secret Terminal збирає в одному вікні стакан з картою щільностей, стрічку принтів і кластерний аналіз по Binance, Bybit, OKX, MEXC, WhiteBIT, Kraken і BloFin. Термінал безкоштовний. Завантажте його на офіційному сайті, підключіть біржу і подивіться на ринок на рівні заявок і угод, а не свічок.

Про автора

Никита
Никита
CEO Secret Terminal

5 років у трейдингу, 3 роки був ментором та навчив понад 2 000 студентів. Розвиває Secret Terminal, щоб професійні інструменти торгівлі були доступні кожному трейдеру.

Чи було корисно?

Ваша оцінка допоможе нам покращити якість опублікованих матеріалів та збільшити їх корисність.