지갑의 사용과 지갑 개발

Yona·2022년 1월 14일
1

블록체인

목록 보기
12/22
post-thumbnail
post-custom-banner

Introduction

Achievement Goals

  • 지갑의 종류를 설명할 수 있다.
  • 이더리움 또는 클레이튼 기반의 지갑을 구분할 수 있다.
  • 메타마스크 지갑에서 네트워크를 변경할 수 있다.
  • 마이이더월렛을 사용할 수 있다.
  • 하드월렛을 연동할 수 있다.
  • 리눅스 CLI를 통해 지갑과 키를 관리하고, 사용할 수 있다.
  • HD 월렛과 니모닉 월렛을 이해할 수 있다.
  • 니모닉 코드를 이용하여 니모닉 월렛을 개발할 수 있다.
  • 니모닉 월렛과 HD 월렛의 차이를 이해할 수 있다.

지갑의 종류

지갑의 종류 알아보기

지난 블록체인 이론에서 나왔던 내용이지만 한번 더 상기시키고 가면 좋을 것 같다.
스마트컨트랙트 지갑(metamask), 하드웨어 지갑(ledger), 모바일 지갑(어플버전), 데스크탑 지갑(응용프로그램버전), 웹 지갑 등이 있다.
거래소에서 사용하는 콜드월렛과 핫월렛의 차이점도 알고 넘어가자.
💡다중 암호화폐 지원을 하는 지갑도 있고, 카드처럼 되어있는 지갑도 있고, 지문인증형 하드웨어 지갑은 국내 최고 블록체인 지갑 회사인 디센트가 있다.

메타마스크

메타마스크 확장프로그램 다운로드 링크
확장프로그램 추가한 다음에 시작하기를 눌러 지갑생성을 진행하면 누구나 쉽게 지갑을 만들 수 있다.
만드는 과정에서 비밀 백업 구문(Secret Recovery Phrase)이 나오는데 이것이 니모닉 키(개인 키)이다.

⚠️ 반드시 잃어버리지말고 누구한테도 알려줘서는 안되니 잘 보관하도록 해라 ⚠️

개발환경을 위한 테스트넷 네트워크 설정하기 - Ropsten

이러면 됨?

왜 안됨?
보통은 첫번째 사진처럼 나올건데, 만약 테스트 네트워크가 안보인다 싶으면
메타마스크 오른쪽 상단에 보이는 프로필 클릭 > [설정] > [고급] > Show test networks 기능 활성화 해주면 된다.

우리는 Ropsten 이라는 테스트넷을 사용할것이다. (테스트넷의 차이점이 궁금하다면?? - 링크)

테스트용 이더리움 수령하기


Account 밑에 보이는 0x로 시작하는 주소가 본인의 지갑 주소이다. 딱히 기억할 필요는 없고, 공개 키이기 때문에 숨길 필요도 없다. 여튼 지갑 주소를 복사하였으면 Ropsten Ethereum Faucet 에 접속해서 테스트용 이더리움을 받도록하자. (30초정도 걸렸고, 0.3이더를 받았다)

마이이더월렛

마이이더월렛... 이더리움 전용 암호화폐 지갑이다. 메타마스크가 활발하게 사용되기 이전에는 많이쓰였는데 요즘에는 잘 사용되지않는것같다. (그러므로 만드는 방법은 생략하겠다...)

Geth Wallet

웹 말고도 CLI를 통해서도 계정을 생성하고, 네트워크 설정하는 기능 모두 사용가능하다.
$ sudo add-apt-repository -y ppa:ethereum/ethereum

$ sudo apt-get update
$ sudo apt-get install ethereum

$ geth -h 를 통해서 geth 관련 명령어가 어떤 것이 있는지 확인 해보록...

MEW, Geth(CLI), 메타마스크로 생성된 지갑의 차이점

구조의 순서가 다르다.


지갑 개발

니모닉과 HD Wallet 이해하기

니모닉과 HD Wallet 또한 블록체인 이론에서 한번 봐왔던 내용이니 어떠한 개념이었는지 상기하고 넘어가자
HD Wallet 은 계층적 결정적 지갑의 약자로 하나의 Seed값(니모닉 키)으로 여러 개의 주소(Account)를 생성 할수있는 지갑이다.
지갑과 관련해서는 니모닉 단어를 생성하는 BIP-39 와 계정과 주소를 생성하기 위한 BIP-44 를 자주 접하게 된다.

BIP-44는 미리 정의된 다섯 가지의 트리 레벨로 구성된 구조를 갖는다.
m / purpose' / coin_type' / account' / change / address_index

  • purpose' : 목적은 항상 44로 설정한다.

  • coin_type' : 암호화폐의 유형을 지정한다. (SLIP0044 라는 문서에 여러화폐가 정의되어있다)
    💡 모든 화폐의 테스트넷은 1번으로 m/44'/1' 이라 표기하면 된다 💡

    분명 해시넷에서는 61이라고 나와있는데... SLIP-0044를 보니 모든 테스트넷은 1번인 것이다..

    그래서 낼름 바꿨다...ㅋㄷㅋㄷ (찾아보니깐 예전에는 61 이었다고 한다 - 링크)

  • account' : 계정이다.

    이런식으로 나는 m/44'/8217'/0' 과 m/44'/8217'/1' 의 계정을 갖고있다는 의미로 받아들임 될 듯하다.

  • change : 잔돈 계정 여부.

  • address_index : 사용 가능한 주소 인덱스.

change와 address_index는 이해가 좀 안되서 그냥 해시넷꺼 가져왔다. 혹시나 저 글을 보고 이해되면 댓글로 알려달라.

레벨-4 (change, 잔돈 계정 여부) : 트리의 네번째 레벨은 잔돈 계정 여부(change)이다. BIP44는 원래 비트코인을 위해 제작되었기 때문에 이더리움 세계와 관련이 없는 '특이점'(quirk)이 포함되었다. HD 지갑에는 2개의 하위 트리가 있는데 하나는 입금 주소 작성용이고 다른 하나는 잔액 주소 작성용이다. 이더리움은 비트코인에 있는 잔액 주소가 필요 없으므로 단지 '입금' 경로만 사용하여 항상 0이다. 이전 레벨은 강화파생만 사용했지만 이 레벨은 비보안 환경에서 사용할 수 있도록 확장된 공개키를 트리의 계정 수준에서 내보낼 수 있게 하기 위해서 일반 파생을 사용한다. [1]
레벨-5 (address_index, 사용 가능한 주소 인덱스) :트리의 다섯번째 레벨은 사용 가능한 주소 인덱스로 만드는 것이다. 예를 들어 주 메인 계정에서 이더리움 지급을 위한 세 번째 입금 주소는 M/44'/60'/0'/0/2가 될 것이다.[2] 이것은 HD 지갑에서 파생된 level-4의 자식이다.

이해를 돕는 예제를 통해 읽으면서 한번 더 복습해보자

M/44'/60'/0'/0/2 : 메인 이더리움 계정에 대한 세 번째 수신 공개키
M/44'/0'/3'/1/14 : 4번째 비트코인 계정의 15번째 주소 변경 공개키 
m/44'/2'/0'/0/1 : 트랜잭션 서명을 위한 라이트코인 메인 계정의 두 번째 개인 키

니모닉 월렛 개발하기

eth-lightwallet 에 대해서 학습해보자 (eth-lightwallet)


참고자료


post-custom-banner

0개의 댓글