‘마스터링 이더리움’ 세미나 3-3 – 5장. 지갑

이번 세미나에서는 ‘5장. 지갑’을 다룹니다. 5장 내용 또한 Mastering Bitcoin 2nd 세미나에서 자세히 다룬 내용이기 때문에 복습이라고 생각하면 됩니다.

 

본문 내용을 빠르게 읽은 후 아래 인용한 본문 내용만 주의해서 한 번 다시 읽습니다.

 

At a high level, a wallet is a software application that serves as the primary user interface to Ethereum. The wallet controls access to a user’s money, managing keys and addresses, tracking the balance, and creating and signing transactions. In addition, some Ethereum wallets can also interact with contracts, such as ERC20 tokens.

More narrowly, from a programmer’s perspective, the word wallet refers to the system used to store and manage a user’s keys. Every wallet has a key-management component. For some wallets, that’s all there is. Other wallets are part of a much broader category, that of browsers, which are interfaces to Ethereum-based decentralized applications, or DApps.

 

지갑을 설계할 때 중요한 고려사항은 편의성과 프라이버시 사이에 균형을 맞추는 것이다.

 

중요한 것은 기존 은행(여러분과 은행만이 여러분의 계좌에 있는 돈을 볼 수 있고 트랜잭션을 위해 자금을 옮기고 싶다고 은행만 납득시키면 된다)의 중앙화된 시스템을 다루는 것에서부터 블록체인 플랫폼(where everyone can see the ether balance of an account, although they probably don’t know the account’s owner, and everyone needs to be convinced the owner wants to move funds for a transaction to be enacted)의 탈중앙화된 시스템으로 사고방식을 바꾸는 것이다.

 

지갑은 주요한 두 가지 형태가 있는데, 지갑이 포함하는 키가 서로 관련이 있느냐 없느냐에 따라 구분된다. 첫 번째 유형은 각기 다른 무작위 수로부터 각각의 키를 무작위적으로 추출하는 비결정적 지갑이다. 두 번째 유형은 모든 키가 시드라고 하는 단일 마스터 키로부터 파생된 결정적 지갑이다.

결정적 지갑에서 시드는 모든 파생된 키를 복구할 수 있다. 그러므로 생성 시점에 단일 백업으로 지갑에 있는 모든 자금과 컨트랙트를 안전하게 보호할 수 있다. 시드는 또한 지갑을 내보내거나 가져오기에 활용되고 다른 지갑 간에 모든 키를 쉽게 이관할 수 있다. 이러한 구조로 인해 시드만 있으면 전체 지갑에 접근이 가능하기 때문에 시드의 보안이 최우선적인 과제가 된다. 한편, 보안 노력을 단일 데이터에 집중할 수 있다는 것은 장점으로 볼 수 있다.

이더리움 지갑을 구현하려면, BIP-32, BIP-39, BIP-43, BIP-44 표준에 따라 백업을 위해 니모닉 코드로 인코딩된 시드를 사용하여 HD 지갑을 구축해야 한다.

 

The second advantage of HD wallets is that users can create a sequence of public keys without having access to the corresponding private keys. This allows HD wallets to be used on an insecure server or in a watch-only or receive-only capacity, where the wallet doesn’t have the private keys that can spend the funds.

HD 지갑의 가장 중요한 측면은 파생된 키가 가질 수 있는 트리 같은 계층적인 관계다. 또한 확장 키(extended key)와 강화 키(hardened key)의 아이디어를 이해하는 것이 중요하다. 확장된 개인키는 접두어 xprv를 사용하고, 확장된 공개키는 xpub를 사용해서 구분한다.

유출된 체인 코드의 위험에 노출되지 않고 편리하게 xpub을 이용해 공개키의 분기를 파생하기 위해서는 일반적인 부모가 아닌 강화된 부모로 공개키 분기를 파생해야 한다. 

 

105 페이지 마지막 문단에 오역이 있네요. ‘인덱스 번호를 … 자식 인덱스 번호가 소수 기호이지만”

소수가 아니가 prime symbol(‘)를 사용한다는 건데.

표 5.6에도 오역이 있습니다. 앞에서는 change를 잔액 주소로 잘 해 놓고, 두 번째 행, 두 번째 열의 설명에서는 변경이라고 하고 있습니다. 잔액 주소라고 해야 합니다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*