Solomon Deal: как мы строим систему гарантирования сделок на TON без посредников

Как Telegram-бот, смартконтракт на Tact и теория игр позволяют заключать безопасные сделки в децентрализованной среде
TL;DR
Бот написан на Python, работает поверх Telegram
Смартконтракты на языке Tact в сети TON
Арбитраж между пользователями с мотивацией по теории игр
Судьи выбираются случайно, голосуют анонимно, получают награду
Средства хранятся только в смартконтракте, бот не имеет доступа
Бэкэнд — это сам Telegram-бот с возможностью fail-safe восстановления
Почему это вообще нужно?
Криптовалюты за последние годы доказали свою состоятельность как средство хранения стоимости и спекуляции. Но как средство обмена — по-прежнему работают слабо. Главная причина — отсутствие доверительного слоя: нет привычных гарантий, судов, посредников. Если кто-то кого-то обманул, то в децентрализованной среде — это почти всегда необратимо.
В фиатной системе роль "гаранта" берёт на себя государство. В блокчейне же — эта роль должна быть перераспределена. Мы решили попробовать построить этот слой заново: на основе смартконтрактов, Telegram и игрового баланса мотиваций.
Архитектура решения
Бэкенд: Python-бот, работающий в Telegram. Почему Telegram?
Встроенное хранилище (файлы, чат-история, логика общения)
Безопасность (двухфакторка, аудит Telegram API)
Нет необходимости в покупке DNS и выделенного сервера с белым IP, или аренды VPS
Смартконтракты: написаны на языке Tact, развёрнуты в сети TON. Исходники контракта открыты и доступны для аудита: verifier.ton.org
Взаимодействие с блокчейном реализовано через два механизма:
tonconnect — используется для взаимодействия с кошельками пользователей (предложение подписать и отправить транзакцию)
pytoniq — Python-библиотека для прямого взаимодействия с liteserver: чтение блоков, анализ транзакций, отправка собственных транзакций
Модель безопасности и хранения средств
Ключевая идея: ни бот, ни сервер не имеют доступа к средствам. Все деньги, относящиеся к сделке, проходят только через смартконтракт.
Судейская оплата (небольшие суммы) обрабатывается централизованно — чтобы избежать накладных расходов на комиссии и реализовать массовую рассылку выплат без дорогих операций на уровне блокчейна.
Если бот или сервер по каким-то причинам недоступен:
При заключении сделки пользователи получают инструкцию на случай отказа сервера
Смартконтракт включает таймер, по завершению которого средства можно разблокировать вручную, если управление смартконтрактом через бот невозможно
Разрешение споров: распределённый арбитраж
Как работает:
В случае конфликта обе стороны присылают свои версии (текст, сканы, PDF, видео)
Рандомно выбирается набор судей из числа зарегистрированных
Судьи голосуют, не зная друг друга. Механизм — Soft Majority Voting (SMV)
После последнего голоса результат отправляется в смартконтракт, и средства автоматически перечисляются победившей стороне
Мотивация:
Судьи получают награду за участие
Если судья голосует против большинства, его рейтинг уменьшается в 2 раза
Но рейтинг восстанавливается с каждым последующим делом (механизм "прощения")
Потери за ошибку размазаны на 8 последующих дел, чтобы не демотивировать участвовать
Как оформляется сделка?
Пользователи могут описывать условия простым текстом или прикладывать документы
Ни текст, ни документы не анализируются автоматически
Смартконтракт выступает только как условный хранитель средств, который получает извне команду: "перечислить A или B"
Таким образом судьи не могут украсть средства, и вся логика спора отделена от самого контракта
Сложности и находки
Работа с TON и Tact — это одновременно увлекательно и сложно. Документации по многим библиотекам либо нет, либо она устарела. Периодически приходится идти напрямую к разработчикам — и, к счастью, они действительно открыты к диалогу. Несколько багов нами были найдены прямо в приложениях кошельков и библиотек.
Что дальше?
Возможные направления развития и создание следующих модулей:
Маркетплейс
Волонтерскую организацию
Нечто похожее на интернет государство