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

Swap cross-chain TON → Base: cơ chế hoạt động thực sự

Swap cross-chain TON → Base qua MCP: escrow HTLC, không lưu ký, 5 tool. Cách agent chuyển giá trị từ TON sang Base mà không cần bridge lưu ký.

cross-chainTONBaseHTLCswap không lưu kýMCP

AI agent của bạn vừa phát hiện một cơ hội sinh lời: vốn của người dùng nằm trên TON, còn protocol hay tài sản cần dùng thì lại ở trên Base. Câu trả lời kinh điển là "cứ đẩy qua bridge". Nhưng bridge nghĩa là có ai đó giữ tiền của bạn ngay tại thời điểm chuyển: contract của bridge, relayer, một multisig gồm những người ký mà bạn chưa từng chọn. Vài năm gần đây, chính các bridge lưu ký đã cuốn đi hơn một tỷ đô la tiền của người dùng — không phải vì mật mã học yếu, mà vì luôn có ai đó giữ tiền ở quãng giữa.

Với một agent tự vận hành, đây là vấn đề kép. Thứ nhất, agent không được phép ký một giao dịch trao tiền cho bên thứ ba mà không có bảo đảm lấy lại. Thứ hai, ngay từ đầu agent đã không nên nắm private key của bạn. Còn bridge kinh điển thì đòi hỏi đúng điều đó — niềm tin vào bên trung gian.

Có một con đường khác — escrow HTLC nguyên tử. Dưới đây ta sẽ mổ xẻ cách thực hiện swap cross-chain TON → Base sao cho không một bên trung gian nào, ở bất kỳ thời điểm nào, chạm được vào khóa hay tiền của bạn, và cách toàn bộ luồng này được AI agent gọi qua năm tool MCP của TONNode.

Vì sao cần swap từ TON sang Base và vì sao đây không phải bridge thông thường

Base là L2 của Coinbase dựng trên Ethereum theo OP Stack. Thanh khoản đang dịch chuyển về đó, các protocol DeFi cũng lần lượt deploy ở đó, và ngày càng thường xuyên, contract mà agent của bạn cần làm việc cùng lại nằm đúng chỗ đó. Trong khi vốn gốc của bạn thì ở TON — dưới dạng GRAM (đây là Toncoin sau khi đổi tên vào tháng 6/2026; bản thân mạng lưới vẫn gọi là TON) hoặc USDT trên TON.

Bridge thông thường giải bài này bằng cách lưu ký. Bạn giao tiền cho contract bridge trên mạng nguồn, ở đâu đó bên lề có một relayer nhìn thấy và phát hành lượng tương đương trên Base. Giữa "đã gửi" và "đã nhận" tồn tại một cửa sổ mà tiền của bạn do người khác định đoạt. Với một người dùng mỗi tháng chuyển tiền một lần, điều đó còn chịu được. Với một agent làm việc đó trong vòng lặp và không ai giám sát — đó là rủi ro không thể chấp nhận.

Giải pháp thay thế là swap nguyên tử, nơi không tồn tại khoảnh khắc nào mà tiền thuộc về bên trung gian. Hoặc giao dịch thực thi trọn vẹn trên cả hai mạng, hoặc bị hoàn tác trọn vẹn. Cross-chain trong TONNode được thiết kế đúng như vậy.

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

HTLC — hashed timelock contract — là escrow với hai điều kiện mở khóa: hash của secrettimelock. Cách hình dung dễ nhất là hai cái két: một trên TON, một trên Base. Cả hai mở bằng cùng một chìa — chính là secret. Chừng nào secret chưa được công bố, cả hai vẫn bị khóa.

  • Hash lock. Tiền trên cả hai mạng bị khóa dưới cùng một hash của secret h = hash(s). Chỉ có thể mở escrow bằng cách xuất trình chính secret s có hash trùng khớp.
  • Timelock. Mỗi cái két có một hạn chót. Nếu giao dịch không hoàn tất kịp, tiền quay về chủ sở hữu sau khi timelock hết hạn.

Nói nôm na, sơ đồ như sau:

  1. Sinh ra một secret ngẫu nhiên s và hash của nó h = hash(s).
  2. Trên TON, tiền của bạn bị khóa vào escrow theo điều kiện: "trả cho ai xuất trình được s; hoàn lại người gửi nếu đến hạn chót vẫn không ai xuất trình s".
  3. Trên Base, đối tác (resolver cung cấp thanh khoản phía đích) khóa tiền của họ dưới cùng h đó — với timelock ngắn hơn.
  4. Bạn công bố s để nhận tiền trên Base. Ngay khoảnh khắc đó, s trở thành công khai on-chain.
  5. Đối tác nhìn thấy s đã công bố và nhận phần tiền bị khóa trên TON.

Tính chất then chốt: h giống hệt nhau trên cả hai mạng. Ngay khi secret được công bố để tất toán ở một phía, phía còn lại về mặt toán học đã có thể hoàn tất giao dịch. Không tồn tại trạng thái trung gian kiểu "tiền của tôi đang nằm trong tay người lạ" — chỉ có toán học của hash và đồng hồ của timelock. Nếu có gì trục trặc và timelock hết hạn, tiền quay về đúng chủ ban đầu. Nguyên tử: hoặc cả hai chân cùng thực thi, hoặc cả hai cùng bị hoàn tác.

Trong thiết kế của TONNode, TON luôn đóng vai trò nguồn của giao dịch, còn Base (hoặc một mạng được hỗ trợ khác) là đích.

Năm tool swap cross-chain trong TONNode MCP

TONNode là một MCP server hosted dành cho TON với đúng 16 tool. MCP (Model Context Protocol) là chuẩn để các AI agent (Claude, Cursor, ChatGPT/Codex và mọi MCP client) gọi tool bên ngoài. Bộ cross-chain gồm đúng 5 tool, và chúng có mặt trên mọi gói:

  • get_crosschain_quote — báo giá: bạn nhận được bao nhiêu trên Base cho số tiền từ TON, có tính đến tuyến đường và các timelock.
  • build_crosschain_swap_tx — dựng giao dịch escrow HTLC chưa ký cho TON và trả nó về kèm theo secret. Ví của người dùng mới là bên ký, qua TonConnect.
  • track_crosschain_swap — cho thấy các pha của giao dịch trên cả hai mạng: đã khóa trên TON chưa, đối tác đã khóa trên Base chưa, secret đã công bố chưa, đã hoàn tất chưa.
  • disclose_crosschain_secret — công bố secret để tất toán, nhưng chỉ sau khi on-chain đã xác nhận rằng chân đối ứng đã sẵn sàng.
  • build_crosschain_refund — dựng giao dịch chưa ký để hoàn tiền từ escrow nếu giao dịch bị treo và timelock đã hết hạn.

Hãy để ý trật tự trách nhiệm: tool công bố secret không làm điều đó một cách mù quáng, mà chỉ sau khi đã kiểm tra rằng phía Base đã sẵn sàng. Điều này bảo vệ bạn khỏi việc công bố s trong tình huống đối tác còn chưa khóa gì cả.

Luồng đầy đủ: báo giá → dựng giao dịch → theo dõi → công bố secret

Trước tiên hãy kết nối server. Chạy local, hoàn toàn miễn phí: gói @tonnode/mcp là open source (MIT), nói chuyện trực tiếp bằng giao thức ADNL gốc của TON, không qua lớp HTTP trung gian nào:

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

Từ đây trở đi, mọi việc diễn ra qua các prompt gửi cho agent — nó tự tách chúng thành các lời gọi tool.

Bước 1. Báo giá.

Cho tôi báo giá swap cross-chain: 200 USDT từ TON sang USDC trên Base.
Dùng get_crosschain_quote.

Agent sẽ trả về con số bạn nhận được trên Base và các timelock của escrow — tất cả đều có trước khi bạn làm bất cứ điều gì. Nếu thấy ổn thì đi tiếp.

Bước 2. Dựng giao dịch chưa ký.

Dựng giao dịch escrow HTLC theo báo giá này qua build_crosschain_swap_tx.
Địa chỉ TON của tôi là EQ…, địa chỉ nhận trên Base là 0x…

Đầu ra là một message TonConnect chưa ký chứa escrow HTLC, kèm secret của giao dịch. Secret là của bạn, hãy giữ kỹ; server không lưu nó. Tiền bị khóa vào escrow trên TON dưới hash của chính secret đó. Việc ký do chính ví của bạn thực hiện qua TonConnect — server không đụng vào khâu ký.

Bước 3. Theo dõi.

Kiểm tra trạng thái giao dịch qua track_crosschain_swap theo hash h….
Đối tác đã khóa tiền trên Base chưa?

Tool này cho thấy các pha trên cả hai mạng. Agent chờ cho đến khi cả hai phía đều bị khóa dưới cùng một hash.

Bước 4. Công bố secret.

Tiền trên Base đã bị khóa. Hãy công bố secret để tất toán
qua disclose_crosschain_secret.

Chỉ sau khi track_crosschain_swap xác nhận on-chain rằng mọi thứ đã sẵn sàng, agent mới công bố secret. Việc công bố thực thi cả hai escrow một cách nguyên tử: bạn nhận tiền trên Base, còn đối tác dùng secret đã công khai để đóng phần của mình trên TON. Giao dịch kết thúc.

Để ý trật tự: secret được công bố sau cùng và chỉ sau khi đã kiểm tra rằng escrow đối ứng thực sự đã được khóa. Trước lúc công bố, tiền của bạn không thể đi đâu được; còn sau khi công bố thì giao dịch đã mang tính nguyên tử.

Cùng luồng này nhưng với Ethereum đóng vai mạng đích được mổ xẻ chi tiết trong một bài riêng: swap cross-chain TON → Ethereum, cơ chế y hệt, chỉ khác mạng đích. Còn vì sao bản thân việc agent có thể tự tay chuyển giá trị ra khỏi TON lại là một lớp thao tác hoàn toàn mới — hãy đọc bài này.

Không lưu ký: vì sao server không bao giờ giữ khóa của bạn

Đây không phải câu chữ marketing, mà là một thuộc tính của kiến trúc. Server TONNode không bao giờ ký giao dịch và không bao giờ giữ tiền hay private key. Tất cả những gì nó đưa ra ngoài chỉ là các message TonConnect chưa ký và dữ liệu (báo giá, trạng thái, secret cho chính giao dịch của bạn).

Cùng điểm lại từng phần, cái gì nằm ở đâu:

  • Private key ví TON của bạn — chỉ mình bạn giữ, nằm trong ví.
  • Secret s — được sinh ra lúc dựng giao dịch và trao cho bạn; không đọng lại trên server.
  • Chữ ký cho giao dịch HTLC — do ví của bạn tạo qua TonConnect.
  • Tiền trên TON — nằm trong contract escrow dưới một điều kiện mật mã, chứ không phải trong tài khoản của bên trung gian.

Kể cả khi server có muốn, nó cũng không thể ký thay bạn hay rút tiền khỏi escrow: nó không có khóa, cũng không có cách nào thỏa mãn điều kiện mở khóa theo hướng có lợi cho mình. Điều này khác về bản chất so với cách tiếp cận lưu ký, nơi nhà vận hành giữ khóa và tự ký. So sánh đầy đủ hai mô hình nằm trong bài MCP lưu ký và không lưu ký, còn phần mổ xẻ riêng chuyện swap không cần lưu ký thì ở bài về swap không lưu ký từ agent.

Ngoài Base thì những mạng nào được hỗ trợ (và vì sao chưa có TRON)

TON luôn là nguồn, còn mạng đích có thể là bất kỳ mạng nào trong số:

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

TRON hiện chưa được hỗ trợ. Lý do mang tính kỹ thuật chứ không phải tư tưởng: escrow HTLC nguyên tử đòi hỏi ngữ nghĩa hash-timelock tương thích và hành vi contract dự đoán được ở phía đích. Nếu kịch bản của bạn phụ thuộc vào TRON — đừng xây logic agent dựa trên đó, bộ cross-chain hiện tại không có nó. Khi nào bổ sung, điều đó sẽ được phản ánh trong roadmap: tonnode.io/roadmap.

Cách kết nối và nếu giao dịch bị treo thì sao: hoàn tiền

Với production cần băng thông đảm bảo, hãy dùng hosted endpoint kèm key riêng của bạn:

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

Mọi key đều có đủ 16 tool, bao gồm trọn bộ cross-chain. Bạn chỉ trả tiền cho băng thông, chứ không phải để được truy cập tool:

  • Hobby — miễn phí vĩnh viễn, 60 request/phút. Key được cấp ngay sau khi đăng nhập, không cần thẻ.
  • Pro — $29/tháng, 300 request/phút.
  • Scale — $199/tháng, 1200 request/phút.

Còn nếu đối tác không hoàn tất giao dịch?

Đây chính là lúc timelock phát huy ý nghĩa của nó. Nếu phía đối ứng không thực hiện phần của họ và timelock hết hạn, tiền của bạn không mất đi — nó đang bị khóa dưới điều kiện hoàn lại người gửi sau hạn chót. Agent sẽ gọi:

Giao dịch bị treo, timelock đã hết hạn. Hãy dựng giao dịch hoàn tiền
từ escrow qua build_crosschain_refund.

build_crosschain_refund trả về giao dịch hoàn tiền chưa ký — bạn ký nó bằng ví của mình và lấy lại tiền trên TON. Đó chính là lớp bảo hiểm được cài sẵn trong HTLC: giao dịch hoặc thực thi nguyên tử, hoặc bị hoàn tác theo timelock. Giao dịch bị treo không có nghĩa là mất tiền — nó có nghĩa là hoàn tiền. Chính bảo đảm này khiến swap nguyên tử trở thành phương án thay thế an toàn cho bridge lưu ký.

Bắt đầu từ đâu

Swap cross-chain TON → Base không còn là một hành động đặt niềm tin vào bridge, một khi thứ đứng ra bảo đảm cho nó là hash lock và timelock, chứ không phải một bên lưu ký xa lạ. Năm tool, tính không lưu ký nghiêm ngặt, sáu mạng đích — và tất cả đều được agent của bạn gọi qua đúng một config MCP.

Cách thử nhanh nhất là lấy key Hobby miễn phí (được cấp ngay sau khi đăng nhập, không cần thẻ) và chạy luồng TON → Base từ chính agent của bạ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ẻ.