-
Notifications
You must be signed in to change notification settings - Fork 12
Wallet
Seong-il Lee edited this page Oct 26, 2018
·
20 revisions
- 랜덤 한 256bit로 이뤄진 값
- 일반 난수 생성기로 개인키를 생성하는 것보다 엔트로피 (무작위성)가 높은 함수로 생성해야 안전하다.
- 최소 값 : 0x1
- 최대 값 : 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
- 2^256 = 1.1579209e+77, 가시적 우주의 원자 개수로 표현되는 10^80과 맞먹는 숫자
- 비트코인 주소 생성기
- 개인키를 생성했으면 타원곡선 곱셈을 이용해서 공개키를 계산할 수 있다.
- 비트코인은 secp256k1을 사용한다.
- Base64 : 64가지의 문자로 수를 표현. A-Z(26), a-z(26), 0-9(10), +, / (2)
- Base58 : 58가지의 문자로 수를 표현. Base64에서 헷갈릴 수 있는 0-O(숫자 영, 대문자 오), I-l(대문자 아이, 소문자 엘), +, / 6문자를 뺀 것
- 비트코인에서는 보안을 위해서 비트코인 주소를 일회용으로 사용하길 권장한다.
- 그래서 100개의 거래를 위해서는 100개의 주소가 필요하다. (100개의 개인키를 저장해야 한다.)
- 매번 무작위하게 개인키를 생성하고, 그에 따른 비트코인 주소를 사용한다.
- 보관이 어렵다. 공개키 - 개인키 쌍을 모두 백업해야 한다.
- 하나의 시드를 기반으로 규칙을 가지고 주소를 생성한다.
- 말 그대로 계층적으로 구분되어 상위 계층의 키를 이용해서는 하위 계층을 제어할 수 있지만, 하위 계층의 키를 이용해서는 상위 계층을 제어할 수 없다.
- BIP-0032
- 결정적 지갑의 시드를 생성할 수 있는 엔트로피를 사람이 기억하고 읽기 쉬운 방식으로 저장하기 위해, 단어로 표현한 것
- BIP-0039
- Mnemonic Wordlists
- Mnemonic Code Converter
* ENT : initial entropy length * CS : the checksum length * MS : the length of the generated mnemonic sentence in words. CS = ENT / 32 MS = (ENT + CS) / 11 | ENT | CS | ENT+CS | MS | +-------+----+--------+------+ | 128 | 4 | 132 | 12 | | 160 | 5 | 165 | 15 | | 192 | 6 | 198 | 18 | | 224 | 7 | 231 | 21 | | 256 | 8 | 264 | 24 |
- 핫 데이터
자주 사용하는 데이터 - 콜드 데이터
자주 사용되지 않지만 보관이 필요한 데이터
데이터 저장소
-
핫 스토리지
- 일반 : 핫 데이터를 저장하는 저장소. 빠르게 접근할 수 있어야 한다. (속도 > 용량)
- 암호화폐 : 온라인으로 연결 되어 바로 출금이 가능한 저장소
- 예시
- 인터넷에 연결 된 PC
- 데이터베이스
- 클라우드
-
콜드 스토리지
- 일반 : 콜드 데이터를 저장하는 저장소. 많은 데이터를 저장할 수 있어야 한다. (속도 < 용량)
- 암호화폐 : 오프라인 상태를 유지하여 바로 출금이 불가능한 저장소
- 예시
- USB 메모리
- 종이에 적어 놓음
- 머리 속에 기억
단순히 개인키를 저장하는 것 이 외의 더 많은 기능을 제공
- 새로운 계정 생성
- 서명 생성
- 트랜잭션 생성
- 추가 적인 보안 설정 (패턴, 지문, 안면 인식 등)
- 트랜잭션 내용 작성
A가 B한테 1 ETH를 보내겠다. - 개인키로 서명
이 트랜잭션은 A가 생성한 트랜잭션이 맞다. - 서명 된 트랜잭션 내용을 블록체인 네트워크에 전송
Parity, MyEtherWallet, MetaMask 등등
-
핫 월렛
- 온라인 상태에서 개인키가 만들어진 경우
- 1, 2, 3번 과정을 모두 온라인 상태에서 진행
- 해킹으로 데이터가 유출되면 개인키도 같이 유출 될 위험이 있음.
- 보안
- 2FA(Two-Factor Authentication) : 지문, OTP, PIN
-
콜드 월렛
- 오프라인 상태에서 개인키가 만들어진 경우
- 예시 : MEW 프로그램을 USB에 다운 받아서 오프라인 상태의 PC로 옮긴 후 계정(개인키/공개키)를 생성한 경우
- 1, 2번 과정은 오프라인 상태에서 진행하고 3번 과정만 온라인 상태에서 진행
- 해킹으로 인해 개인키가 유출 될 위험이 없음.
- 오프라인 상태에서 개인키가 만들어진 경우
-
온라인 월렛
- 거래소 지갑
-
소프트웨어 월렛
- MetaMask
- Mist
- Parity
- 기타 블록체인 지갑을 포함하고 있는 프로그램
- Geth(Go-Ethereum)
- Bitcoin Core
- MetaMask
-
하드웨어 월렛
- Ledger Nano S
- Trezor One
- Ledger Nano S
-
모바일 월렛
- Jaxx
- Jaxx
-
페이퍼 월렛
- 핫 월렛을 사용하지만 콜드월렛에 대부분 자산을 저장해두면서 안전하게 보호함
- 은행의 지급 준비율처럼 당장 필요로 하는 만큼만 핫 월렛에 저장해서 사용
- 거래소 내에서 일어나는 거래들은 블록체인에 기록되지 않는다.
- 거래소 밖에서 입금 또는 출금을 해야 되는 경우에만 블록체인에 기록된다.
- 거래소별 콜드월렛 비율 문의 결과
- M of N : N개의 개인키 중에서 M개의 키에 의해 출금 서명이 되어야지만 출금이 이루어지는 월렛
- 자산을 1인이 단독으로는 출금하지 못하고 2인 이상의 동의가 있어야 출금할 수 있는 형태
- 스마트 컨트랙트 형태로 구현되어 있는 일종의 dApp
- 에스크로 : 구매자, 판매자, 중개자의 2 of 3
- 정상적인 구매/판매가 이뤄진 경우 3명 모두 서명
- 구매자가 정당한 사유로 환불 요청한 경우 : 구매자, 중개자 만 서명하면 환불 가능
- 판매자가 정당한 사유로 판매를 철회 한 경우 : 판매자, 중개자 만 서명하면 철회 가능
- 핫월렛과 콜드월렛의 개념
- 콜드 스토리지 - 나무위키
- 클라우드 스토리지와 핫•콜드 데이터
- [코인기본 #8] 핫월렛과 콜드월렛을 구분하는건
- [블록집착남] 핫월렛(Hot wallet), 콜드월렛(Cold wallet), 멀티시그월렛(Multi-Sig wallet)! 지갑에도 종류가 있다
- [쫄불] 쫄지마 블록체인 #40회: 핫월렛과 콜드월렛의 개념 hot & cold wallet
- 암호화폐 지갑, 왜 필요하고 어떻게 만들까
- 지갑의 종류와 그 특징들
- The Top 10 Best Ethereum Wallets (2018 Edition)
- Best Ethereum Wallet (2018 Update) – 5 Options Reviewed
- [Info] 암호화폐 월렛(Crypto Wallets)
- bitcoinbook - ch05.Wallets
- How to generate your very own Bitcoin private key
- Mnemonic Code Converter
- Using Mnemonics to create Wallets
- My notes on bitcoin addresses
- Bitcoin mnemonic phrase in Elixir
