Все статьи
7 мин чтения

Кроссчейн-свапы из TON в Ethereum: как это работает

Кроссчейн своп TON Ethereum через атомарный HTLC-эскроу: quote, build, track, disclose и refund. Некастодиально — ключи и средства остаются у вас.

кроссчейн свопTONEthereumHTLC-эскроунекастодиальностьMCP

Представьте: ваш ИИ-агент держит 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). По отпечатку нельзя восстановить секрет, но, увидев секрет, любой мгновенно проверит, что отпечаток именно от него. Деньги блокируются в эскроу «под этот хэш».
  • Замок по времени (таймаут). Если за отведённое время секрет так и не раскрыли, ячейка автоматически разблокируется обратно в пользу того, кто её заполнял.

Как это даёт атомарность в связке двух сетей:

  1. На стороне TON блокируются ваши GRAM/USDT в эскроу под хэш H.
  2. Контрагент (маркет-мейкер), увидев блокировку, зеркалит эскроу на Ethereum под тот же H — резервирует ваш ETH.
  3. Чтобы забрать ETH на Ethereum, вы раскрываете секрет S. Но раскрытие S делает его публичным в блокчейне.
  4. Контрагент видит 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.

Первый своп за минуту

  1. Получите бесплатный ключ Hobby — без карты, выдаётся сразу после входа.
  2. Пропишите конфиг (локальный или hosted).
  3. Дайте агенту промпт из раздела выше и подпишите эскроу-транзакцию своим кошельком.

Коротко

Кроссчейн между разными сетями не обязан строиться на доверии. Атомарный 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 запр/мин, карта не нужна.