Создание и оплата
- 1. Создание. Покупатель входит, привязывает кошелёк Tron и создаёт сделку: адрес контрагента, сумма, срок проверки (3–30 дней), описание. Сервер сохраняет сделку и возвращает аргументы для одного вызова в блокчейне:
factory.createEscrow. Покупатель подписывает его, и разворачивается новый клон эскроу (около 30 TRX за энергию). - 2. Оплата. Покупатель подписывает две транзакции:
USDT.approve(escrow, amount)иescrow.fund(). USDT переходят от покупателя в эскроу, и начинается срок проверки. Продавец получает письмо, если указал адрес.
Чем заканчивается оплаченная сделка
- Обычный путь: покупатель выпускает средства. Продавец выполняет заказ вне блокчейна. Покупатель нажимает «Выпустить». Контракт переводит продавцу сумму минус комиссию 1%, а 1% получателю комиссии. Статус: Released.
- Продавец делает возврат. Если продавец не может выполнить заказ, он нажимает «Вернуть». Контракт возвращает покупателю всю сумму без комиссии. Статус: Refunded.
- Срок проверки истёк без действий. Если срок проверки закончился, а покупатель не выпустил средства и не открыл спор, продавец может нажать «Забрать». Выплата такая же, как при выпуске. Статус: Claimed by seller.
Если что-то пошло не так
Спор. Любая сторона может открыть спор ДО окончания срока проверки. Обе стороны излагают свою позицию в приложении, а контракт в блокчейне просто замораживается в статусе Disputed.
Арбитраж → 24-часовое окно апелляции
Оператор рассматривает спор и публикует решение: кому и сколько выплатить. С этого начинается 24-часовое окно, в течение которого:
- Любая сторона может нажать «Принять решение». Если приняли обе, выплата в блокчейне происходит сразу.
- Любая сторона может подать апелляцию (не более 2 на спор). Оператор рассматривает её и либо исправляет решение (новый получатель или сумма), либо подтверждает его. В обоих случаях начинается новое 24-часовое окно.
- Если окно истекает без апелляции, выплата в блокчейне происходит автоматически.
Вызов в блокчейне — escrow.resolve(payee, toPayee), подписанный ключом оператора-арбитра. Комиссия удерживается из доли получателя; остаток, если он есть, уходит другой стороне без комиссии.
Статус после исполнения: Resolved.
resolve() только после открытия спора — это ограничено логикой статусов контракта.Заморозки Tether: Tether (эмитент USDT-TRC20) может в любой момент заморозить любой адрес, включая контракты эскроу. Это вне нашего контроля. Распределение рисков описано в Условиях использования.