Кроссчейн-свапы из TON в Ethereum: как это работает
Кроссчейн своп TON Ethereum через атомарный HTLC-эскроу: quote, build, track, disclose и refund. Некастодиально — ключи и средства остаются у вас.
Представьте: ваш ИИ-агент держит USDT на TON, а пользователь просит «переведи в ETH на Ethereum». Обычный путь — отправить деньги на централизованную биржу, дождаться зачисления, вручную обменять, вывести на нужную сеть. Агент так не умеет: у него нет аккаунта на бирже, нет KYC, а главное — на каждом шаге кто-то держит ваши средства. Стоит одному звену зависнуть, и актив застревает между сетями без гарантии возврата.
Классический ответ индустрии — мост с посредником, которому вы отдаёте деньги «на подержать». Именно такие мосты и взламывают на сотни миллионов. Для автономного агента это неприемлемо: ему нужен обмен, где либо сделка проходит целиком, либо каждый получает свои средства обратно — без доверенного посредника. Именно это решает кроссчейн-своп из TON в Ethereum через атомарный HTLC-эскроу. Ниже разберём, как он устроен изнутри, на реальных инструментах MCP-сервера TONNode — без кастодиальности и без магии.
Что такое кроссчейн-свап TON → Ethereum и почему он атомарный
Кроссчейн-свап — это обмен актива в одной сети на актив в другой без общего блокчейна, который мог бы записать обе операции одной транзакцией. TON физически не может «увидеть» транзакцию в Ethereum, а Ethereum — в TON. Нет общего судьи. Поэтому наивная схема «я отправил — ты отправил» упирается в проблему доверия: кто ходит первым, тот рискует.
Ключевое слово здесь — атомарность. Атомарная операция либо выполняется целиком, либо не выполняется вообще; промежуточного «наполовину» не бывает. Применительно к свапу это железная гарантия: либо исполняются обе стороны и каждый получает то, что ждал, либо сделка откатывается и каждый забирает свои исходные средства обратно. Состояния «я отдал, а мне не пришло» просто не существует как исхода.
Достигается это не доверием к посреднику, а криптографией и таймаутами — механизмом HTLC.
Атомарный HTLC-эскроу простыми словами: хэш, секрет и таймаут
HTLC расшифровывается как Hash Time-Locked Contract — «контракт с блокировкой по хэшу и времени». Звучит сложно, но идея бытовая. Представьте банковскую ячейку с двумя замками:
- Замок по хэшу. Ячейка открывается только тем, кто знает секрет — длинную случайную строку
S. В самой ячейке лежит не секрет, а его «отпечаток» — хэшH = hash(S). По отпечатку нельзя восстановить секрет, но, увидев секрет, любой мгновенно проверит, что отпечаток именно от него. Деньги блокируются в эскроу «под этот хэш». - Замок по времени (таймаут). Если за отведённое время секрет так и не раскрыли, ячейка автоматически разблокируется обратно в пользу того, кто её заполнял.
Как это даёт атомарность в связке двух сетей:
- На стороне TON блокируются ваши GRAM/USDT в эскроу под хэш
H. - Контрагент (маркет-мейкер), увидев блокировку, зеркалит эскроу на Ethereum под тот же
H— резервирует ваш ETH. - Чтобы забрать ETH на Ethereum, вы раскрываете секрет
S. Но раскрытиеSделает его публичным в блокчейне. - Контрагент видит
Sи этим же секретом забирает ваши средства из TON-эскроу.
Секрет один на обе ноги сделки. Как только он раскрыт для получения ETH, он автоматически разблокирует и TON-сторону. Раскрыть его для одной ноги, не отдав другую, невозможно. А если что-то пошло не так и S не раскрыт — по истечении таймаута обе стороны делают возврат. Отсюда и «атомарность»: третьего исхода нет. Никакого доверия к серверу-посреднику эта схема не требует по построению.
Полный поток из пяти инструментов: quote → build → track → disclose/refund
В TONNode весь HTLC-обмен разложен на пять инструментов. Порядок вызовов повторяет логику HTLC один в один.
1. get_crosschain_quote — котировка
Первым делом узнаём условия: сколько ETH (или USDT в Ethereum) вы получите за свои средства в TON, с учётом ликвидности и комиссий. Возвращает курс, ожидаемую сумму на выходе и параметры маршрута. Это чтение — оно ничего не блокирует и не подписывает.
2. build_crosschain_swap_tx — неподписанная HTLC-эскроу транзакция + секрет
Здесь рождается сделка. Инструмент возвращает неподписанную транзакцию, которая заблокирует ваши средства в HTLC-эскроу под хэш секрета, и — отдельно — сам секрет S. Критично: секрет уходит вам, а не остаётся на сервере. Транзакцию подписывает ваш кошелёк через TonConnect, сервер к подписи не прикасается. Именно этот секрет вы позже раскроете, чтобы завершить сделку, — а если сделка зависнет, заблокированное вернётся вам по таймауту, без раскрытия секрета.
3. track_crosschain_swap — фазы сделки на обеих сетях
После того как вы подписали и отправили эскроу-транзакцию, нужно понимать, где сейчас сделка: заблокированы ли ваши деньги на TON, появился ли встречный эскроу на стороне Ethereum, готово ли всё к расчёту. track_crosschain_swap показывает фазы на обеих сетях сразу — это ваш общий взгляд поверх двух блокчейнов. Вызываете его, пока сделка не дойдёт до состояния «готово к раскрытию секрета».
4a. disclose_crosschain_secret — раскрыть секрет для расчёта
Когда трекинг подтвердил, что встречная сторона готова и заблокирована он-чейн, вы раскрываете секрет. Это финальный шаг: раскрытие запускает расчёт — вы забираете ETH, контрагент этим же секретом забирает ваши GRAM/USDT. Важно вызывать его только после проверки готовности он-чейн через track_crosschain_swap — раскрыть секрет раньше времени означало бы отдать ключ до того, как вторая половина ячейки заполнена.
4b. build_crosschain_refund — вернуть средства, если сделка зависла
Страховочный сценарий. Если встречная сторона так и не исполнилась — контрагент не зеркалил эскроу, истёк таймаут — build_crosschain_refund собирает неподписанную транзакцию возврата ваших средств из эскроу. Тот самый второй замок — по времени. Секрет не раскрывается, заблокированное возвращается вам. Это аварийный предохранитель атомарности: зависшая сделка не съедает ваши деньги.
Схематично весь путь:
get_crosschain_quote → сколько получу
build_crosschain_swap_tx → неподписанная HTLC-tx + секрет (секрет у вас)
↓ (подписал в кошельке, отправил)
track_crosschain_swap → фазы на TON и на Ethereum
├─ готово он-чейн → disclose_crosschain_secret → расчёт
└─ зависло, таймаут → build_crosschain_refund → возврат
Подключив сервер, вы просто просите агента человеческими словами — он сам выстроит цепочку инструментов:
Обменяй 50 USDT с моего TON-кошелька на ETH в сети Ethereum.
Сначала покажи котировку (get_crosschain_quote).
Если курс устраивает — собери HTLC-эскроу (build_crosschain_swap_tx),
дай мне подписать. Потом отслеживай сделку (track_crosschain_swap)
и, когда обе стороны готовы он-чейн, раскрой секрет для расчёта.
Если за таймаут ничего не сдвинется — собери возврат.
Почему это некастодиально: сервер не подписывает и не держит ключи
Вернёмся к боли из начала. Обычный мост опасен тем, что вы отдаёте средства под контроль посредника. TONNode устроен иначе, и это его принципиальная позиция: сервер НИКОГДА не подписывает и не хранит средства и приватные ключи.
Что это значит для HTLC-эскроу на практике:
build_crosschain_swap_txотдаёт неподписанную транзакцию — пока вы не подпишете её своим кошельком через TonConnect, ничего не блокируется.- Секрет
Sдержите вы, а не сервер. Без вашего секрета никто не завершит расчёт от вашего имени. - Возврат по таймауту (
build_crosschain_refund) тоже собирается как неподписанная транзакция под вашу подпись. - Даже сгенерированный кошелёк (инструмент
generate_wallet) отдаётся вам и на сервере не остаётся.
Даже если сервер недоступен или скомпрометирован, он физически не может ни увести ваши средства, ни завершить сделку без вашей подписи и вашего секрета. Иными словами, атомарный HTLC защищает вас от контрагента, а некастодиальная архитектура — от самого сервиса. Подробнее про эту модель — в разборе кастодиальный против некастодиального MCP и в статье про некастодиальный своп для агентов на TON.
Для сравнения: официальный @ton/mcp от TON Foundation — это кастодиальный агент-кошелёк, который держит operator-ключ и подписывает сам, и работает только внутри TON без кроссчейна. Разница честная: там автономная трата ценой доверия к ключу, здесь — некастодиальность плюс выход за пределы TON.
Какие сети поддерживаются: Ethereum, Arbitrum, Base, BNB, Polygon, Avalanche
TON здесь всегда выступает источником сделки, а сеть назначения — одна из шести EVM-сетей:
- Ethereum
- Arbitrum
- Base
- BNB Chain
- Polygon
- Avalanche
Механика для всех одинаковая — атомарный HTLC-эскроу. TRON пока не поддерживается. Если целитесь в L2 ради дешёвых комиссий, посмотрите отдельный разбор кроссчейн-свап TON → Arbitrum — поток тот же, отличается только сеть назначения. А зачем это вообще агенту и где тут ценность для TON — в статье про первый кроссчейн-свап и ценность для сети.
Как подключить MCP и запустить первый кроссчейн-свап
TONNode — это hosted MCP-сервер для TON. MCP (Model Context Protocol) — стандарт, по которому ИИ-агенты (Claude, Cursor, ChatGPT/Codex и любой MCP-клиент) вызывают инструменты. Всего инструментов 16, и все 16 доступны на любом тарифе — платите только за пропускную способность.
Локально и бесплатно
Публичный конфиг с полным набором чтения ставится одной командой — npx -y @tonnode/mcp:
{
"mcpServers": {
"ton": {
"command": "npx",
"args": ["-y", "@tonnode/mcp"]
}
}
}
Добавьте это в конфиг вашего MCP-клиента (Claude Desktop, Cursor, Codex, любой MCP-совместимый), и инструменты get_crosschain_quote, build_crosschain_swap_tx, track_crosschain_swap, disclose_crosschain_secret, build_crosschain_refund станут доступны агенту. Пакет @tonnode/mcp — open source (MIT), лежит на npm и GitHub (tonnode/mcp), работает по нативному ADNL-протоколу TON, без HTTP-прослоек.
Hosted — со своим ключом
Для гарантированной пропускной способности подключаете hosted-эндпоинт со своим ключом:
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
Тарифы отличаются только лимитом запросов: Hobby — бесплатно навсегда, 60 запросов/мин; Pro — $29/мес, 300 запросов/мин; Scale — $199/мес, 1200 запросов/мин. Набор из 16 инструментов на всех одинаковый. Бесплатный ключ Hobby выдаётся сразу после входа, без карты. Кстати, о валюте: GRAM — это переименованный Toncoin (переименовали в июне 2026), сеть по-прежнему называется TON, и в котировках вы увидите именно GRAM.
Первый своп за минуту
- Получите бесплатный ключ Hobby — без карты, выдаётся сразу после входа.
- Пропишите конфиг (локальный или hosted).
- Дайте агенту промпт из раздела выше и подпишите эскроу-транзакцию своим кошельком.
Коротко
Кроссчейн между разными сетями не обязан строиться на доверии. Атомарный HTLC-эскроу даёт гарантию «всё или ничего», а некастодиальная архитектура TONNode следит, чтобы ни средства, ни ключи, ни секрет никогда не покидали вашего контроля. Пять инструментов — get_crosschain_quote, build_crosschain_swap_tx, track_crosschain_swap, disclose_crosschain_secret, build_crosschain_refund — покрывают весь жизненный цикл сделки, включая аварийный возврат.
Проверить на живом свапе можно бесплатно: получите ключ Hobby и сделайте первый кроссчейн-свап — без карты, 60 запросов в минуту хватит с запасом. Обзор всех 16 инструментов — на странице MCP.
Дайте вашему агенту доступ к TON
16 MCP-инструментов: чтение, некастодиальные свапы, кроссчейн и кошельки. Бесплатный тариф — 60 запр/мин, карта не нужна.