
흔히 Hot Wallet, HD Wallet라고 하면 대표적인 소프트웨어들이 많다. Exodus부터 시작해서 MetaMask까지.
이 소프트웨어들 전부 갖고있는 특징이 있는데 '비밀 문구'만 알고있다면 오프체인에서 지갑을 복구할 수 있다.
Magic 같아 보이는 구조를 톺아보도록 하자.
HD Wallet
HD Wallet은 Hierarchical Deterministic Wallet의 약자다. 계층형 결정론적 지갑이란 뜻인데, 사전적 의미만 봐선 역할 파악이 쉽지가 않다.
아래가 HD Wallet의 전체 흐름 구조이다.
Master Seed (니모닉 → 512bit Seed)
│
└── Master Key (m)
│
├── Purpose (m/44') ← BIP-44 표준
│ │
│ ├── Coin Type (m/44'/0') ← Bitcoin
│ │ │
│ │ └── Account (m/44'/0'/0')
│ │ │
│ │ ├── External (m/44'/0'/0'/0) ← 수신 주소
│ │ │ ├── Address 0
│ │ │ ├── Address 1
│ │ │ └── ...
│ │ │
│ │ └── Internal (m/44'/0'/0'/1) ← 잔돈 주소
│ │
│ ├── Coin Type (m/44'/60') ← Ethereum
│ │ └── ...
│ │
│ └── Coin Type (m/44'/501') ← Solana
│ └── ...
'비밀 문구'. 즉, 니모닉에서 Seed로 변환하고, 거기서 파생된 Master Key를 사용하여 계층적으로 파생된 키를 사용한다.
이런 수학적 알고리즘을 통해 한 시드에서 여러 키를 관리할 수 있는 것이다. 반대로 말하면 시드가 털리면 모든 지갑이 다 털릴 것이다.
세부적으로 톺기 전 BIP에 대해서 간략하게 소개하자면 비트코인 개선 제안(Bitcoin Improvement Proposal) 의 약자이다.
대강 탈중앙화 기술 논의 결정을 위한 제안서 정도로 생각하면 될 것 같다. 실제로 거기서 채택된 것들이 BIP-32와 BIP-44이다.
표준을 지키지 않아도 지갑 주소 찍어내서 체인에서 쓰는 건 문제없다. 근데.. 예를 들자면 메타마스크에서 콜드월렛으로 지갑 백업을 못한다.
즉 각 지갑별로 호환성을 지키려고 존재한다 생각하면 된다.
BIP-32
계층적 파생을 위한 표준으로 알고리즘으로, 마스터 키를 만들 때 사용된다.
512비트 시드를 받아서 반으로 쪼개서 (256비트 씩) 왼쪽은 마스터 개인키, 오른쪽은 마스터 체인 코드로 쓴다.
왜 이렇게 하나 싶겠지만, 마스터 체인 코드가 엔트로피 역할을 해서 자식 키를 만들 때 무작위성을 부여해준다. (실질적으로는 관련이 있긴 하지만)
키 찍어내는 핵심 알고리즘이다.
BIP-44
크립토별 계층 구조를 정형화 시켜주는 표준 규약이다. 이건 알고리즘은 아니고 규약인데,
아까 트리 구조에서 m/44'/.. 하던게 이거다. 규약 안 지키고 멋대로 Path 만들면 아까 말했던 것처럼 해당 지갑 서비스가 망해버린다면, 자산 복구가 매우 힘들어진다. 암호화폐 생태계의 철학인 탈중앙화, 자기 주권이 훼손된다.
경로 구조는 이렇게 생겼다.
m / purpose' / coin_type' / account' / change / address_index| 레벨 | 설명 | 예시 |
|---|---|---|
purpose' | BIP 번호 | 44' |
coin_type' | 코인 종류 | 0'=BTC, 60'=ETH |
account' | 계정 번호 | 0', 1', 2'... |
change | 외부/내부 | 0=수신, 1=잔돈 |
address_index | 주소 인덱스 | 0, 1, 2... |
참고로 ' (프라임)은 Hardened Derivation을 의미한다. 쉽게 말하면 자식 키가 유출되어도 부모 키를 역추적 못하게 보안을 강화한 파생 방식이다. Purpose, Coin Type, Account처럼 중요한 레벨에는 다 붙어있다.
BIP-38
이건 니모닉을 만들 때 쓰는 알고리즘인데, 랜덤으로 생성한 엔트로피를 사람이 기억하기 쉽게 word list 인덱스로 매핑 시키는거다.
그래서 초기에 말했던 비밀 문구만 있으면 지갑이 복구가 되는거다.
이런 BIP들이 지켜지며 블록체인 탈중앙화 생태계가 구축된건데, 개인적으로 매우 신기하다. 그냥 수학, 암호학 놀음에 불과한데 (내려치기 하는게 아니다), 이걸 어떻게 공동이 다 지키게 만들었나 싶다.