Tất cả bài viết
11 phút đọc

Cross-chain swap TON sang Polygon: cơ chế hoạt động

Cross-chain swap TON sang Polygon qua MCP: HTLC escrow nguyên tử đưa giá trị từ TON sang Polygon không lưu ký, server không bao giờ giữ khóa riêng.

cross-chainTONPolygonHTLCkhông lưu kýMCP

Ví USDT của bạn nằm trên TON, còn khoản cần trả lại ở Polygon — nơi gas rẻ, nơi contract DeFi của bạn đã được deploy, nơi người nhận chấp nhận thanh toán. Đường đi thông thường: rút lên sàn, chờ ghi có, bán, mua, rồi rút ngược về Polygon. Bốn bước, bốn khoản phí, KYC và niềm tin đặt trọn vào một bên trung gian đang giữ tiền của bạn trong đúng những phút đó. Với con người, chuyện này chỉ gây khó chịu. Với một AI agent phải tự chạy trọn quy trình đó, con đường này hoàn toàn không dùng được: agent không qua được KYC, và cũng không nên giữ khóa riêng của tài khoản sàn.

Dưới đây là cách giải bài toán đó theo hướng khác — bằng một cross-chain swap nguyên tử từ TON sang Polygon, nơi cả server lẫn agent đều không bao giờ chạm vào khóa của bạn.

Vì sao cần swap từ TON sang Polygon và TONNode làm gì

Cross-chain swap TON sang Polygon là thứ bạn cần khi giá trị nằm ở mạng này còn nơi cần tiêu lại ở mạng khác, và bạn không muốn chờ sàn, cũng không muốn giao tiền của mình cho bên trung gian. Những lý do điển hình:

  • thanh toán cho đối tác chỉ nhận tiền trên Polygon;
  • nạp thêm vào vị thế ở một giao thức đã deploy trên Polygon, trong khi số dư của bạn nằm ở TON;
  • cho AI agent tự chuyển giá trị giữa các mạng theo prompt của bạn — nhưng không trao cho nó quyền truy cập khóa của bạn.

TONNode là một MCP server hosted dành cho TON (website tonnode.io). MCP (Model Context Protocol) là chuẩn để các AI agent (Claude, Cursor, ChatGPT/Codex và mọi MCP client) gọi công cụ bên ngoài. Thay vì phải dạy agent từng REST endpoint rồi ký giao dịch thay nó, bạn đưa cho nó bộ 16 công cụ TON, và nó tự quyết định gọi cái nào. Năm trong số 16 công cụ đó lo phần cross-chain — chính chúng là thứ đưa giá trị từ TON ra ngoài, theo hướng không lưu ký, không lưu khóa trên server.

Một giới hạn quan trọng về cơ chế: trong TONNode TON luôn là nguồn. Tuyến đường là từ TON đi ra; Polygon ở đây là mạng đích, không phải điểm xuất phát.

Một chi tiết về thuật ngữ: GRAM là Toncoin sau khi đổi tên (việc đổi tên diễn ra vào tháng 6/2026), còn bản thân mạng lưới thì vẫn gọi là TON. Từ đây trở đi, GRAM = đồng coin gốc của TON.

Cross-chain swap TON → Polygon hoạt động ra sao: HTLC escrow nguyên tử

Vấn đề của mọi giao dịch trao đổi liên mạng là hai mạng không nhìn thấy nhau. Không có một trọng tài chung nào đảm bảo rằng nếu bạn đã đưa tiền ở TON thì bạn sẽ nhận được tiền ở Polygon. Lời giải kinh điển là HTLC escrow nguyên tử (hashed timelock contract). Hình dung nó như một két sắt có hai ổ khóa và một đồng hồ hẹn giờ.

Cơ chế này dựa trên hai primitive — hashlock (khóa băm) và timelock:

  1. Bí mật và hash của nó. Một bí mật ngẫu nhiên S được sinh ra, rồi tính hash H = hash(S). Contract escrow trên cả hai mạng khóa tiền theo hash H.
  2. Hashlock. Chỉ người xuất trình được S cho ra đúng H mới mở khóa được tiền khỏi escrow. Chừng nào bí mật chưa lộ, tiền vẫn bị khóa ở cả hai phía.
  3. Timelock. Mỗi escrow đều có một hạn chót. Nếu đến hạn mà bí mật vẫn chưa được tiết lộ, số tiền sẽ mở lại cho người gửi rút về — đây là lớp bảo hiểm chống treo giao dịch.

Điểm mấu chốt nằm ở chỗ việc tiết lộ bí mật trên một mạng, về mặt toán học, cho phép lấy tiền ở mạng kia: ngay khi S xuất hiện on-chain, bên đối ứng dùng nó để hoàn tất nửa còn lại của mình. Từ đó sinh ra tính nguyên tử: giao dịch hoặc đi trọn vẹn trên cả hai mạng, hoặc không diễn ra ở đâu cả và tiền quay về. Theo thiết kế, không tồn tại trạng thái lưng chừng kiểu "tiền đã rời TON nhưng chưa tới Polygon".

TONNode điều phối giao thức này bằng năm công cụ, nhưng — về mặt nguyên tắc — bí mật được trao cho bạn chứ không nằm lại trên server, và mọi giao dịch TON đều do ví của bạn ký.

Năm công cụ cross-chain: từ báo giá đến tất toán

Cả năm đều có mặt ở mọi gói cước. Đây là toàn bộ dây chuyền và việc mà từng công cụ đảm nhận.

1. get_crosschain_quote — báo giá

Bạn sẽ nhận được bao nhiêu trên Polygon cho khoản gửi đi từ TON. Agent gọi nó đầu tiên để hiển thị tỷ giá và tuyến đường trước khi có bất cứ thứ gì được ký. Nó trả về các tham số của thương vụ, và giao dịch ở bước sau được dựng từ chính các tham số đó.

2. build_crosschain_swap_tx — giao dịch HTLC escrow chưa ký

Dựng một giao dịch chưa ký để khóa tiền của bạn vào escrow phía TON, và trả về bí mật. Giao dịch ở định dạng message TonConnect; người ký là ví của bạn, không phải server. Bí mật thì bạn tự giữ — nó sẽ cần đến ở bước tất toán.

3. track_crosschain_swap — các pha của giao dịch trên cả hai mạng

Cho biết giao dịch đang ở giai đoạn nào: escrow bên TON đã khóa chưa, escrow đối ứng bên Polygon đã được dựng chưa, mọi thứ đã sẵn sàng để tất toán chưa. Đây là "bảng quan sát" của bạn cho cả hai mạng cùng lúc.

4. disclose_crosschain_secret — tiết lộ bí mật để tất toán

Tiết lộ bí mật để hoàn tất việc tất toán — nhưng chỉ sau khi kiểm tra on-chain đã xác nhận cả hai phía đều sẵn sàng. Thứ tự ở đây mang tính sống còn: không được tiết lộ bí mật trước khi escrow đối ứng thực sự đã được dựng xong trên Polygon. Công cụ này kiểm tra trạng thái của cả hai mạng rồi mới trao bí mật ra để tiết lộ.

5. build_crosschain_refund — lấy tiền về từ escrow

Dựng một giao dịch hoàn tiền chưa ký, trong trường hợp giao dịch bị treo và timelock cho phép lấy lại khoản đang bị khóa. Kịch bản này sẽ được nói kỹ ở phần dưới.

Trong hội thoại với agent, nó trông như thế này:

Swap 250 USDT từ TON sang USDC trên Polygon.
Đầu tiên cho tôi xem báo giá, sau đó dựng giao dịch,
để tôi ký bằng ví, theo dõi trạng thái
và chỉ tiết lộ bí mật khi cả hai phía escrow đã sẵn sàng.

Toàn bộ tuyến đường chạy ngầm bên dưới:

1. get_crosschain_quote       → tỷ giá và tuyến đường TON → Polygon
2. build_crosschain_swap_tx   → HTLC escrow chưa ký + bí mật S
   (người dùng ký trong ví qua TonConnect)
3. track_crosschain_swap      → chờ cả hai mạng sẵn sàng
4. disclose_crosschain_secret → tiết lộ S sau khi kiểm tra on-chain → tất toán
5. build_crosschain_refund    → chỉ khi có chuyện không ổn

Logic hoàn toàn giống swap từ TON sang Ethereum — chỉ khác mỗi mạng đích.

Vì sao đây là không lưu ký: server không ký và không giữ khóa

Đây chính là lằn ranh quan trọng nhất. Không lưu ký không phải một từ marketing, mà là một thuộc tính của kiến trúc. Các công cụ cross-chain của TONNode nghiêm ngặt không lưu ký: server không bao giờ ký và không bao giờ giữ tiền hay khóa riêng của bạn. Nó trả về các message TonConnect chưa ký, còn việc ký là do ví của bạn thực hiện.

Lấy build_crosschain_swap_tx làm ví dụ. Công cụ trả ra bản nháp giao dịch và bí mật — nhưng không thực hiện việc chuyển tiền. Sẽ không có gì nhúc nhích cho tới khi bạn xác nhận trong ví của mình. Khóa riêng không rời khỏi ví và không đi qua server dưới bất kỳ hình thức nào. Với bí mật HTLC cũng vậy: nó được trao cho bạn, nên ngay cả bước tất toán cũng do bạn điều khiển chứ không phải người vận hành server.

Với AI agent, đây là yêu cầu bắt buộc. Một agent tự chủ, dù có quyền truy cập công cụ, cũng không được có khả năng tiêu tiền của bạn khi chưa có chữ ký của bạn. Mô hình không lưu ký mang lại đúng điều đó: agent chuẩn bị giao dịch, còn bạn là người duy nhất phê duyệt nó. Chi tiết hơn về khác biệt giữa hai cách tiếp cận có trong bài phân tích MCP lưu ký và không lưu ký cùng bài viết về cách giao cho agent quyền swap trên TON một cách an toàn.

Nói riêng về @ton/mcp chính thức của TON Foundation. Đó là một công cụ mạnh và chính thức, nhưng về cách thiết kế thì khác: nó là một ví-agent lưu ký (sơ đồ split-key — operator key nằm ở agent, owner key nằm ở người dùng), nó tự ký và không hỗ trợ cross-chain (chỉ TON). Nó có những điểm mạnh riêng — chi tiêu tự chủ, làm việc với NFT và DNS, vị thế chính thức của Foundation. Khác biệt nói thẳng ra là: nó lưu ký và chỉ có TON; TONNode không lưu ký, có cross-chain và có tùy chọn hosted. So sánh đầy đủ nằm ở trang đối chiếu với bản chính thức.

Danh sách đầy đủ các mạng được hỗ trợ (và vì sao chưa có TRON)

Cross-chain swap trong TONNode đi từ TON sang một trong các mạng đích:

  • Ethereum
  • Arbitrum
  • Base
  • BNB Chain
  • Polygon
  • Avalanche

Trong mọi trường hợp, TON là nguồn còn mạng được liệt kê là đích. TRON hiện chưa được hỗ trợ. HTLC escrow nguyên tử đòi hỏi phía mạng đích phải có sẵn một cơ chế hashed-timelock contract tương thích, được tích hợp vào tuyến đường của giao dịch. Sáu mạng kể trên thuộc họ tương thích EVM, nơi TON dựng được escrow đối ứng. TRON thì chưa được đưa vào tuyến này — không phải vì "về nguyên tắc là không thể", mà vì hiện tại sản phẩm chưa có phần tích hợp cụ thể cho mạng đó. Đừng xây kế hoạch dựa trên TRON chừng nào nó chưa xuất hiện chính thức trong danh sách.

Logic của Polygon không khác gì tuyến Ethereum; nếu cần một cái nhìn tổng quan, có bài phân tích về MCP đầu tiên đưa giá trị cross-chain rời khỏi TON.

Phải làm gì nếu giao dịch bị treo: hoàn tiền từ escrow

Cross-chain là hai mạng độc lập, và đôi khi phía thứ hai không xác nhận: escrow đối ứng không được dựng lên, đối tác biến mất, mạng đích bị nghẽn. Trong mô hình lưu ký, vào lúc đó bạn phụ thuộc vào bên trung gian đang giữ tiền của mình. Với HTLC escrow nguyên tử thì không.

Mỗi contract escrow đều có timelock. Nếu giao dịch không hoàn tất và thời gian đã hết, tiền không "bốc hơi" cũng không nằm lại ở server — số tiền đó quay về với bạn. Khi đó bạn cũng chưa hề tiết lộ bí mật (và như vậy là đúng — disclose_crosschain_secret sẽ không trao nó ra chừng nào on-chain chưa xác nhận cả hai phía đều sẵn sàng).

Về mặt kỹ thuật, việc hoàn tiền do build_crosschain_refund đảm nhận: nó dựng một giao dịch chưa ký, bạn ký bằng ví của mình, và khoản tiền đang bị khóa quay về địa chỉ TON của bạn. Ở đây server cũng không ký và không giữ bất cứ thứ gì.

Swap sang Polygon bị treo và không tất toán được.
Hãy trả tiền của tôi về từ escrow.

Agent gọi track_crosschain_swap, xác nhận rằng việc tất toán chưa diễn ra và timelock cho phép hoàn tiền, sau đó gọi build_crosschain_refund — còn bạn thì ký. Kết cục tệ nhất của một giao dịch bị treo ở đây là lấy lại được tiền của mình, chứ không phải mất nó.

Cách kết nối và dùng thử: config MCP và key miễn phí

Có thể bắt đầu miễn phí và chạy local. Package @tonnode/mcp là open source (MIT), nằm trên npm và GitHub (tonnode/mcp), chạy theo giao thức ADNL gốc của TON, không qua lớp trung gian HTTP nào.

Miễn phí, chạy local. Đầy đủ bộ công cụ đọc dữ liệu, dùng config công khai, không cần key:

{
  "mcpServers": {
    "ton": {
      "command": "npx",
      "args": ["-y", "@tonnode/mcp"]
    }
  }
}

MCP client sẽ tự khởi động server qua npx.

Endpoint hosted — khi bạn cần băng thông được đảm bảo và key riêng:

{
  "mcpServers": {
    "ton": {
      "type": "http",
      "url": "https://mcp.tonnode.io/mcp",
      "headers": { "Authorization": "Bearer tn_live_…" }
    }
  }
}

Ở mọi gói cước đều có đủ 16 công cụ — bạn chỉ trả tiền cho băng thông, chứ không phải trả để mở khóa tính năng:

  • Hobby — miễn phí vĩnh viễn, 60 request/phút;
  • Pro — $29/tháng, 300 request/phút;
  • Scale — $199/tháng, 1200 request/phút.

Key Hobby miễn phí được cấp ngay sau khi đăng nhập, không cần thẻ. Thanh toán các gói trả phí bằng GRAM hoặc USDT trên mạng TON qua TonConnect, hoặc bằng BTC/ETH/SOL và các coin khác qua tài khoản xRocket trong Telegram.

Vài lời nói thẳng để tránh kỳ vọng quá đà: độ sâu lịch sử archive vẫn còn nằm trong roadmap (node đang đồng bộ), TONNode hiện chưa có công cụ cho NFT và DNS, cũng như không có webhook, không có relayer gasless và không có cam kết uptime bằng văn bản. Sản phẩm cross-chain chính xác là năm công cụ được mô tả ở trên, không hơn, và chúng thật sự đưa giá trị từ TON sang Polygon theo hướng không lưu ký.


Hãy tự thử cross-chain. Nhận key Hobby miễn phí và dựng swap TON → Polygon đầu tiên bằng agent của bạn: tonnode.io/dashboard?plan=hobby. Nếu muốn tìm hiểu trước toàn bộ bộ 16 công cụ — hãy ghé trang về các công cụ.

Cho agent của bạn quyền truy cập TON

16 công cụ MCP: đọc, swap phi lưu ký, cross-chain và ví. Gói miễn phí — 60 req/phút, không cần thẻ.