TON Blockchain

Escrow Smart Contract

Клиент и исполнитель вносят деньги в смарт-контракт. Оплата уходит исполнителю, когда работа сделана и обе стороны согласны.

Как это работает

Пять шагов до контракта

Создайте Smart Contract с помощью простого визарда.

  1. Шаг 1Роль в контрактеВыберите свою роль в контракте. В контракте всего две роли — клиент и исполнитель. Третьего арбитража нет.
    9:41LTE

    Роль в контракте

    Роль в контракте

    Клиент — заказчик услуги, товара. Вносит 100% предоплату. Плюс возвратный депозит до 30% по желанию.

    Исполнитель — поставщик услуги или товара. Вносит возвратный депозит (по умолчанию 30%) от суммы контракта.

  2. Шаг 2Выбор валютыВыберите валюту, в которой будет контракт. GRAM — нативная валюта TON — для быстрых и небольших сделок, так как валюта достаточно волатильна. USDT — более стабильная валюта для больших и долгих сделок.
    9:41LTE

    Выбор валюты

    Валюта контракта

    GRAM — более быстрое создание. Можно сразу создать контракт и внести наличные одной транзакцией.

    USDT — создание в два этапа. Сначала создание контракта (у вас на кошельке должна быть нативная валюта GRAM, либо кошелёк, поддерживающий безгазовые транзакции. GRAM предпочтительнее.), потом внесение валюты USDT.USDT менее волатилен, чем GRAM.

  3. Шаг 3Сумма контрактаВведите сумму контракта в выбранной валюте. Эта сумма будет перечислена исполнителю после выполнения работ.
    9:41LTE

    Сумма контракта

    GRAM

    Сумма контракта — стоимость работы. Вносит клиент.

    30%

    От 10% до 90%. По умолчанию 30%.

    0,4%

    0,4% от суммы, но не более 15 GRAM.

  4. Шаг 4Адреса кошельковВставьте адреса кошельков. Впоследствии через эти кошельки будут осуществляться ввод и вывод валюты.
    9:41LTE

    Адреса кошельков

  5. Шаг 5Проверка контрактаПроверьте введенные данные контракта перед деплоем.
    9:41LTE

    Проверка контракта

    Условия контракта
    Валюта
    GRAM
    Сумма контракта
    1 000 GRAM
    Депозит исполнителя
    300 GRAM · 30%
    Комиссия сервиса
    4 GRAM · 0,4%

После создания

Карточка контракта

Вы — клиент, валюта USDT. Шесть снимков той же карточки, что и в реальном кабинете. Все возможные действия на этом шаге.

  1. Ожидает пополнений
    1 000 USDT
    Контракт от 21.09.2026 - EQDe…0001
    Клиент (вы)
    0 / 1 000
    Исполнитель
    0 / 300

    *Плюс 30% (max) возвращаемого депозита

    USDT

    Только создали

    Балансы нулевые. Можно внести сумму сделки, сразу сумму с надбавкой до 30% или удалить контракт, пока никто ничего не положил.

  2. Ожидает пополнений
    1 000 USDT
    Контракт от 21.09.2026 - EQDe…0001
    Клиент (вы)
    1 000 / 1 000
    Исполнитель
    0 / 300

    *Плюс 30% (max) возвращаемого депозита

    USDT

    Пополнили сумму и ждём

    Сумма сделки уже на контракте, депозита исполнителя ещё нет. Пока статус не «Активен», свои деньги можно вывести. Надбавку до 30% ещё можно довнести.

  3. Активен
    1 000 USDT
    Контракт от 21.09.2026 - EQDe…0001
    Клиент (вы)
    1 000 / 1 000
    Исполнитель
    300 / 300
    USDT

    Исполнитель должен согласиться. Сумма округлится до целого процента от суммы сделки.

    *Плюс 30% (max) возвращаемого депозита

    USDT

    Исполнитель пополнил

    Обе оговоренные суммы на месте — контракт активен. Суммы заморожены, снять USDT нельзя. Можно принять работу, предложить другую долю или довнести надбавку (доп. депозит от клиента).

  4. Активен
    1 000 USDT
    Контракт от 21.09.2026 - EQDe…0001
    Клиент (вы)
    1 200 / 1 000 + 200 · 20%
    Исполнитель
    300 / 300
    USDT

    Исполнитель должен согласиться. Сумма округлится до целого процента от суммы сделки.

    *Плюс 30% (max) возвращаемого депозита

    USDT

    Добавили депозит 20%

    Сверх суммы сделки лежит +200 USDT. До потолка 30% ещё 100 USDT. Вывод по-прежнему закрыт: активный контракт держит сумму контракта, плюс надбавку.

  5. Предложена выплата 800 USDT
    1 000 USDT
    Контракт от 21.09.2026 - EQDe…0001
    Клиент (вы)
    1 200 / 1 000 + 200 · 20%
    Исполнитель
    300 / 300
    USDT

    Сейчас предложено 800 USDT · 80%. Можно заменить.

    *Плюс 30% (max) возвращаемого депозита

    USDT

    Предложили 80% исполнителю.

    Исполнителю уйдёт 800 USDT, если он согласится. Кнопка «Принять работу» исчезла. Она появится уже только, если выставить 100%. Предложение можно заменить, надбавку — довносить.

  6. Завершён 800 USDT
    1 000 USDT
    Контракт от 21.09.2026 - EQDe…0001
    Клиент (вы)
    400
    Исполнитель
    1 096

    Исполнитель согласился

    Контракт завершён: 800 USDT ушли исполнителю, 4 USDT — роялти сервиса. Вам осталось 400 USDT, их можно вывести.

Q&A

Частые вопросы

Где третья сторона?

Её нет. Исполнитель рискует депозитом. Ему выгодно довести работу до конца.

По умолчанию депозит исполнителя — 30% от суммы сделки. Может показаться, что у него преимущество: он рискует 30%, а вы 100%. Но важны не проценты, а деньги. Его 30% — это его собственные деньги, и потерять их ему может быть так же больно, как вам свои 100%. Просто так своими деньгами никто не жертвует.

Другой риск: клиент получил работу и может не отдать деньги. Тогда два варианта. Первый — когда работа почти готова, предложить рассчитаться заранее. Второй — попросить положить надбавку до 30% сверх суммы (депозит). После завершения контракта, клиент получит свой депозит обратно, поэтому ему есть резон закрыть сделку (контракт).

Почему я должен вам верить?

Верить не нужно. Смарт-контракт публичен. Адрес вашего контракта — хеш начальных данных и кода. Подменили код — адрес будет другим.

Его можно открыть и посмотреть (например в Tonviewer). Единственное, нужно понимать код — в этом основная проблема. Но зато это 100% доказательство. Можно отдать код ИИ-модели. Ниже — код контракта с максимально простым пояснением.

ContractUSDT

Это список импортов: константы и вспомогательные функции.

Краткая характеристика контракта.

Список доступных действий с контрактом.

Вспомогательная функция: активен контракт или нет. Когда все внесли свои суммы, контракт становится активным — просто так уже не вывести.

Функция для сдачи. К сообщению кладут немного GRAM на обработку транзакции. Лишнее она возвращает.

Считает адрес жетон-кошелька. Он зависит от адреса контракта.

Если перевод сбойнул — деньги возвращаются, контракт поправляет записи: у кого сколько.

Если тело сообщения пустое — ничего не делаем.

Дальше объявление переменных.

Пополнение USDT: принимает переводы и записывает, сколько у кого USDT.

Меняет процент выплаты. Работа сделана только наполовину — можно предложить 50%. Исполнитель согласился — контракт исполнен. Нет — договаривайтесь ещё.

Если исполнитель соглашается, контракт отсчитает ему долю плюс депозит, остаток вам. 0% — вся сделка отменяется, все получают свои деньги назад. Комиссия 0,4% контракту не платится.

Самый большой блок — управляет возвратами средств.

Режим ошибки. Если кошелёк потерян или деньги прошли мимо учёта, сторона может передать контроль другой стороне. Ситуация «мимо учёта» строго говоря невозможна, если только не сделать это намеренно. Но пусть будет. Забыть или потерять кошелёк — вполне возможно.

ErrRefund — аварийный вывод жетонов, которые пришли без уведомления и не попали в учёт. Либо когда кошелёк утерян (правильнее сказать утерян пароль от него)

Burn — уничтожить контракт, чтобы пустая оболочка не болталась в сети. Сжечь может тот, кто его создал (клиент или исполнитель) или админ — и только когда балансы клиента и исполнителя нулевые.

Верифицированные исходники трёх контрактов. Хэш кода совпадает с тем, что в сети. Ссылка открывает исходник на TON Verifier.

ContractMinterContractUSDTContractTON