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

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

Cross-chain swap TON Ethereum qua HTLC escrow nguyên tử: quote, build, track, disclose và refund. Không lưu ký — khóa và tiền luôn nằm trong tay bạn.

cross-chain swapTONEthereumHTLC escrowkhông lưu kýMCP

Hãy tưởng tượng: AI agent của bạn đang giữ USDT trên TON, và người dùng bảo "đổi sang ETH trên Ethereum đi". Cách thông thường là gửi tiền lên một sàn tập trung, chờ tiền về, đổi thủ công, rồi rút sang đúng mạng cần đến. Agent không làm được như vậy: nó không có tài khoản sàn, không có KYC, và quan trọng nhất — ở mỗi bước đều có ai đó đang giữ tiền của bạn. Chỉ cần một mắt xích treo lại là tài sản kẹt giữa hai mạng, không có gì bảo đảm sẽ lấy lại được.

Câu trả lời kinh điển của ngành là cầu nối (bridge) có trung gian, nơi bạn giao tiền cho họ "giữ hộ". Chính những cây cầu kiểu đó bị hack mất hàng trăm triệu đô. Với một agent tự vận hành thì điều này không chấp nhận được: nó cần một kiểu trao đổi mà hoặc giao dịch diễn ra trọn vẹn, hoặc mỗi bên nhận lại đúng tiền của mình — không cần trung gian đáng tin. Đó chính là thứ mà cross-chain swap từ TON sang Ethereum qua HTLC escrow nguyên tử giải quyết. Bên dưới ta sẽ mổ xẻ cơ chế bên trong của nó bằng các công cụ thật trên MCP server TONNode — không lưu ký và không có phép màu nào cả.

Cross-chain swap TON → Ethereum là gì và vì sao nó nguyên tử

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 không hề có một blockchain chung nào có thể ghi cả hai thao tác vào cùng một giao dịch. TON về mặt vật lý không thể "nhìn thấy" giao dịch trên Ethereum, và Ethereum cũng không thấy được giao dịch trên TON. Không có trọng tài chung. Vì vậy sơ đồ ngây thơ kiểu "tôi gửi rồi anh gửi" luôn vấp phải vấn đề niềm tin: ai đi trước, người đó chịu rủi ro.

Từ khóa ở đây là tính nguyên tử (atomicity). Một thao tác nguyên tử thì hoặc thực hiện trọn vẹn, hoặc không thực hiện chút nào; không có trạng thái "xong một nửa". Áp dụng vào swap, đó là một bảo đảm cứng: hoặc cả hai phía đều được thực thi và mỗi bên nhận đúng thứ mình chờ, hoặc giao dịch bị hoàn lại và mỗi bên lấy về đúng số tiền ban đầu của mình. Trạng thái "tôi đưa rồi mà chẳng nhận được gì" đơn giản là không tồn tại như một kết cục.

Điều đó đạt được không phải bằng niềm tin vào trung gian, mà bằng mật mã học và timeout — cơ chế HTLC.

HTLC escrow nguyên tử nói cho dễ hiểu: hash, secret và timeout

HTLC viết tắt của Hash Time-Locked Contract — "hợp đồng khóa theo hash và theo thời gian". Nghe phức tạp, nhưng ý tưởng thì rất đời thường. Hãy hình dung một két sắt ngân hàng có hai ổ khóa:

  • Ổ khóa theo hash. Chỉ người biết secret — một chuỗi ngẫu nhiên dài S — mới mở được két. Thứ nằm trong két không phải secret, mà là "dấu vân tay" của nó — hash H = hash(S). Từ dấu vân tay thì không thể khôi phục lại secret, nhưng khi thấy secret rồi thì bất kỳ ai cũng kiểm tra được ngay rằng dấu vân tay đúng là của nó. Tiền bị khóa trong escrow "theo hash này".
  • Ổ khóa theo thời gian (timeout). Nếu hết khoảng thời gian quy định mà secret vẫn chưa được công bố, két tự động mở khóa ngược lại cho chính người đã bỏ tiền vào.

Cơ chế này tạo ra tính nguyên tử giữa hai mạng như sau:

  1. Phía TON, số GRAM/USDT của bạn bị khóa trong escrow theo hash H.
  2. Đối tác (market maker) thấy khoản khóa đó liền dựng escrow gương trên Ethereum theo đúng H đó — tức là đặt trước số ETH cho bạn.
  3. Để lấy ETH trên Ethereum, bạn công bố secret S. Nhưng việc công bố S khiến nó trở thành công khai trên blockchain.
  4. Đối tác nhìn thấy S và dùng chính secret đó lấy tiền của bạn ra khỏi escrow bên TON.

Secret chỉ có một, dùng chung cho cả hai chân của giao dịch. Ngay khi nó được công bố để nhận ETH, nó cũng tự động mở khóa luôn phía TON. Không thể công bố nó ở một chân mà không phải thực hiện chân kia. Còn nếu có gì đó trục trặc và S không được công bố — hết timeout, cả hai bên đều hoàn tiền. "Tính nguyên tử" là ở chỗ đó: không có kết cục thứ ba. Theo đúng thiết kế, sơ đồ này không đòi hỏi bất kỳ niềm tin nào vào server trung gian.

Toàn bộ luồng gồm năm công cụ: quote → build → track → disclose/refund

Trong TONNode, cả quá trình trao đổi HTLC được chia thành năm công cụ. Thứ tự gọi lặp lại y hệt logic của HTLC.

1. get_crosschain_quote — báo giá

Việc đầu tiên là biết điều kiện: bạn sẽ nhận được bao nhiêu ETH (hoặc USDT trên Ethereum) cho số tiền của mình trên TON, đã tính đến thanh khoản và phí. Nó trả về tỷ giá, số tiền nhận về dự kiến và các tham số của tuyến đường. Đây là thao tác đọc — nó không khóa gì và cũng không ký gì cả.

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

Đây là nơi giao dịch ra đời. Công cụ trả về một giao dịch chưa ký, thứ sẽ khóa tiền của bạn trong HTLC escrow dưới hash của secret, và — tách riêng — chính secret S. Điểm mấu chốt: secret đi về phía bạn, chứ không nằm lại trên server. Giao dịch do ví của bạn ký qua TonConnect, server không hề chạm vào chữ ký. Chính secret này là thứ bạn sẽ công bố về sau để hoàn tất giao dịch — còn nếu giao dịch treo lại, phần bị khóa sẽ quay về với bạn theo timeout, không cần công bố secret.

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

Sau khi bạn đã ký và gửi giao dịch escrow, bạn cần nắm được giao dịch đang ở đâu: tiền của bạn đã khóa trên TON chưa, escrow đối ứng bên Ethereum đã xuất hiện chưa, mọi thứ đã sẵn sàng để tất toán chưa. track_crosschain_swap cho thấy các pha trên cả hai mạng cùng lúc — đó là góc nhìn hợp nhất của bạn trên cả hai blockchain. Bạn gọi nó cho tới khi giao dịch đạt trạng thái "sẵn sàng công bố secret".

4a. disclose_crosschain_secret — công bố secret để tất toán

Khi việc theo dõi đã xác nhận rằng bên đối ứng đã sẵn sàng và đã khóa on-chain, bạn công bố secret. Đây là bước cuối cùng: việc công bố khởi động quá trình tất toán — bạn nhận ETH, đối tác dùng chính secret đó lấy GRAM/USDT của bạn. Quan trọng là chỉ gọi nó sau khi đã kiểm tra trạng thái sẵn sàng on-chain qua track_crosschain_swap — công bố secret quá sớm đồng nghĩa với việc trao chìa khóa trước khi nửa còn lại của két được lấp đầy.

4b. build_crosschain_refund — lấy lại tiền nếu giao dịch treo

Kịch bản dự phòng. Nếu bên đối ứng rốt cuộc vẫn không thực hiện — đối tác không dựng escrow gương, timeout đã hết — build_crosschain_refund dựng một giao dịch chưa ký để hoàn lại tiền của bạn từ escrow. Đó chính là ổ khóa thứ hai — khóa theo thời gian. Secret không bị công bố, phần bị khóa quay về với bạn. Đây là cầu chì khẩn cấp của tính nguyên tử: một giao dịch treo không nuốt mất tiền của bạn.

Sơ đồ toàn bộ con đường:

get_crosschain_quote      → tôi sẽ nhận được bao nhiêu
build_crosschain_swap_tx  → HTLC tx chưa ký + secret (secret thuộc về bạn)
        ↓ (ký trong ví, gửi đi)
track_crosschain_swap     → các pha trên TON và trên Ethereum
   ├─ sẵn sàng on-chain →  disclose_crosschain_secret   → tất toán
   └─ treo, hết timeout →  build_crosschain_refund      → hoàn tiền

Sau khi kết nối server, bạn chỉ cần nói với agent bằng ngôn ngữ người — nó sẽ tự xâu chuỗi các công cụ lại:

Đổi 50 USDT từ ví TON của tôi sang ETH trên mạng Ethereum.
Trước tiên cho tôi xem báo giá (get_crosschain_quote).
Nếu tỷ giá ổn thì dựng HTLC escrow (build_crosschain_swap_tx),
để tôi ký. Sau đó theo dõi giao dịch (track_crosschain_swap)
và khi cả hai bên đã sẵn sàng on-chain thì công bố secret để tất toán.
Nếu hết timeout mà không có gì nhúc nhích thì dựng giao dịch hoàn tiền.

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

Quay lại vấn đề đã nêu ở đầu bài. Cầu nối thông thường nguy hiểm ở chỗ bạn giao tiền cho trung gian kiểm soát. TONNode được dựng theo cách khác, và đây là lập trường nguyên tắc của nó: server KHÔNG BAO GIỜ ký và không bao giờ giữ tiền hay khóa riêng tư.

Với HTLC escrow, trên thực tế điều đó nghĩa là:

  • build_crosschain_swap_tx trả cho bạn giao dịch chưa ký — chừng nào bạn chưa ký nó bằng ví của mình qua TonConnect thì chưa có gì bị khóa cả.
  • Secret S do bạn giữ, không phải server. Không có secret của bạn thì không ai tất toán được giao dịch nhân danh bạn.
  • Việc hoàn tiền theo timeout (build_crosschain_refund) cũng được dựng dưới dạng giao dịch chưa ký, chờ chữ ký của bạn.
  • Ngay cả ví được tạo ra (công cụ generate_wallet) cũng được giao về cho bạn và không lưu lại trên server.

Kể cả khi server sập hoặc bị xâm nhập, về mặt vật lý nó vẫn không thể lấy tiền của bạn đi, cũng không thể tất toán giao dịch nếu thiếu chữ ký và secret của bạn. Nói cách khác, HTLC nguyên tử bảo vệ bạn khỏi đối tác, còn kiến trúc không lưu ký thì bảo vệ bạn khỏi chính dịch vụ. Chi tiết hơn về mô hình này có trong bài phân tích MCP lưu ký so với không lưu ký và bài viết về swap không lưu ký cho agent trên TON.

Để so sánh: @ton/mcp chính thức của TON Foundation là một ví-agent lưu ký, giữ operator key và tự ký, đồng thời chỉ hoạt động bên trong TON, không có cross-chain. Nói thẳng thì khác biệt là thế này: bên kia đổi lấy khả năng chi tiêu tự chủ bằng cái giá phải tin vào khóa; bên này là không lưu ký, cộng thêm khả năng đi ra ngoài phạm vi TON.

Những mạng nào được hỗ trợ: Ethereum, Arbitrum, Base, BNB, Polygon, Avalanche

Ở đây TON luôn đóng vai trò nguồn của giao dịch, còn mạng đích là một trong sáu mạng EVM:

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

Cơ chế cho tất cả đều như nhau — HTLC escrow nguyên tử. TRON hiện chưa được hỗ trợ. Nếu bạn nhắm tới L2 để có phí rẻ, hãy xem bài phân tích riêng cross-chain swap TON → Arbitrum — luồng vẫn y hệt, chỉ khác mạng đích. Còn vì sao agent cần đến chuyện này và giá trị của nó với mạng TON nằm ở đâu, mời xem bài cross-chain swap đầu tiên và giá trị cho mạng.

Cách kết nối MCP và chạy cross-chain swap đầu tiên

TONNode là một MCP server hosted dành cho TON. 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ụ. Tổng cộng có 16 công cụ, và cả 16 đều dùng được ở mọi gói cước — bạn chỉ trả tiền cho thông lượng.

Chạy local và miễn phí

Config công khai với đầy đủ bộ công cụ đọc chỉ cần một câu lệnh để cài — npx -y @tonnode/mcp:

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

Thêm đoạn này vào config của MCP client bạn dùng (Claude Desktop, Cursor, Codex, bất kỳ client tương thích MCP nào), và các công cụ get_crosschain_quote, build_crosschain_swap_tx, track_crosschain_swap, disclose_crosschain_secret, build_crosschain_refund sẽ sẵn sàng cho agent. Gói @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 có lớp trung gian HTTP nào ở giữa.

Hosted — với key riêng của bạn

Để có thông lượng được bảo đảm, bạn kết nối tới endpoint hosted bằng key riêng của mình:

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

Các gói chỉ khác nhau ở giới hạn số request: 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. Bộ 16 công cụ ở mọi gói đều như nhau. Key Hobby miễn phí được cấp ngay sau khi đăng nhập, không cần thẻ. Nhân tiện nói về đồng tiền: GRAM là Toncoin sau khi đổi tên (đổi tên vào tháng 6/2026), mạng lưới vẫn gọi là TON, và trong báo giá bạn sẽ thấy đúng chữ GRAM.

Swap đầu tiên trong một phút

  1. Nhận key Hobby miễn phí — không cần thẻ, cấp ngay sau khi đăng nhập.
  2. Ghi config vào (local hoặc hosted).
  3. Đưa cho agent prompt ở phần trên rồi ký giao dịch escrow bằng ví của bạn.

Tóm lại

Cross-chain giữa các mạng khác nhau không nhất thiết phải dựa trên niềm tin. HTLC escrow nguyên tử cho bạn bảo đảm "được tất cả hoặc không gì cả", còn kiến trúc không lưu ký của TONNode canh cho cả tiền, khóa lẫn secret không bao giờ rời khỏi tầm kiểm soát của bạn. Năm công cụ — get_crosschain_quote, build_crosschain_swap_tx, track_crosschain_swap, disclose_crosschain_secret, build_crosschain_refund — bao trọn vòng đời của một giao dịch, kể cả đường lui hoàn tiền khẩn cấp.

Bạn có thể kiểm chứng bằng một swap thật, hoàn toàn miễn phí: nhận key Hobby và thực hiện cross-chain swap đầu tiên — không cần thẻ, 60 request mỗi phút là thừa đủ. Tổng quan cả 16 công cụ nằm ở trang MCP.

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