3. 비트코인 기초
1. 비트코인 블록체인 소개
속성:
- 신뢰성: 시스템을 제어하거나 유지관리하는 3세력이 필요 없다.
- 변조 방지: 조작 저항성을 지닌다. 이벤트의 역사는 바꿀 수 없다.
- 투명성: 각각의 참여자들은 그 상태의 모든 정보를 읽고 검증할 수 있다.
2. 비트코인 구조
1. 블록 구조
- 이전 블록의 해시는 체인을 만든다.
- 머클 트리의 머클 루트 노드 해시를 모든 거래에서 갖고 있다.
- nonce(number only used once)는 네트워크안에서 합의 기술에서 필요하다. >> 탐색 퍼즐 푸는데 사용됨
- 체인에 사용되는 블록의 해시는 version부터 nonce필드까지 계산된다.
- 블록의 길이는 코인베이스 거래에 저장된다.
2. 제네시스 블록(가장 처음 블록)
블록은 이전 블록을 참조해야한다.
>> 그러면 블록체인은 어떻게 시작되나?
비트코인의 제네시스 블록:
- 2009년에 채굴됨
- 해시 0이 있는 이전 블록을 참조함
- 채굴 보상 거래만 포함되어 있고 50BTC는 절대 사용할 수 없다.
사용할 수 없다는 것은 비트코인 코어 클라이언트의 소스 코드를 기반으로 알 수 있다. 클라이언트는 ConnertBlock의 모든 블록을 검색하고 거래를 처리하지만 제네시스 블록은 건너뛴다.
3. 비트코인 내에서 거래
1. 계정 기반 ledger
직관적: 계정 기반 접근 방식은 모든 계정의 잔액을 추적하는데 많은 노력이 필요하다.
실제로 비트코인은 계정이 받은 거래를 추적하여 계정 잔액을 합산하지 않는다.
거래는 계정의 'world state'로 이어지고 오프체인(wallet)에서 계정 잔액을 계산할 수 있다.
비트코인은 거래 기반 ledger를 사용하여 지갑 소유자가 조건부 거래를 하도록 지원한다.
노력: 이더리움과 같은 계정 기반 블록체인에서 ledger은 계정 잔액을 추적한다. 각 계정에는 연관된 잔액이 있으며, 거래에는 계정 간에 가치를 이전하는 것이 포함된다. UTXO 대신 계정 기반 블록체인은 계정 잔액 상태를 유지한다. 거래에는 블록체인 프로토콜의 규칙에 따라 계정 잔액 상태를 업데이트하는 것이 포함된다.
2. 거래 기반 ledger(UTXO)
Transactions(Tx)는 input과 output을 가지고 있다.
- Inputs (Txin): 소비되고 있는 중인 이전 output. 송금되는 화폐의 출처를 찾는 곳을 지정함
- Outputs (Txout): 새로운 코인 생성 및 코인 소유권 이전(돈을 뺌)
새로운 코인이 생성되는 거래에서는 Txin이 사용되지 않는다.(코인이 소비되지 않는다)
각각 Tx는 고유 식별자(TxID)가 있다. 각 output에는 transaction내에 ID가 있다. 우리는 이것을 #TX[#txout]형식으로 제공한다. 예를 들면 1[1]은 2번째 있는 trasnsaction에 있는 2번째 Txout이다.
주소 변경:
앨리스는 왜 자신에게 돈을 보내야 할까?(ex 1번)
>> 비트코인에서는 코인을 전부 또는 0개를 다른 거래에서 소비해야 한다. 송금된 주소를 변경 주소라고 한다. 이를 통해 사용하지 않은 트랜잭션 출력(UTXO) 목록만 보관하면 되므로 효율적인 검증이 가능하다.
자금 통합:
사용자는 사용하지 않은 트랜잭션 output을 많이 가지는 대신 자신이 가지고 있는 모든 UTXO를 사용하고 모든 코인으로 단일 UTXO를 생성하는 트랜잭션을 만들 수 있다.
공동 지불:
두 개 이상의 당사자가 입력을 결합하여 하나의 output을 만들 수 있습니다. 물론 모든 관련 당사자의 서명이 필요하다.