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

Swap cross-chain TON → Avalanche: cơ chế hoạt động

Swap cross-chain TON → Avalanche qua MCP: escrow HTLC nguyên tử, không lưu ký, server không giữ khóa. Năm tool và một kịch bản thực tế.

swap cross-chain TON Avalancheescrow HTLCMCP không lưu kýTON MCP serverAVAXTonConnect

Vì sao agent cần chuyển giá trị từ TON sang Avalanche

Agent của bạn tìm được một mức giá hời cho tài sản nào đó trên Avalanche, nhưng toàn bộ số dư của nó lại nằm ở GRAM trên TON. Tiếp theo là cái địa ngục quen thuộc: rút GRAM lên sàn, chờ ghi có, làm KYC, mua token cần thiết, rút về mạng Avalanche, và mỗi bước đều phải trả giá bằng cả phí lẫn thời gian. Năm thao tác thủ công, ba bên trung gian phải tin tưởng, và nửa tiếng đồng hồ — đủ để mức giá kia chạy mất.

Với con người, đó là chuyện khó chịu. Với một AI agent tự chủ, đó là thứ không thể dung hòa với chính tính tự chủ: nó không có tài khoản sàn và cũng không có quyền đi xác minh danh tính thay bạn, còn việc dựng một quy trình đáng tin cậy trên nền một bên lưu ký — bên có thể đóng băng lệnh rút bất cứ lúc nào — thì đơn giản là không làm được. Ở mỗi bước đều có ai đó đang giữ tiền của bạn, và agent thì buộc phải cất API key của sàn hoặc seed phrase của ví nóng ở đâu đó.

Swap cross-chain TON → Avalanche giải quyết chuyện này theo cách khác. Không có sàn nào ở giữa. Tiền di chuyển giữa các mạng dựa trên một bảo đảm toán học — “hoặc là cuộc trao đổi diễn ra trên cả hai mạng, hoặc là không ai mất gì cả” — chứ không dựa trên lời hứa của bên trung gian. Hãy xem chính xác nó vận hành thế nào qua các tool MCP của TONNode — không có bên lưu ký và không lưu khóa trên server.

Escrow HTLC nguyên tử giữa TON và Avalanche hoạt động ra sao

Cơ chế cốt lõi là escrow HTLC nguyên tử (hashed timelock contract — escrow có khóa băm và khóa thời gian). Nghe thì cồng kềnh, nhưng ý tưởng lại rất đơn giản, và dễ giải thích nhất bằng phép so sánh với két sắt ngân hàng.

Bạn bỏ tiền vào một chiếc két chỉ mở được bằng đúng một chiếc chìa — secret. Két còn có đồng hồ hẹn giờ: nếu hết thời hạn mà chìa vẫn chưa được tra vào, toàn bộ số bên trong sẽ được trả về cho chủ của nó. Bây giờ hãy đặt hai chiếc két như vậy — một trên TON, một trên Avalanche — rồi khóa cả hai bằng cùng một ổ khóa:

  • Một secret ngẫu nhiên S được sinh ra cùng với hash của nó H = hash(S). Từ hash thì không thể khôi phục lại secret, nhưng lại rất dễ kiểm tra xem một secret được đưa ra có khớp với nó hay không.
  • Ở phía TON, bạn ký quỹ GRAM vào escrow với hashlock H.
  • Ở phía Avalanche, bên đối ứng (market maker) ký quỹ tài sản đích vào escrow của họ với cùng H đó.
  • Khi bạn tiết lộ secret S để nhận tài sản trên Avalanche, S trở thành công khai trên blockchain. Market maker nhìn thấy nó và dùng chính S đó để lấy GRAM của bạn ra khỏi escrow trên TON.

Từ đó mà có chữ nguyên tử. Không thể mở một escrow mà không mở cái còn lại: secret là chung cho cả hai mạng. Hoặc là cả hai bên nhận được tiền của mình, hoặc là hết thời hạn thì cả hai lấy lại phần của mình qua refund. Trạng thái lưng chừng kiểu “tiền đã rời TON nhưng tài sản thì chưa tới” đơn giản là không tồn tại.

Bảo đảm ở đây đến từ mật mã học và cơ chế timeout, chứ không phải từ uy tín của một bên trung gian. Và chính vì thế mà ở giữa không cần đến sàn giao dịch nào.

Năm tool cross-chain: quote, build, track, disclose, refund

Trong TONNode, toàn bộ phần cross-chain được gói gọn trong đúng năm tool MCP, mỗi tool phụ trách một pha của giao dịch:

  • get_crosschain_quote — báo giá: bạn sẽ nhận được bao nhiêu tài sản trên mạng đích cho số GRAM hay jetton của mình, đã tính cả tuyến swap lẫn các timeout.
  • build_crosschain_swap_tx — dựng giao dịch escrow HTLC chưa ký cho TON và trả về secret gắn với nó (cùng hash của secret). Giao dịch do ví của người dùng ký.
  • track_crosschain_swap — cho thấy các pha của giao dịch trên cả hai mạng: khoản ký quỹ của bạn đã xuất hiện trong escrow trên TON chưa, escrow đối ứng trên Avalanche đã có chưa.
  • disclose_crosschain_secret — tiết lộ secret để tất toán, sau khi đã kiểm tra mức độ sẵn sàng on-chain (escrow đối ứng đã có mặt, số lượng và hash khớp nhau).
  • build_crosschain_refund — dựng giao dịch hoàn tiền từ escrow, nếu giao dịch bị treo và đã quá thời hạn.

Năm tool không phải là “ít”. Đó đúng là năm bước mà một swap nguyên tử về mặt vật lý phải có: định giá, ký quỹ, theo dõi, tất toán, và khi có sự cố thì hoàn tiền. Không thừa một cái nào, cũng không thiếu cái nào.

Không lưu ký: server không ký và không giữ khóa

Đây không phải một câu chữ marketing, mà là một ràng buộc kiến trúc. Các tool cross-chain, swap và ví của TONNode đều nghiêm ngặt không lưu ký:

  • Server không bao giờ ký giao dịch và không bao giờ giữ tiền hay khóa riêng.
  • build_crosschain_swap_tx trả về một message TonConnect chưa ký. Chữ ký do ví của người dùng đặt — Tonkeeper, MyTonWallet hay bất kỳ ví tương thích TonConnect nào. Server chỉ dựng đúng phần vỏ (envelope) của giao dịch, chỉ vậy thôi.
  • Secret S của HTLC do server sinh ra và giao lại cho bạn cùng với giao dịch đã dựng — còn việc tiết lộ nó thì vẫn nằm trong tầm kiểm soát của bạn. Ngay cả lời gọi disclose_crosschain_secret cũng là một bước có ý thức sau khi đã kiểm tra on-chain, do bạn khởi xướng, chứ không phải một hành động tự động chạy đâu đó dưới backend.

Nếu server TONNode đột nhiên biến mất giữa chừng, tiền của bạn không mất: nó đang nằm trong escrow trên blockchain, và build_crosschain_refund sẽ trả nó về khi hết thời hạn. Với việc chuyển giá trị giữa các mạng, không lưu ký nghĩa là một điều rất đơn giản: trên server chẳng có gì để trộm và cũng chẳng có gì để đóng băng.

Hãy so với mô hình lưu ký, nơi bên vận hành giữ khóa và tự ký. Cả hai mô hình đều có lý do tồn tại — ranh giới này được mổ xẻ kỹ hơn trong bài về MCP lưu ký và không lưu ký và trong bài phân tích swap không lưu ký cho agent.

Những mạng nào được hỗ trợ (và vì sao TON luôn là nguồn)

Các mạng đích của cross-chain: Ethereum, Arbitrum, Base, BNB Chain, Polygon, Avalanche. TRON hiện chưa được hỗ trợ — đừng đưa nó vào quy trình của bạn.

Một ràng buộc quan trọng về chiều đi: TON luôn đóng vai trò nguồn của swap. Bạn ký quỹ GRAM hoặc jetton vào escrow trên TON, còn tài sản đối ứng thì nhận trên mạng EVM đích. Điều này suy ra từ chính cơ chế: HTLC được khởi tạo bằng một khoản ký quỹ trên TON — nơi ví và số dư của bạn đang nằm — còn bên đối ứng thì phản chiếu lại nó trên mạng đích.

Kết luận thực dụng: nếu agent của bạn sống trên TON và cần đưa giá trị sang Avalanche — thì đây đúng là kịch bản mà toàn bộ thiết kế này hướng tới. Còn nếu cần kéo tiền từ bên ngoài vào TON — tuyến đường đó hiện chưa có. Cross-chain từ TON sang Ethereum vận hành y hệt, chỉ khác tham số mạng đích; phân tích chi tiết nằm ở bài swap TON → Ethereum.

Kịch bản từng bước: swap GRAM → Avalanche

Ghép tất cả lại. Dưới đây là trình tự gọi thực tế; agent tự đi hết trình tự đó, còn bạn chỉ cần ký giao dịch trong ví.

Bước 1. Báo giá. Agent hỏi giá:

“Cho tôi báo giá cross-chain: 500 GRAM từ TON sang USDC trên Avalanche.”

Ẩn bên dưới là get_crosschain_quote. Agent nhìn thấy số lượng đầu ra, tuyến swap và các tham số timelock. Nếu giá ổn — đi tiếp.

Bước 2. Dựng giao dịch escrow HTLC.

“Giá ổn. Hãy dựng giao dịch theo báo giá này tới địa chỉ Avalanche của tôi 0x… và trả về message TonConnect chưa ký cùng hash của secret.”

build_crosschain_swap_tx được gọi. Trả về là giao dịch ký quỹ vào escrow trên TON ở trạng thái chưa ký, cộng với secret và hash H của nó. Người dùng ký message bằng ví qua TonConnect — chính tại khoảnh khắc đó GRAM đi vào escrow trên TON. Server không hề chạm vào chữ ký.

Bước 3. Theo dõi escrow đối ứng.

“Hãy theo dõi giao dịch bằng track_crosschain_swap cho tới khi trên Avalanche xuất hiện escrow đối ứng mang hash của tôi.”

track_crosschain_swap cho thấy các pha trên cả hai mạng. Ta chờ market maker ký quỹ tài sản đích vào escrow của họ trên Avalanche dưới cùng H đó. Chừng nào escrow đối ứng chưa có — tuyệt đối không được tiết lộ secret.

Bước 4. Tiết lộ secret và tất toán. Khi việc theo dõi đã xác nhận mọi thứ sẵn sàng on-chain:

“Escrow đối ứng đã có mặt. Hãy kiểm tra tình trạng sẵn sàng on-chain rồi tiết lộ secret bằng disclose_crosschain_secret.”

disclose_crosschain_secret trước hết kiểm tra mức độ sẵn sàng (escrow đối ứng tồn tại, số lượng và hash khớp nhau), sau đó mới tiết lộ secret. Secret này mở khóa cả hai escrow: bạn nhận USDC trên Avalanche, đối tác dùng chính S đó để lấy GRAM ra khỏi escrow trên TON. Giao dịch khép lại một cách nguyên tử.

Bước 5 (chỉ khi có sự cố). Hoàn tiền. Nếu escrow đối ứng mãi không xuất hiện và giao dịch bị treo — không tiết lộ secret. Ta chờ hết thời hạn rồi gọi build_crosschain_refund:

“Giao dịch bị treo, đã hết thời hạn. Hãy dựng lệnh hoàn tiền bằng build_crosschain_refund.”

Tool dựng giao dịch trả GRAM từ escrow trên TON về lại cho bạn; người dùng ký nó bằng ví. Việc mất tiền vì một đối tác treo giữa chừng là chuyện không thể xảy ra by design — timelock bảo vệ số tiền đó.

Hãy để ý tới kỷ luật ở đây: secret chỉ được tiết lộ sau khi việc theo dõi đã xác nhận escrow đối ứng. Tiết lộ nó sớm hơn là cách duy nhất để tự đưa mình vào thế nguy hiểm, và vì thế bước này được tách hẳn ra thành một tool tường minh, chứ không giấu vào phần chạy tự động.

Kết nối MCP server và bước tiếp theo

Trước hết là một ngã rẽ quan trọng, để bạn khỏi mất thời gian. Gói @tonnode/mcp là open source (MIT, GitHub tonnode/mcp), chạy trên giao thức ADNL gốc của TON, không cần lớp HTTP trung gian. Khi chạy local theo config công khai, nó cho bạn trọn bộ tool đọc (8 tool read: số dư, trạng thái account, giao dịch, get-method và những thứ khác) — như vậy là đủ để đọc dữ liệu TON, nhưng swap, cross-chain và ví thì không có trong đó. Config local cho MCP client (Claude, Cursor, Codex, bất kỳ client tương thích MCP nào):

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

Năm tool cross-chain trong bài này (cũng như swap và tạo ví) chỉ hoạt động qua hosted endpoint mcp.tonnode.io với Bearer key. Key Hobby là miễn phí và được cấp ngay sau khi đăng nhập, không cần thẻ (60 request/phút), nhưng đó vẫn là một hosted key chứ không phải chỉ chạy npx local suông. Config cho pipeline cross-chain:

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

Vài dữ kiện giúp gỡ sạch thắc mắc:

  • TONNode có tổng cộng 16 tool. Cả 16 tool đều có mặt trên mọi gói cước — bạn chỉ trả tiền cho băng thông, chứ không phải để “mở khóa tính năng”. Khác biệt giữa hai config phía trên không nằm ở bộ tool, mà ở điểm kết nối: npx local chỉ cho đọc, còn hosted endpoint kèm key thì mở ra trọn bộ, bao gồm cả năm tool cross-chain.
  • GRAM chính 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.
  • Key Hobby miễn phí — 60 request mỗi phút, không cần thẻ, đủ để chạy trọn một pipeline cross-chain đầy đủ.

Bước tiếp theo

Nếu agent của bạn đã sống trên TON và bạn cần đưa giá trị sang Avalanche (hoặc Ethereum, Base, Arbitrum, BNB Chain, Polygon) — hãy ghép chuỗi get_crosschain_quote → build_crosschain_swap_tx → track_crosschain_swap → disclose_crosschain_secret và giữ build_crosschain_refund làm phương án bảo hiểm. Còn vì sao nên xử lý cross-chain từ TON qua MCP thay vì qua sàn, chúng tôi phân tích riêng trong bài viết này.

Nhận key Hobby miễn phí và gắn các tool cross-chain ngay bây giờ: tonnode.io/dashboard?plan=hobby. Không cần thẻ, 60 request/phút là đủ để chạy trọn pipeline và tận mắt thấy HTLC nguyên tử vận hành.

Muốn xem toàn bộ 16 tool — trang tool. Còn những gì đang được làm tiếp — roadmap.

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