TON 블록체인을 Trust Wallet에 통합하기: 사례 연구

발행: (2026년 1월 16일 오전 05:56 GMT+9)
8 min read
원문: Dev.to

Source: Dev.to

번역할 텍스트가 제공되지 않았습니다. 번역을 원하는 전체 내용을 알려주시면 한국어로 번역해 드리겠습니다.

여정

  • Month 1: TON이 1억 3천만 사용자를 보유한 지갑에서 라이브되었습니다.

  • Grant: TON 재단이 개발 보조금을 제공한다는 것을 보고 신청했으며, 그들은 거의 즉시 저에게 연락했습니다.

  • Collaboration: Trust Wallet에서 일하는 친구에게 메시지를 보냈습니다. 함께 다음과 같은 구성원으로 그룹 채팅을 만들었습니다:

    1. Wallet Core 개발자
    2. TON 팀
    3. 제 엔지니어 친구
  • Complication: Trust Wallet은 두 부분으로 구성됩니다:

    1. Wallet Core – 키 생성, 주소 검증, 트랜잭션 서명 등을 처리하는 오픈‑소스 라이브러리.
    2. App layer – 잔액을 가져오고, 트랜잭션을 전송하며, UI와 상호작용하는 클로즈드‑소스 코드.

    앱 레이어는 내부 Trust Wallet 팀만 수정할 수 있으며, 이는 경영진 승인, 할당된 엔지니어링 시간, 그리고 책임을 의미합니다.

  • Foundation concerns: “Trust Wallet이 앱에 절대 추가하지 않으면 어떡하나요? 왜 보조금을 제공하나요?”

  • Resolution: 양 팀이 중간에서 합의했습니다.

    • TON이 보조금을 승인했습니다.
    • Trust Wallet이 통합을 우선시하겠다고 약속했습니다.

    Result: Trust Wallet 사용자에게는 새로운 블록체인, TON 사용자에게는 새로운 지갑 – 윈‑윈 상황.

  • Development: 제 친구가 대부분의 코딩을 담당했고, 저는 검토하고 다듬었습니다. PR은 약 한 달 만에 머지되었습니다.

Trust Wallet 플랫폼

플랫폼설명
Android네이티브 앱
iOS네이티브 앱
Browser Extension웹 기반 지갑

그 핵심은 Wallet Core, **130+**개의 블록체인을 지원하는 오픈소스 C++/Rust 라이브러리입니다. 이 라이브러리는 Trust Wallet뿐만 아니라 다른 주요 지갑(예: Crypto.com)에서도 사용됩니다. 라이브러리는 다음을 처리합니다:

  • 개인키 생성
  • 주소 생성 및 검증
  • 거래 서명
  • 스마트 계약 상호작용

여기에 TON을 추가했습니다.

Background on TON

  • Original project: Pavel Durov가 시작했으며, 개발은 부분적으로 TON Labs가 담당했습니다.
  • Sanctions: 미국 제재 이후 Durov는 물러났지만, TON Labs는 Free TON이라는 포크를 계속 진행했으며 나중에 Everscale로 이름이 바뀌었습니다.
  • Current state: Durov가 승인한 새로운 TON Foundation이 프로젝트를 부활시켜 텔레그램에 통합했고, 이제 급성장하고 있습니다.

TON Labs는 인상적인 기술 작업을 많이 기여했습니다. Everscale은 이미 Wallet Core에 포함되어 있었으며, 우리는 공유 코드를 CommonTON이라는 모듈로 추출했으며, 이제 이 모듈이 Everscale과 TON 모두를 구동합니다.

지갑 모델 차이점

체인지갑 유형구현
EverscaleV3 지갑 (구버전)이미 Wallet Core에 포함
TONV4R2 지갑 (신버전)이번 통합을 위해 구현됨

TON에서는 지갑이 단순한 주소가 아니라 완전한 스마트 계약입니다. 트랜잭션을 만들기 위해서는 지갑 계약에 외부 메시지를 보내고, 그 후 지갑이 내부 메시지를 수신자에게 전달합니다.

External Message (user → wallet contract)
├─ header: sender’s contract address
├─ stateInit: code & data (only on first transaction)
└─ body
   ├─ signature: Ed25519 signature
   └─ signing_message
      ├─ wallet_id, expire_at, seqno
      └─ Internal Message (to recipient)
         ├─ header: "send Y nanotons to address Z"
         └─ body: transfer comment

기술 세부 사항

셀 구조 (Bag‑of‑Cells)

모든 TON 데이터는 들의 트리이며 (최대 1023 비트 + 최대 4개의 참조). 아래는 V4R2 지갑 데이터 셀을 생성하기 위해 추가한 코드입니다 (C++‑스타일, Wallet Core에 컴파일됨).

// Create the data cell for a V4R2 wallet
Cell::Ref WalletV4R2::createDataCell() const {
    CellBuilder builder;

    builder.appendU32(0);                         // sequence_number
    builder.appendU32(walletId);                  // wallet_id
    builder.appendRaw(publicKey.bytes, 256);       // public key (256 bits)
    builder.appendBitZero();                      // "no plugins" flag

    // Total: 321 bits → fits into a single cell
    return builder.intoCell();
}

트랜잭션을 만들기 위해 우리는 다음을 위한 셀들을 조립합니다:

  • 수신자 주소
  • 금액
  • 선택적 코멘트

모두 Wallet Core에 이미 존재하던 BOC (Bag‑of‑Cells) 직렬화기에 담깁니다.

주소 형식

체인원시 주소 예시사용자 친화 형식
Everscale0:4f6bbb5de550f01a5b73792ceca77d8c933ab396a1e300eb0ab5a5f49a430986
TONEQBPa7td5VDwGltzeSzsp32MkzqzlqHjAOsKtaX0mkMJhq_B

TON 형식은 주소‑타입 정보와 체크섬을 포함하는 Base64 문자열이며, 오타를 잡아내는 역할을 합니다.

시드 구문 및 키 파생

  • BIP‑39 정의:

    seed = hash(mnemonic + salt)

  • 표준 솔트: "mnemonic" + password

  • TON 솔트: "TON default seed"

솔트가 다르기 때문에 동일한 니모닉이 Tonkeeper와 Trust Wallet에서 다른 개인 키를 생성합니다. 따라서 지갑은 상호 교환할 수 없습니다. 같은 문제는 Waves, Qtum, Polkadot (sr25519)에서도 나타납니다.

TON 주소의 체크섬은 시드 구문 오타로 인해 잘못된 주소가 될 경우 즉시 사용자에게 경고합니다.

코드 이상의 기여

  • Trust Wallet 팀에 코드 예시 제공:
    • 거래 데이터 가져오기
    • 지갑 상태 조회
  • TON 관련 앱‑통합 질문에 컨설팅 제공.
  • 블록체인 메타데이터와 TON 로고를 assets 저장소에 추가.

결과

MetricValue
Trust Wallet을 통한 TON 접근 사용자130 million
블록체인 통합을 위한 보조금$4,250
Jetton (TON 토큰) 추가 보조금$4,000
Wallet Core에 PR 병합January 2023

초기 통합 후, 저는 Jetton 지원(TON 토큰)을 추가했고, 이후 TON 및 NEAR를 위한 다른 프로젝트로 이동했습니다.

가끔 트위터에 개발 노트와 기타 내용을 공유합니다.

감사의 말씀

기여해 주신 모든 분들께 진심으로 감사드립니다:

  • Tao Xu
  • Roman Sztergbaum
  • optout
  • Sergei (Trust Wallet 팀) – 조직 및 코드 리뷰
  • Kirill (TON 재단) – 모든 것을 관리하는 데 도움을 주었습니다
  • Narek – TON의 기술 지원
  • Vyacheslav – 주요 통합을 구현했습니다
  • Vladimir (Trust Wallet) – 가능하게 만들었으며 코드 리뷰를 수행했습니다
  • 그리고 이 프로젝트에 기여한 모든 분들께
Back to Blog

관련 글

더 보기 »

난독증은 전염되나요?

!‘Is Dyslexia Contagious?’ 표지 이미지 https://media2.dev.to/dynamic/image/width=1000,height=1000,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-...