본문 바로가기

Cryptography/블록체인

Mastering Bitcoin

비트코인 거래 개념

입력값(비트코인 계좌에서 빠져나가는 값) =/= 출력값(비트코인 계좌로 들어오는 값)

→ 입력값 - 출력값 = 거래 수수료의 값 

* 거래 수수료: 자신의 거래를 검증하고 새로운 블록에 추가시켜주는 채굴자에게 주는 일정량의 보상.
  채굴자는 2가지의 보상 획득:

    1. 새로운 블록을 검증하고 생성하며 일정량의 비트코인 획득
    2. 블록에 추가되는 거래에 대한 거래 수수료 획득 

 

비트코인은 통화량이 정해져 있음(2100만개)  → 통화량만큼 비트코인이 다 발행되면 더 이상 비트코인을 보상으로 받을 수 없게 됨. 그러면 채굴자가 받는 보상은 거래 수수료 하나 뿐.  

 

지갑 어플리케이션의 거래 처리 로직 

1. Getting right inputs

   UTXO(Unspent transaction output)에 대한 데이터베이스가 지갑 어플리케이션에 저장

   → 지금까지 받았던 비트코인에 대한 복사본 포함 

  풀노드(Full Client): 제네시스 블록부터 지금까지의 모든 블록체인을 가지고 있는 노드. 
                                 블록체인 상에 있는 모든 거래에서 UTXO에 대한 복사본을 가지고 있음. 

                                  모든 지갑 소유자들이 풀노드라면 UTXO에 대해 빠르게 검증할 수 있지만, 디스크 용량의 한계로                                    대부분의 지갑 사용자는 라이트 노드 

라이트노드: 자신의 UTXO 복사본만 보유. 복사본이 없을 경우 풀노드에 요청하여 해당 정보의 검색을 비트코인 네트워크에 요청 가능 

2. Creating the outputs

 

채굴

채굴: 블록을 새롭게 생성하는 과정. 블록체인에 새로운 블록을 추가하는 과정에서 신뢰성 유지 방법 존재. 

P2P 네트워크 상의 모든 노드에 새로운 거래를 전달해야 함. 거래 결정 과정: 1. 비트코인 네트워크 상의 모든 노드에 거래 내역 전파 → 2. 거래 검증을 위해 채굴 과정을 거쳐서 블록에 포함되어야 함. 채굴 과정에서 작업증명(Proof of Work)으로 충분한 연산량 기반의 승인임이 확인되는 것이 필요함 정리하자면, 거래가 네트워크에 전파 --임시풀에 저장--> 블록체인에 로드(채굴자들이 새로운 블록을 생성하여 추가) -> 검증(새 블록의 유효성 검증을 위해 작업증명(POW)을 거침)

 

비트코인 채굴: (초반) CPU 사용 → GPU 사용 → ASIC(전문 채굴장비) 사용 ← 채굴의 중앙화 문제 발생 

 

위조 여부 검증

비트코인 네트워크에서 디지털 키, 비트코인 주소, 디지털 서명 기반으로 확인 

 

지갑

지갑: 기본 사용자 인터페이스로 사용되는 응용 프로그램. 사용자의 돈에 접근, 키 & 주소 관리, 잔액 추적, 트랜잭션 생성 및 서명을 제어함. 데이터 구조라고도 볼 수 있음. 

- 비결정적 지갑: 모든 키의 복사본을 보관해야해서 지갑을 자주 백업해야 함. 주소 재사용 문제 존재. 

- 결정적 지갑: 개인키 생성의 기반이 되는 단방향 공통 시드(Common seed)가 존재. 시드를 사용하여 키 복구가 가능하믈 생성 시 한 번만 백업해도 됨.  

- HD 지갑: 부모키가 자식 키들을 파생시킴. 계층적으로 키를 생성해 매 거래마다 새로운 주소 생성 -> 개인 정보 보호 .

                  Root seed(단일 시드)로부터 HD 지갑을 만듦. 많은 키, 주소 관리에 용이한 매커니즘 

                  공개키에 대응되는 개인키에 접근하지 않고 공개키 생성 가능  

                  BIP-32 표준

                   - 연상기호(mnemonic): 시드 생성 + HD 지갑 <- BIP-39

                                                         연상기호를 사용해 백업 및 복구

                                                         비트코인 지갑 구현 시 BIP-32, BIP-39, BIP43, BIP44 표준에 따라

                                                         연상기호로 인코딩된 시드 사용해서 HD 지갑 구축해야 함 

지갑 기술

- Mnemonic Code Words (BIP-39)

- Generating mnemonic words

 

참고

[Mastering Bitcoin] 마스터링 비트코인 내 맘대로 정리 - Ch04 (tistory.com)