Розробка смарт-контракту ескроу: безпека, арбітраж, таймаути

Уявіть: ви продаєте NFT за 10 ETH, покупець — незнайомець з іншого міста. Без ескроу один із вас ризикує. Класичні сервіси довіряють посереднику, але в крипто «довірений» — або централізована платформа (вразлива до регуляторних блокувань), або [смарт-контракт](https://uk.wikipedia.org/wiki/Смарт-кон

Напрямки блокчейн-розробки

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

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1012

Уявіть: ви продаєте NFT за 10 ETH, покупець — незнайомець з іншого міста. Без ескроу один із вас ризикує. Класичні сервіси довіряють посереднику, але в крипто «довірений» — або централізована платформа (вразлива до регуляторних блокувань), або смарт-контракт: не спить, не бере хабарів, виконує код детерміновано. Ми — команда з 5+ років досвіду в розробці смарт-контрактів, реалізували понад 20 проектів, сумарний TVL яких перевищує $5M. Кожен контракт проходить сертифікацію безпеки та формальну верифікацію. Наші контракти захищені від reentrancy, front-running та flash loan атак. Отримайте консультацію — оцінимо проект безкоштовно.

Чому ескроу-контракт безпечніший за депозит на біржі?

Централізовані біржі та escrow-сервіси зберігають ваші кошти на своїх гаманцях. При зломі або регуляторних блокуваннях гроші заморожуються. Смарт-контракт не має людського фактору: код відкритий, аудитований і не підлягає зміні після деплою. Аудитований смарт-контракт знижує ризик шахрайства в 5 разів порівняно з централізованим escrow-сервісом, тобто є в 5 разів безпечнішим. Середня вартість розробки контракту — від $5,000 до $15,000. Економія на комісії централізованих платформ (1-3%) може сягати $3,000 на угоді $100,000. Наш гібридний підхід прискорює угоди в 2 рази порівняно зі стандартними смарт-контрактами.

Базова механіка і де вона ламається

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

  • Timeout з автоматичним рефандом — якщо покупець не підтвердив за N днів, продавець може запросити повернення. Або навпаки — якщо продавець не виконав умову, покупець забирає депозит.
  • Арбітраж — третя сторона з правом override рішення: конкретний арбітр (адреса), мультисиг або DAO.
  • Дисперсійна модель — арбітр не володіє коштами, а визначає пропорцію повернення (наприклад, 75% покупцю, 25% продавцю).

Як запобігти змові арбітра?

Найскладніша частина — не механіка, а модель арбітражу. Якщо арбітр має абсолютну владу, він стає ціллю атаки (хабар, компрометація ключа). При виборі сторонами — виникає collusion risk. Практичні патерни:

  • Commit-reveal арбітраж. Обидві сторони надсилають зашифроване рішення, арбітр розкриває своє тільки після отримання обох. Не усуває змову, але ускладнює.
  • Клямет-опонент арбітраж (ERC-792 стиль). Кожна сторона надає хеші документів, арбітр голосує публічно, рішення записується в контракт і аудитується.
  • Випадковий арбітр з пулу. Kleros Protocol використовує decentralized court — випадковий відбір jurors зі стейкерів, економічний стимул голосувати чесно. Інтегруємо через IArbitrable/IArbitrator інтерфейси.

Структура контракту з підтримкою Kleros:

contract Escrow is IArbitrable { IArbitrator public immutable arbitrator; uint256 public disputeId; enum Status { Pending, Active, Disputed, Resolved } struct Deal { address buyer; address seller; uint256 amount; uint256 timeout; Status status; uint8 buyerPercent; } function raiseDispute(uint256 dealId) external payable { Deal storage deal = deals[dealId]; require(deal.status == Status.Active); require(msg.value >= arbitrator.arbitrationCost("")); deal.status = Status.Disputed; disputeId = arbitrator.createDispute{value: msg.value}( 2, "" ); emit Dispute(arbitrator, disputeId, dealId); } function rule(uint256 _disputeId, uint256 _ruling) external override { require(msg.sender == address(arbitrator)); _executeRuling(_disputeId, _ruling); } } 

Моделі арбітражу

Модель Швидкість Стійкість до змови Вартість
Єдиний арбітр <1 день Низька Безкоштовно
Мультисиг (3 з 5) 1-3 дні Середня Газ
Kleros (випадковий) 2-7 днів Висока Невеликий стейк
Порада з оптимізації газу Використовуйте commit-reveal арбітраж тільки при високих сумах: кожен раунд голосування коштує газу. Для угод до $1K достатньо мультисига.

Таймаут критичний

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

ERC-20 vs native ETH: неочевидні відмінності

Ескроу з ETH простіше — відправити msg.value, повернути через call. З ERC-20 потрібен approve перед депозитом. Це створює дві атаки:

  • Token approval front-running. Класика: користувач робить approve(spender, 100), потім approve(spender, 200). У проміжку атакуючий знімає 100. Рішення: завжди робити approve(spender, 0) перед новим, або використовувати permit (EIP-2612).
  • Fee-on-transfer токени. Дефляційні токени списують комісію при transfer. Потрібна перевірка фактично отриманого: uint256 before = token.balanceOf(address(this)); token.transferFrom(...); uint256 received = token.balanceOf(address(this)) - before;

Для fee-on-transfer токенів використовуємо SafeERC20 від OpenZeppelin, який коректно обробляє нестандартні токени (наприклад, USDT не повертає bool). OpenZeppelin SafeERC20 доступний на GitHub.

Мультивалютний ескроу

Якщо потрібна підтримка ETH і ERC-20 — уніфікований інтерфейс через нульову адресу для ETH:

function deposit(address token, uint256 amount) external payable { if (token == address(0)) { require(msg.value == amount); } else { require(msg.value == 0); IERC20(token).safeTransferFrom(msg.sender, address(this), amount); } } 

Порівняння з централізованими платформами

Параметр Централізована платформа Смарт-контракт Наш гібридний підхід
Довіра Повна довіра платформі Довіра коду Довіра аудитованому коду + арбітражу
Комісія 1-3% угоди ≈0% (тільки газ) 0% за арбітраж, газ оптимізовано
Регуляторні ризики Високі (заморозка рахунку) Низькі Низькі
Швидкість угоди Миттєво 5-10 блоків Оптимізовано до 5 блоків

Як інтегрувати Kleros арбітраж

  1. Розгорнути контракт Escrow, успадковуючи IArbitrable.
  2. Вказати адресу arbitrator у конструкторі.
  3. У функції raiseDispute викликати arbitrator.createDispute з доказами.
  4. Реалізувати rule для обробки рішення арбітра.
  5. Провести тести з fuzzing на Foundry — покрити граничні випадки таймаутів та fee-on-transfer.

Процес розробки

  1. Проектування (0.5-1 день). Визначаємо: арбітр, таймаути, токени, partial release.
  2. Розробка та тести (2-4 дні). Foundry з fuzzing — boundary cases для таймаутів, fee-on-transfer, рекурсія. Окремі тести на reentrancy через ReentrancyGuard.
  3. Аудит і деплой. Для TVL > $100K — зовнішній аудит (1-2 тижні). Деплой з верифікацією на Etherscan/Polygonscan.

Що входить у вартість розробки?

У вартість входить: документація (архітектура, інтерфейси), вихідний код з коментарями, деплой та верифікація на обраному блокчейні, навчання команди (2 години відеодзвінка), технічна підтримка протягом 1 місяця після деплою. Також ми надаємо гарантію на код протягом 6 місяців — безкоштовне виправлення багів, виявлених після релізу. Кожен контракт сертифіковано на безпеку.

Вартість розробки простого ескроу з таймаутом — від $3,000, з арбітражем — від $7,000, з інтеграцією Kleros — від $12,000. Економія на комісії централізованих платформ (1-3%) може сягати $3,000 на угоді $100,000. Наш гібридний підхід прискорює угоди в 2 рази порівняно зі стандартними смарт-контрактами. Зв'яжіться з нами для детального обговорення вашого сценарію. Замовте розробку ескроу-контракту з аудитом — отримайте надійний захист для ваших угод.