ERC-600 이더리움 결정적 지갑 경로 할당 (Ethereum purpose allocation for Deterministic Wallets)

Final · 계정·지갑 · 2017-04-13 작성

시드 하나로 여러 키를 만들어 내는 결정적 지갑(deterministic wallet)에서 이더리움 전용 키 유도 경로 m/43'/60'/EIP'를 정의해 지갑끼리 같은 방식으로 주소를 만들 수 있게 합니다.

왜 필요한가

결정적 지갑은 복구 문구 같은 시드 하나에서 정해진 경로를 따라 여러 개의 키와 주소를 만들어 냅니다. 이때 어떤 경로를 쓸지 정한 기존 표준인 BIP44는 비트코인처럼 미사용 출력(UTXO) 단위로 잔액을 관리하는 코인을 전제로 설계되었습니다. 이더리움은 계정 잔액 방식이라 이 계층 구조가 잘 맞지 않습니다. 그 결과 지갑마다 서로 경쟁하는 유도 경로 전략이 생겨났고 클라이언트 간에 호환이 되지 않는 문제가 발생했습니다. 이 표준은 이더리움의 고유한 요구에 더 잘 맞는 방식으로 경로를 표준화할 길을 제시하기 위해 만들어졌습니다.

심층 설명

BIP32·BIP43 위에 세운 논리 계층

이 표준은 결정적 지갑의 키 유도 체계인 BIP32와, 경로의 첫 수준(purpose)으로 용도를 구분하는 BIP43, 그리고 BIP43에 제안된 변경안을 바탕으로 이더리움용 논리 계층을 정의합니다. 원문은 이 EIP가 BIP43의 한 가지 특정한 응용이라고 명시합니다. 즉 완전히 새로운 암호 기법을 만드는 것이 아니라, 이미 널리 쓰이는 키 유도 체계 안에서 이더리움 몫의 자리를 정하는 표준입니다.

BIP44가 이더리움에 맞지 않는 이유

이더리움은 UTXO가 아니라 계정 잔액에 기반하기 때문에 BIP44가 정의한 계층이 잘 맞지 않습니다. 그 결과 결정적 지갑들 사이에 서로 경쟁하는 유도 경로 전략이 여럿 생겨났고 클라이언트 간 비호환으로 이어졌습니다. 이 표준은 이더리움의 고유한 요구에 더 잘 맞는 방식으로 이를 표준화할 경로를 제공하려고 합니다.

경로 구조 m / purpose' / subpurpose' / EIP'

BIP32 경로에 2개 수준을 정의해 전체 구조는 m / purpose' / subpurpose' / EIP'가 됩니다. 경로의 어깨점(')은 BIP32 강화 유도(hardened derivation)를 쓴다는 표시이며 세 수준 모두 강화 유도를 사용합니다. 각 수준에는 아래와 같은 특별한 의미가 있습니다.

각 수준의 값: 43, 60, EIP 번호

purpose는 BIP43 변경 제안에 따라 43으로 설정하며 이 경로가 비트코인이 아닌 암호화폐용임을 나타냅니다. subpurpose는 이더리움의 SLIP-44 코드인 60으로 설정합니다. 마지막 EIP 수준은 BIP32 유도 경로의 나머지 부분을 명세하는 EIP의 번호로 설정합니다. 이렇게 하면 결정적 지갑을 쓰는 새로운 이더리움 중심 응용이 비트코인 쪽 BIP 절차와 접촉할 필요 없이 경로를 정의할 수 있습니다.

기존 관행 m/44'/60'/*을 대체하려는 이유

기존 관행은 '이더리움' 코인 타입을 써서 m/44'/60'/*로 시작하는 경로를 사용하는 것입니다. 원문은 이 방식이 여전히 UTXO 기반 코인을 전제하기 때문에 적합하지 않으며 표준화·사용성·보안 면에서 타협을 낳는다고 주장합니다. 그래서 이더리움 계열 체인을 위한 완전히 새로운 계층을 정의하는 위 제안을 내놓았습니다.

하위 호환성과 구현 현황

또 하나의 유도 경로가 도입되므로 기존 소프트웨어는 이미 지원하는 체계에 더해 이 체계도 추가로 지원해야 합니다. 원문은 이더리움의 지갑 유도 경로가 이미 혼란스러운 상태라서 추가 혼란은 비교적 적을 것이고 장기적으로는 상황을 크게 개선할 잠재력이 있다고 봅니다. 다만 원문 작성 시점에 테스트 케이스는 미정(TBD)이고 구현도 아직 없다고 적혀 있습니다.

ERC 원문 · ← ERCs