

Escrow Smart Contract
Клиент и исполнитель вносят деньги в смарт-контракт. Оплата уходит исполнителю, когда работа сделана и обе стороны согласны.
Как это работает
Пять шагов до контракта
Создайте Smart Contract с помощью простого визарда.
Создайте Smart Contract с помощью простого визарда.
- Шаг 1Роль в контрактеВыберите свою роль в контракте. В контракте всего две роли — клиент и исполнитель. Третьего арбитража нет.9:41LTE
Роль в контракте
- Шаг 2Выбор валютыВыберите валюту, в которой будет контракт. GRAM — нативная валюта TON — для быстрых и небольших сделок, так как валюта достаточно волатильна. USDT — более стабильная валюта для больших и долгих сделок.9:41LTE
Выбор валюты
- Шаг 3Сумма контрактаВведите сумму контракта в выбранной валюте. Эта сумма будет перечислена исполнителю после выполнения работ.9:41LTE
Сумма контракта
Сумма контракта — стоимость работы. Вносит клиент.
От 10% до 90%. По умолчанию 30%.
0,4% от суммы, но не более 15 GRAM.
- Шаг 4Адреса кошельковВставьте адреса кошельков. Впоследствии через эти кошельки будут осуществляться ввод и вывод валюты.9:41LTE
Адреса кошельков
- Шаг 5Проверка контрактаПроверьте введенные данные контракта перед деплоем.9:41LTE
Проверка контракта
Роль в контракте
После создания
Карточка контракта
Вы — клиент, валюта USDT. Шесть снимков той же карточки, что и в реальном кабинете. Все возможные действия на этом шаге.
Только создали
Балансы нулевые. Можно внести сумму сделки, сразу сумму с надбавкой до 30% или удалить контракт, пока никто ничего не положил.
Пополнили сумму и ждём
Сумма сделки уже на контракте, депозита исполнителя ещё нет. Пока статус не «Активен», свои деньги можно вывести. Надбавку до 30% ещё можно довнести.
Исполнитель пополнил
Обе оговоренные суммы на месте — контракт активен. Суммы заморожены, снять USDT нельзя. Можно принять работу, предложить другую долю или довнести надбавку (доп. депозит от клиента).
Добавили депозит 20%
Сверх суммы сделки лежит +200 USDT. До потолка 30% ещё 100 USDT. Вывод по-прежнему закрыт: активный контракт держит сумму контракта, плюс надбавку.
Предложили 80% исполнителю.
Исполнителю уйдёт 800 USDT, если он согласится. Кнопка «Принять работу» исчезла. Она появится уже только, если выставить 100%. Предложение можно заменить, надбавку — довносить.
Исполнитель согласился
Контракт завершён: 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