전체 글 보기
7 분 소요

TON → Avalanche 크로스체인 스왑: 어떻게 작동하는가

MCP로 실행하는 TON → Avalanche 크로스체인 스왑. 원자적 HTLC 에스크로, 비수탁, 서버에 키를 보관하지 않습니다. 다섯 개 도구와 실전 시나리오.

크로스체인 스왑 TON AvalancheHTLC 에스크로비수탁 MCPTON MCP 서버AVAXTonConnect

에이전트가 TON에서 Avalanche로 가치를 옮겨야 하는 이유

여러분의 에이전트가 Avalanche에서 어떤 자산이 유리한 가격에 나온 것을 발견했습니다. 그런데 잔액은 전부 TON 위의 GRAM으로 들어 있습니다. 그다음부터는 익숙한 지옥이 시작됩니다. GRAM을 거래소로 출금하고, 입금이 반영되기를 기다리고, KYC를 통과하고, 필요한 토큰을 사고, Avalanche 네트워크로 다시 출금하고, 매 단계마다 수수료와 시간을 지불합니다. 수동 작업 다섯 번, 신뢰해야 하는 중개자 셋, 그리고 30분. 그사이 가격은 이미 저만치 떠나 버렸습니다.

사람에게는 성가신 일입니다. 자율 AI 에이전트에게는 자율성 자체와 양립할 수 없는 일입니다. 에이전트에게는 거래소 계정이 없고, 여러분을 대신해 본인 확인을 통과할 권한도 없습니다. 게다가 언제든 출금을 동결할 수 있는 수탁자 위에 신뢰할 만한 프로세스를 쌓아 올리는 일은 애초에 불가능합니다. 매 단계마다 누군가가 여러분의 돈을 쥐고 있고, 에이전트는 거래소 API 키나 핫월렛 시드 구문을 어딘가에 보관해야 합니다.

TON → Avalanche 크로스체인 스왑은 이 문제를 다르게 풉니다. 중간에 거래소가 없습니다. 자금은 중개자의 약속이 아니라 "교환이 양쪽 네트워크에서 모두 성립하거나, 아니면 아무도 아무것도 잃지 않는다"는 수학적 보장에 따라 네트워크 사이를 이동합니다. 이것이 TONNode의 MCP 도구를 통해 정확히 어떻게 작동하는지 살펴보겠습니다. 수탁자도 없고, 서버에 키를 보관하지도 않습니다.

TON과 Avalanche 사이의 원자적 HTLC 에스크로는 어떻게 구성되는가

핵심 메커니즘은 원자적 HTLC 에스크로(hashed timelock contract, 해시 타임락이 걸린 에스크로)입니다. 이름은 거창하게 들리지만 아이디어는 단순하고, 은행 대여금고에 빗대면 설명하기 편합니다.

여러분은 올바른 키, 즉 비밀값으로만 열리는 금고에 자금을 넣습니다. 금고에는 타이머가 달려 있어서, 정해진 시간 안에 키를 꽂지 않으면 내용물이 소유자에게 돌아갑니다. 이제 이런 금고를 두 개 놓아 봅시다. 하나는 TON에, 다른 하나는 Avalanche에. 그리고 똑같은 하나의 자물쇠로 잠급니다.

  • 무작위 비밀값 S와 그 해시 H = hash(S)를 생성합니다. 해시로부터 비밀값을 복원할 수는 없지만, 제시된 비밀값이 그 해시에 대응하는지는 쉽게 검증할 수 있습니다.
  • TON 쪽에서는 여러분이 hashlock H가 걸린 에스크로에 GRAM을 예치합니다.
  • Avalanche 쪽에서는 거래 상대방(마켓 메이커)이 동일한 H로 자기 에스크로에 목표 자산을 예치합니다.
  • Avalanche에서 자산을 찾아가려고 여러분이 비밀값 S를 공개하는 순간, S는 블록체인에서 공개 정보가 됩니다. 마켓 메이커는 그 값을 보고 같은 S로 TON 에스크로에서 여러분의 GRAM을 가져갑니다.

여기서 원자적이라는 말이 나옵니다. 한쪽 에스크로만 열고 다른 쪽은 열지 않는 것은 불가능합니다. 비밀값은 두 네트워크를 통틀어 하나뿐이기 때문입니다. 양쪽 모두 자기 자금을 받거나, 타임아웃이 지난 뒤 양쪽 모두 refund로 자기 것을 되찾아 가거나, 둘 중 하나입니다. "돈은 TON에서 나갔는데 자산은 도착하지 않은" 중간 상태는 아예 존재하지 않습니다.

여기서 보증을 제공하는 것은 중개자의 평판이 아니라 암호학과 타임아웃입니다. 그리고 바로 그렇기 때문에 중간에 거래소가 필요 없습니다.

크로스체인 도구 다섯 개: quote, build, track, disclose, refund

TONNode에서 크로스체인은 정확히 다섯 개의 MCP 도구로 완결되며, 각 도구가 거래의 한 국면씩을 맡습니다.

  • get_crosschain_quote — 견적입니다. 경로와 타임아웃을 감안해, 여러분의 GRAM이나 제톤으로 목적지 네트워크에서 자산을 얼마나 받게 되는지 알려 줍니다.
  • build_crosschain_swap_tx — TON용 서명되지 않은 HTLC 에스크로 트랜잭션을 조립하고, 그에 연결된 비밀값(과 그 해시)을 반환합니다. 트랜잭션에 서명하는 것은 사용자 지갑입니다.
  • track_crosschain_swap양쪽 네트워크의 거래 국면을 보여 줍니다. TON 에스크로에 여러분의 예치가 들어왔는지, Avalanche에 대응 에스크로가 나타났는지 확인할 수 있습니다.
  • disclose_crosschain_secret온체인 준비 상태를 확인한 뒤(대응 에스크로가 제자리에 있고, 금액과 해시가 일치하는지) 정산을 위해 비밀값을 공개합니다.
  • build_crosschain_refund — 거래가 멈추고 타임아웃이 지났을 때 에스크로에서 자금을 되돌려 받는 트랜잭션을 조립합니다.

도구 다섯 개는 "적은" 것이 아닙니다. 원자적 스왑이 물리적으로 거치는 바로 그 다섯 단계입니다. 값을 매기고, 예치하고, 지켜보고, 정산하고, 문제가 생기면 되돌리는 것. 군더더기도 없고 빠진 것도 없습니다.

비수탁: 서버는 서명하지도, 키를 보관하지도 않습니다

이것은 마케팅 문구가 아니라 아키텍처 차원의 제약입니다. TONNode의 크로스체인, 스왑, 지갑 도구는 철저하게 비수탁 방식으로 동작합니다.

  • 서버는 결코 트랜잭션에 서명하지 않으며, 자금이나 개인키를 결코 보관하지 않습니다.
  • build_crosschain_swap_tx서명되지 않은 TonConnect 메시지를 반환합니다. 서명은 사용자 지갑이 합니다. Tonkeeper든, MyTonWallet이든, TonConnect를 지원하는 어떤 지갑이든 상관없습니다. 서버는 올바른 트랜잭션 봉투를 조립했을 뿐입니다.
  • HTLC의 비밀값 S는 서버가 생성해서 조립된 트랜잭션과 함께 여러분에게 전달하며, 그 이후 공개 여부는 여러분의 통제 아래 남습니다. disclose_crosschain_secret 호출조차도 온체인 검증을 거친 뒤 여러분이 개시하는 의식적인 행동이지, 백엔드 어딘가에서 알아서 일어나는 자동 동작이 아닙니다.

거래 도중에 TONNode 서버가 갑자기 사라지더라도 여러분이 자금을 잃는 일은 없습니다. 자금은 블록체인의 에스크로에 그대로 놓여 있고, 타임아웃이 지나면 build_crosschain_refund가 되돌려 줍니다. 네트워크 사이로 가치를 옮기는 일에서 비수탁이란 결국 단순한 이야기입니다. 서버에는 훔칠 것도, 동결할 것도 없습니다.

운영자가 키를 쥐고 직접 서명하는 수탁 모델과 비교해 보십시오. 두 모델 모두 존재할 이유가 있습니다. 이 경계선은 수탁형 MCP와 비수탁형 MCP를 다룬 글과 에이전트를 위한 비수탁 스왑 분석에서 더 자세히 다루었습니다.

지원되는 네트워크 (그리고 TON이 언제나 출발지인 이유)

크로스체인의 목적지 네트워크는 Ethereum, Arbitrum, Base, BNB Chain, Polygon, Avalanche입니다. TRON은 아직 지원되지 않습니다. 프로세스 설계에 미리 넣어 두지 마십시오.

방향에 관한 중요한 제약이 하나 있습니다. TON은 언제나 스왑의 출발지입니다. 여러분은 TON 에스크로에 GRAM이나 제톤을 예치하고, 대응 자산은 목적지 EVM 네트워크에서 받습니다. 이것은 메커니즘에서 자연스럽게 따라 나옵니다. HTLC는 여러분의 지갑과 잔액이 있는 TON에서의 예치로 개시되고, 거래 상대방이 그것을 목적지 네트워크에 거울처럼 비추는 구조이기 때문입니다.

실무적인 결론은 이렇습니다. 여러분의 에이전트가 TON에 살고 있고 가치를 Avalanche로 보내야 한다면, 이 구조는 정확히 그 시나리오를 위해 만들어진 것입니다. 반대로 외부에서 TON 안으로 자금을 끌어와야 한다면, 지금 그런 경로는 없습니다. TON에서 Ethereum으로 가는 크로스체인도 구조는 완전히 동일하며, 목적지 네트워크 파라미터만 바뀝니다. 자세한 내용은 TON → Ethereum 스왑에 정리해 두었습니다.

GRAM → Avalanche 스왑 단계별 시나리오

이제 전부 모아 보겠습니다. 아래는 실제 호출 순서입니다. 에이전트가 이 과정을 알아서 밟아 나가고, 여러분은 지갑에서 트랜잭션에 서명하기만 하면 됩니다.

1단계. 견적. 에이전트가 가격을 요청합니다.

"크로스체인 견적을 뽑아 줘. TON의 500 GRAM을 Avalanche의 USDC로."

내부적으로는 get_crosschain_quote가 호출됩니다. 에이전트는 최종 수령량, 경로, 타임락 파라미터를 확인합니다. 가격이 마음에 들면 다음으로 넘어갑니다.

2단계. HTLC 에스크로 트랜잭션 조립.

"좋아. 이 견적대로 내 Avalanche 주소 0x…로 가는 트랜잭션을 조립하고, 서명되지 않은 TonConnect 메시지와 비밀값의 해시를 돌려줘."

build_crosschain_swap_tx가 호출됩니다. TON 에스크로로 예치하는 서명되지 않은 트랜잭션과 함께 비밀값, 그리고 그 해시 H가 반환됩니다. 사용자는 TonConnect를 통해 지갑으로 메시지에 서명합니다. 바로 이 순간 GRAM이 TON의 에스크로로 들어갑니다. 서버는 서명에 손도 대지 않습니다.

3단계. 대응 에스크로 추적.

"track_crosschain_swap으로 거래를 지켜봐 줘. Avalanche에 내 해시가 걸린 대응 에스크로가 나타날 때까지."

track_crosschain_swap은 양쪽 네트워크의 국면을 보여 줍니다. 마켓 메이커가 같은 H로 Avalanche의 자기 에스크로에 목표 자산을 예치할 때까지 기다립니다. 대응 에스크로가 없는 동안에는 비밀값을 공개해서는 안 됩니다.

4단계. 비밀값 공개와 정산. 추적이 온체인 준비 상태를 확인해 주면 이렇게 진행합니다.

"대응 에스크로가 제자리에 있어. 온체인 준비 상태를 확인하고 disclose_crosschain_secret으로 비밀값을 공개해 줘."

disclose_crosschain_secret은 먼저 준비 상태를 검증하고(대응 에스크로가 존재하며 금액과 해시가 일치하는지), 그다음 비밀값을 공개합니다. 이 값이 두 에스크로를 모두 엽니다. 여러분은 Avalanche에서 USDC를 받고, 거래 상대방은 같은 S로 TON 에스크로에서 GRAM을 가져갑니다. 거래가 원자적으로 종료됩니다.

5단계 (문제가 생겼을 때만). 환불. 대응 에스크로가 끝내 나타나지 않고 거래가 멈춰 버렸다면, 비밀값을 공개하지 않습니다. 타임아웃을 기다렸다가 build_crosschain_refund를 호출합니다.

"거래가 멈췄고 타임아웃이 지났어. build_crosschain_refund로 환불을 조립해 줘."

이 도구는 TON 에스크로의 GRAM을 여러분에게 되돌리는 트랜잭션을 조립하고, 사용자는 그것에 지갑으로 서명합니다. 멈춰 버린 거래 상대방 때문에 자금을 잃는 일은 설계상 불가능합니다. 타임락이 그것을 지켜 주기 때문입니다.

여기서 반드시 지켜야 할 규율에 주목하십시오. 비밀값은 추적이 대응 에스크로를 확인해 준 뒤에만 공개합니다. 그보다 먼저 공개하는 것이야말로 스스로를 위험에 빠뜨리는 유일한 방법이며, 그래서 이 단계는 자동화 속에 숨겨 두지 않고 별도의 명시적인 도구로 떼어 놓았습니다.

MCP 서버 연결, 그리고 다음 단계

시간을 낭비하지 않도록 갈림길부터 짚고 가겠습니다. @tonnode/mcp 패키지는 오픈소스(MIT, GitHub tonnode/mcp)이며, HTTP 계층 없이 TON의 네이티브 ADNL 프로토콜로 동작합니다. 공개 설정으로 로컬에서 실행하면 읽기 도구 전체 세트(8개 read 도구: 잔액, 계정 상태, 트랜잭션, get 메서드 등)를 제공합니다. TON을 읽기에는 이것으로 충분하지만, 스왑도, 크로스체인도, 지갑도 여기에는 없습니다. MCP 클라이언트(Claude, Cursor, Codex 등 MCP를 지원하는 무엇이든)의 로컬 설정은 다음과 같습니다.

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

이 글에서 다룬 다섯 개의 크로스체인 도구는 스왑·지갑 생성 도구와 마찬가지로 hosted 엔드포인트 mcp.tonnode.io를 Bearer 키로 호출할 때만 동작합니다. Hobby 키는 무료이고 로그인 직후 카드 없이 발급되지만(60 요청/분), 어디까지나 hosted 키이지 로컬 npx 단독 실행이 아닙니다. 크로스체인 파이프라인용 설정은 다음과 같습니다.

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

궁금증을 덜어 줄 사실 몇 가지를 정리합니다.

  • TONNode의 도구는 전부 16개입니다. 모든 요금제에서 16개 전부를 쓸 수 있습니다. 여러분이 지불하는 것은 처리량이지 기능 "잠금 해제"가 아닙니다. 위의 두 설정이 다른 것은 도구 구성이 아니라 접속 지점입니다. 로컬 npx는 읽기만 제공하고, 키를 쓰는 hosted 엔드포인트는 다섯 개의 크로스체인 도구를 포함한 전체 세트를 열어 줍니다.
  • GRAM은 2026년 6월에 이름이 바뀐 Toncoin입니다. 네트워크는 여전히 TON이라고 불리며, 바뀐 것은 코인의 이름뿐입니다.
  • 무료 Hobby 키는 60 요청/분이며 카드가 필요 없습니다. 크로스체인 파이프라인 전체를 한 번 돌려 보기에 충분한 양입니다.

다음 단계

여러분의 에이전트가 이미 TON에 살고 있고 Avalanche로(또는 Ethereum, Base, Arbitrum, BNB Chain, Polygon으로) 가치를 보내야 한다면, get_crosschain_quote → build_crosschain_swap_tx → track_crosschain_swap → disclose_crosschain_secret 체인을 구성하고 build_crosschain_refund를 안전장치로 준비해 두십시오. TON에서 나가는 크로스체인을 애초에 왜 거래소가 아니라 MCP로 처리해야 하는지는 이 글에서 따로 다룹니다.

무료 Hobby 키를 받아 지금 바로 크로스체인 도구를 연결해 보십시오: tonnode.io/dashboard?plan=hobby. 카드는 필요 없고, 60 요청/분이면 파이프라인 전체를 돌려 원자적 HTLC가 실제로 작동하는 모습을 보기에 충분합니다.

16개 도구를 전부 보려면 도구 페이지를, 앞으로의 계획은 로드맵을 참고하십시오.

에이전트에게 TON 접근 권한을 주세요

16가지 MCP 도구: 읽기, 논커스터디얼 스왑, 크로스체인, 지갑. 무료 요금제 60 요청/분, 카드 불필요.