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

Cross-chain swap TON sang BNB Chain hoạt động thế nào

Cross-chain swap TON BNB: escrow HTLC nguyên tử chuyển giá trị từ TON sang BNB Chain theo cách không lưu ký, qua các MCP tool của TONNode.

cross-chain swapTONBNB ChainHTLCkhông lưu kýMCP

Một agent được giao nhiệm vụ "đổi GRAM lấy BNB rồi trả tiền cho đối tác trên mạng BNB Chain" sẽ vấp phải bức tường ngay ở bước đầu tiên. Nó không có cách nào an toàn để chuyển giá trị giữa hai blockchain vốn chẳng biết gì về nhau. Con đường kinh điển là cầu nối tập trung hoặc sàn giao dịch: nạp coin vào, đặt niềm tin, chờ đợi và hy vọng tiền không kẹt lại giữa hai mạng. Với một AI agent tự chủ thì điều đó là không chấp nhận được: nó không thể "tin tưởng" một bên lưu ký, không có quyền giao khóa của người khác cho bên thứ ba, và cũng không có tay để tự mình gỡ một giao dịch đang bị treo.

Cần một cách dịch chuyển giá trị từ TON sang BNB Chain sao cho hoặc mọi thứ diễn ra trọn vẹn, hoặc mọi thứ quay ngược trở lại — không có trung gian nào giữ tiền. Đó chính xác là điều mà cross-chain swap qua escrow HTLC nguyên tử làm được. Dưới đây ta sẽ mổ xẻ cơ chế của nó, xem agent dùng năm MCP tool nào của TONNode để hoàn tất giao dịch, và vì sao server không một lần nào chạm vào tiền của bạn.

Cross-chain swap TON → BNB Chain là gì và agent cần nó để làm gì

Cross-chain swap là việc đổi tài sản ở mạng này lấy tài sản ở mạng khác, trong khi giữa chúng không hề có một sổ cái chung. TON và BNB Chain là hai mạng độc lập với máy ảo riêng; chúng không có một "ngân hàng" chung nào để chỉ việc ghi lại số dư. Vậy nên cần một giao thức đồng bộ hai lần chuyển tiền độc lập sao cho chúng trở nên không thể tách rời.

Trong TONNode, cross-chain luôn đi từ TON với vai trò nguồn sang mạng EVM đích — trường hợp của chúng ta là BNB Chain. Không có chiều ngược lại, cũng không có "BNB làm nguồn": TON luôn là điểm xuất phát. Bạn khóa GRAM hoặc jetton ở phía TON, và nhận tài sản ở phía BNB Chain.

GRAM là Toncoin sau khi đổi tên vào tháng 6/2026. Mạng lưới vẫn gọi là TON, chỉ có tên đồng coin là thay đổi.

Agent cần điều đó để làm gì? Bởi các bài toán thực tế hiếm khi gói gọn trong một mạng duy nhất. Một agent thủ quỹ giữ ngân khố bằng GRAM, nhưng nhà cung cấp lại cần được trả trên BNB Chain. Một trading bot nhìn thấy cơ hội arbitrage giữa DEX trên TON và trên BNB. Một trợ lý nhận lệnh "chuyển số tiền tương đương 50 GRAM cho đối tác trên BSC". Trong mọi trường hợp đều cần một cách vượt qua ranh giới giữa các mạng — tất định, không cần bên lưu ký và không cần can thiệp thủ công.

Escrow HTLC nguyên tử hoạt động ra sao: secret, hash và timelock

HTLC là viết tắt của Hashed Timelock Contract — hợp đồng có khóa băm và timelock. Nghe thì phức tạp, nhưng phép so sánh lại rất đơn giản.

Hãy hình dung hai két sắt: một cái nằm ở TON, một cái ở BNB Chain. Cả hai cùng được khóa bằng đúng một ổ khóa, và ổ khóa đó chỉ mở được bằng một chiếc chìa duy nhất — một số ngẫu nhiên, tức "secret" S. Thứ được đưa lên blockchain không phải bản thân secret, mà là hash của nó H = hash(S) — giống như dấu vân tay của ổ khóa. Ai cũng có thể kiểm tra chiếc chìa có khớp ổ hay không, nhưng từ dấu vân tay thì không thể dựng lại được chìa.

Két ở phía BNB Chain không phải do bạn nạp: chân đối ứng do đối tác dựng lên — một resolver (nhà tạo lập thị trường), người khóa BNB dưới cùng hash H, với dự tính sẽ lấy được GRAM của bạn ở phía TON bằng chính secret đó. Chính vì vậy giao dịch mang tính đối xứng: cả hai bên bị khóa bằng cùng một ổ khóa.

Sau đó hai điều kiện bắt đầu phát huy tác dụng:

  • Khóa băm. Chỉ có thể rút tiền khỏi két khi xuất trình được secret khớp với hash đã công bố. Ngay khi secret bị lộ ra ở một phía, nó cũng lộ ra ở phía kia — và chân thứ hai của giao dịch được thực thi bằng chính chiếc chìa ấy. Ai rút tiền thì bắt buộc phải trình S dưới dạng công khai on-chain.
  • Timelock. Mỗi két đều có một đồng hồ đếm ngược. Nếu giao dịch chưa hoàn tất trước khi timelock hết hạn, tiền sẽ quay về chủ sở hữu ban đầu. Các timelock được đặt sao cho bên tiết lộ secret trước không thể lừa được bên đối ứng.

Kết quả là tính nguyên tử: hoặc cả hai chân đều được thực thi, hoặc cả hai đều được hoàn lại. Trạng thái lưng chừng — nơi bạn đã đưa GRAM đi mà BNB thì không tới — về mặt vật lý là không tồn tại. Ở đây không có bên thứ ba nào "bảo đảm" cho giao dịch — sự bảo đảm đến từ toán học của hàm băm và logic timelock trong các contract. Đây cũng chính là cơ chế đứng sau atomic swap và các khoản thanh toán Lightning, chỉ khác là được điều chỉnh cho TON và EVM.

Năm tool của một giao dịch: báo giá, dựng, theo dõi, tiết lộ, hoàn tiền

Toàn bộ vòng đời của một cross-chain swap trong TONNode được phủ bởi năm MCP tool. Agent gọi chúng lần lượt — như các nấc thang của cùng một giao dịch.

get_crosschain_quote — báo giá

Trả về báo giá cho giao dịch TON → BNB Chain: bạn đưa đi bao nhiêu ở phía TON và nhận về bao nhiêu ở phía BNB Chain. Mọi swap đều bắt đầu từ đây — agent cho người dùng xem con số trước khi bất cứ thứ gì bị khóa lại.

build_crosschain_swap_tx — dựng giao dịch + secret

Trả về giao dịch escrow HTLC chưa ký cộng với secret. Giao dịch do ví của người dùng ký qua TonConnect, chứ không phải server. Secret S được sinh ra ngay tại đây và ở lại phía người dùng/agent — chính nó sau này sẽ mở khóa chân thứ hai. Server đã sinh ra giao dịch và hash, nhưng chữ ký cùng quyền sở hữu secret vẫn nằm ở người dùng.

track_crosschain_swap — theo dõi các pha

Hiển thị các pha của giao dịch trên cả hai mạng — cả TON lẫn BNB Chain: chân bên TON đã bị khóa chưa, chân đối ứng trên BNB Chain đã xuất hiện chưa, secret đã được tiết lộ chưa, việc thanh toán đã hoàn tất chưa. Đây là đôi mắt của agent: thiếu bước theo dõi này, nó sẽ không biết khi nào tiết lộ secret là an toàn và khi nào đã đến lúc hoàn tiền.

disclose_crosschain_secret — tiết lộ secret

Tiết lộ secret để thanh toán — nhưng chỉ sau khi đã kiểm tra mức độ sẵn sàng on-chain. Tool sẽ không đưa S ra một cách mù quáng: trước tiên nó xác nhận rằng chân đối ứng trên BNB Chain thực sự đã ở đó và các điều kiện đã được thỏa mãn. Điều này bảo vệ bạn khỏi tình huống secret đã lộ mà bên kia thì chẳng có gì để nhận.

build_crosschain_refund — hoàn tiền từ escrow

Dựng giao dịch hoàn tiền từ escrow nếu giao dịch bị treo — sau khi timelock hết hạn. Cũng là một giao dịch chưa ký dành cho TonConnect. Đây là sợi dây bảo hiểm mà ta sẽ quay lại ở cuối bài.

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

Đây là lằn ranh chính của TONNode. Các tool swap, cross-chain và ví đều 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 tư — nó chỉ trả về những message TonConnect chưa ký, và ví của người dùng mới là bên đặt chữ ký.

Cụ thể với cross-chain:

  • build_crosschain_swap_tx trả về giao dịch không có chữ ký. Chữ ký do ví của người dùng đặt — Tonkeeper, MyTonWallet, hay bất kỳ ví nào tương thích TonConnect. Chừng nào người dùng chưa xác nhận giao dịch thì chưa có gì bị khóa cả.
  • Secret S đi về phía client. Server không thể lén rút tiền khỏi escrow: muốn làm vậy cần chữ ký của chủ sở hữu, mà server thì không có.
  • Ngay cả việc hoàn tiền cũng là một giao dịch chưa ký: người khởi tạo hoàn tiền là người dùng, không phải server.

Kết luận thực tế: một server bị xâm nhập cũng không dẫn tới mất tiền — ở đó chẳng có gì để lấy đi: không khóa, không chữ ký, không quyền kiểm soát escrow. Thứ tệ nhất có thể "hỏng" là việc từ chối dịch vụ (agent không lấy được báo giá), chứ không phải mất tiền.

Hãy so sánh với mô hình lưu ký, nơi agent-ví giữ operator key và tự ký. Cả hai mô hình đều có lý do tồn tại, nhưng với cross-chain qua hai mạng độc lập thì tính không lưu ký đặc biệt quan trọng — bạn chẳng muốn một bên trung gian kiểm soát khoản tiền đang treo lơ lửng giữa hai blockchain. Phân tích chi tiết hai cách tiếp cận nằm ở bài MCP lưu ký hay không lưu ký, còn chuyện này diễn ra thế nào với một swap thông thường trong nội bộ TON thì có ở Swap không lưu ký cho agent.

Những mạng nào được hỗ trợ (và vì sao TRON thì chưa)

Cross-chain trong TONNode luôn đi từ TON sang mạng EVM đích. Các đích được hỗ trợ:

  • Ethereum
  • Arbitrum
  • Base
  • BNB Chain (trường hợp của chúng ta)
  • Polygon
  • Avalanche

TRON hiện CHƯA được hỗ trợ. Lý do mang tính kỹ thuật: escrow HTLC nguyên tử đòi hỏi mạng đích phải diễn giải các hợp đồng hash-timelock theo cùng một cách trong khuôn khổ giao thức escrow đã chọn. Sáu mạng kể trên đều tương thích EVM và nằm gọn trong mô hình này; TRON, dù nhìn bề ngoài có vẻ giống, lại vận hành theo mô hình riêng và cần một bản triển khai escrow tách biệt. Chừng nào chưa có nó thì TRON chưa nằm trong danh sách, và chúng tôi không tô vẽ điều mong muốn thành sự thật.

Về cặp phổ biến nhất — TON → Ethereum — có một bài phân tích riêng: Cross-chain swap TON → Ethereum. Cơ chế vẫn vậy, chỉ thay đổi mạng đích.

Chạy thử một swap TON → BNB qua MCP theo từng bước

Trước hết hãy kết nối TONNode với agent. Config công khai chạy local @tonnode/mcp là miễn phí và cho bạn trọn bộ tool đọc — nhưng chỉ đọc thôi. Gói này là open source (MIT), chạy theo giao thức ADNL gốc của TON, không cần lớp HTTP trung gian:

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

Một lưu ý quan trọng: năm tool cross-chain không khả dụng qua npx công khai chạy local — ở đó chỉ có đọc. Giao dịch cross-chain đi qua endpoint hosted với key riêng, và cho việc đó thì key Hobby miễn phí là đủ:

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

Với key hosted, cả 16 tool — bao gồm năm tool cross-chain — đều khả dụng trên mọi gói, bắt đầu từ gói Hobby miễn phí. Bạn chỉ trả tiền cho băng thông (Hobby — miễn phí, 60 request/phút; Pro — $29/tháng, 300 request/phút; Scale — $199/tháng, 1200 request/phút). Cross-chain không bị khóa sau gói cao cấp — nhưng npx local thì không dùng được cho nó, bạn cần key hosted.

Giờ đến phần chạy thử. Prompt gửi cho agent có thể viết hoàn toàn tự nhiên, đúng như lời nói thường ngày:

"Hãy đổi 50 GRAM từ ví TON của tôi sang BNB Chain, gửi về địa chỉ 0x…. Trước tiên cho tôi xem báo giá, sau đó dựng giao dịch — tôi sẽ tự ký."

Bên trong, mọi thứ diễn ra như sau:

  1. Báo giá. Agent gọi get_crosschain_quote (nguồn TON, đích BNB Chain, số lượng 50 GRAM) và cho biết bạn sẽ nhận được bao nhiêu ở phía BNB Chain.
  2. Dựng giao dịch. Sau cái "ok" của bạn, agent gọi build_crosschain_swap_tx. Nó nhận về giao dịch escrow HTLC chưa ký cùng secret S. Bạn xác nhận giao dịch trong ví của mình qua TonConnect. Tiền bị khóa trong escrow ở phía TON dưới hash H.
  3. Theo dõi. Agent định kỳ gọi track_crosschain_swap và bám sát các pha trên cả hai mạng: chân TON đã bị khóa chưa, chân đối ứng trên BNB Chain đã dựng lên chưa (do resolver đặt dưới cùng hash H).
  4. Tiết lộ và thanh toán. Ngay khi track_crosschain_swap báo đã sẵn sàng, agent gọi disclose_crosschain_secret. Tool kiểm tra mức độ sẵn sàng on-chain rồi tiết lộ S — secret xuất hiện công khai trên BNB Chain, cả hai chân được thực thi, BNB về tới địa chỉ của bạn.
  5. Xác nhận. Lần gọi track_crosschain_swap cuối cùng cho thấy cả hai phía đã thanh toán xong. Giao dịch khép lại.

Điểm mấu chốt là ở bất kỳ thời điểm nào bạn cũng thấy được trạng thái giao dịch trên cả hai mạng, và chỉ ký đúng thứ mình nhìn thấy. Nếu bạn quan tâm đến triết lý chung của lần đầu tiên dịch chuyển giá trị ra khỏi TON qua MCP — nó được mổ xẻ trong Lần chuyển giá trị cross-chain đầu tiên từ TON.

Nếu giao dịch bị treo: lấy lại tiền từ escrow

Cross-chain là hai mạng độc lập, và đôi khi chân đối ứng không dựng lên được: đối tác gặp trục trặc, mạng quá tải, có gì đó không như ý. Trong mô hình lưu ký, đây là lúc bắt đầu màn trao đổi thư từ với bộ phận hỗ trợ. Còn trong HTLC — chỉ cần chờ timelock.

Tiền không bị khóa vĩnh viễn. Ngay khi timelock hết hạn mà giao dịch vẫn chưa hoàn tất, agent gọi build_crosschain_refund và nhận về giao dịch hoàn tiền chưa ký từ escrow. Bạn ký nó bằng ví của mình qua TonConnect — và số GRAM bị khóa quay trở lại với bạn. Không có chuyện "tiền treo vĩnh viễn": đây là sự bảo đảm được cài ngay trong contract, chứ không phải một lời hứa của dịch vụ.

Prompt có thể như sau:

"Cross-chain swap sang BNB Chain của tôi chưa hoàn tất. Hãy kiểm tra trạng thái, và nếu timelock đã hết hạn thì trả lại tiền cho tôi."

Agent sẽ gọi track_crosschain_swap, xác nhận rằng việc thanh toán chưa diễn ra và timelock đã qua, sau đó dựng lệnh hoàn tiền qua build_crosschain_refund rồi đưa giao dịch cho bạn ký.

Điểm an toàn then chốt: secret chỉ được tiết lộ qua disclose_crosschain_secret sau khi đã kiểm tra mức độ sẵn sàng on-chain. Agent sẽ không rơi vào cái bẫy nơi secret đã lộ mà chẳng có gì để nhận. Hoặc việc thanh toán diễn ra một cách nguyên tử, hoặc timelock kích hoạt lệnh hoàn tiền. Không có phương án thứ ba — đó chính là ý nghĩa của chữ "nguyên tử".


Nhận key miễn phí và bật cross-chain

Năm tool cross-chain nằm trong bộ 16 tool tiêu chuẩn — bạn không cần mua thêm. Hãy lấy key Hobby miễn phí (60 request/phút, không cần thẻ, cấp ngay sau khi đăng nhập) và kết nối TONNode với agent của bạn: tonnode.io/dashboard?plan=hobby.

Muốn xem trước toàn bộ 16 tool cùng tham số của chúng — hãy ghé trang tool: tonnode.io/mcp.

Cross-chain từ TON sang BNB Chain không còn là bài toán "hãy tin vào cầu nối" nữa, mà trở thành một lời gọi tool bình thường — nguyên tử, không lưu ký, và có bảo đảm hoàn tiền nếu có gì đó không ổn.

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ẻ.