본문 바로가기
블록체인/비트코인

비트코인

by 후닝훈 2021. 6. 7.
반응형

퍼블릭 블록체인 : 비트코인

- 채굴 시스템에 의해 사용자들이 자생적으로 관리(P2P)

- 2100만 BTC로 제한

- 10분마다 거래내역 갱신, 해킹어려움.

 : Miner들이 보상받는 양 : 반감기로 줄고 있는 기본적인 마이닝 비용 + 거래 하나당의 수수료

 : 해킹이 어려움 : 다수결로 처리. 51% 이상이어야 조작가능. 투명성. 속도는 상대적으로 느리다.

  (예 : 10000개의 노드일 경우 5001개 / 5001개 이상의 Hash power가 높을경우)

 * Server-based 방식은 속도와 사후관리가 용이하다. 하지만 서버의 데이터가 조작된다면 전혀 알 수 없다.

 ** 만약 대대적인 해킹으로 51%를 공격한다고 하면, 그 즉시 비트코인의 가치를 인정받지 못할정도로 코인의 가격이 하락이 예상되기에, 보통 개인의 지갑을 해킹시도한다고 한다.

 

비트코인 노드

국가별 비트코인 풀노드

노드 : 블록체인 네트워크에 참여한 사람들

Mining을 하는 노드 : 풀노드

 

비트코인 마이닝과 합의

 

PoW 처리 절차

0. 풀노드 4명이 존재하는 상황이다.

1. 새로운 블록을 찾기위해 노드들이 Mining 중이다.

   wallet이 트랜잭션을 발행하고 참가자 전원에게 브로드캐스트를 하였다.

2. Node0 이 블록을 찾았고 존재했던 블록체인에 이어붙인다.

   받은 노드들은 해시를 계산한것이다.

3. 새로운 블록(3번째)을 찾기위해 다시 Mining을 시작한다.

    wallet은 다른 트랜잭션을 발행하고 참가자 전원에게 브로트캐스트.

4. Node1과 Node2가 동시에 블록을 찾아냈으며, 이 과정을 Fork 혹은 분할 이라고 한다.

5, 6. 4번째 블록을 찾는 과정이며 Node3은 4번째 블록을 찾아 Node2가 만든 3번째 블록에 이어붙였다.

   * 위 경우에는 Node2의 블록체인 뒤에 블록을 붙였기에 Node2의 체인이 정식 체인으로 채택된다.

   * 가장 많은 해시 파워가 트입되는 체인에 다음 블록이 연결된다.

   * 가까운 블록에 우선적으로 연결된다. (마이너가 많은 지역에 있는곳에서 마이닝 하는것이 유리하다.)

   * 추후에 네트워크 상태에 따라, 위의 블록체인이 추가된것이 더 길어진다면, 위의 것이 올바른것으로 재변경 된다.

   * 메인체인으로 인정받지 못한 체인은 고아, Stale, uncle 블록이라고 불리며, 보상도 받지못하고 그에 들어가있는 tx도 인정받지 못한다.

   * Double spending 문제를 방지할 수있다.

   * Confirmation : 6개의 블록이 이어진다면 메인체인으로 확정된다. (Longest chain)

  
 * tx이 완벽하게 처리되기 위해서든 10분 * 6개의 블록인 1시간이 소요되지만, 송금의 경우 거래소 자체적으로 처리를 해준다고 한다. 따라서 약 10분정도 소요된다.

  * 블록체인의 Wallet은 Account, Address 라는 용어로도 같이 쓰인다.

 

비트코인 지갑과 거래

자산관리

- UTXO. 잔액관리

 : UTXO - Unspend Transaction Output. 비트코인에서만 사용.

 : 소비된 거래와 소비되지 않은 거래를 구분하여 잔액을 계산.

 : https://08231117.tistory.com/11 를 참조한다.

 

거래와 기록 장부

- 거래는 지갑 software/app 에서 발생시킨다.

  * 소유주(송신자)가 개인키(열쇠)를 사용하여 거래를 생성하고, 그의 공개키(열쇠)와 수신자 주소를 함께 네트워크에 방송한다.

- 거래 처리자 (채굴자. 풀노드)

  * 정상적인 돈인지 검증한다 (위조 혹은 변조)

  * 동봉된 공개키로 소유주를 입증한다

  * 이 거래 내용이 공개 장부에 기록되면 송신을 종료한다.

  * 돈을 수신자에게 직접 전달하는 것이 아니다.

  * 마이너는 검증만 할뿐, A->B에게 TX를 통해 주는것이다.

- 수신자 수령

  * 수신자는 공개장부에 접근하여 입금과 잔고를 확인한다.

위와같은 거래의 과정은 모든 블록체인마다 방법이 조금씩 다르다.

 

내 지갑의 코인 잔고

- UTXO 시스템을 사용한다.

- 실제 코인이 내 지갑에 존재하는 것이 아닌, 잔고만 보여준다.

- 따라서 기록상으로만 코인이 존재한다는 뜻이다.

- 코인의 사용에도 있어 과거의 기록에서 새로운 기록을 생성한다.

- 위와 같은 경우에는 0.2 비트코인이 0.15 비트코인은 송금, 0.05비트코인은 다시 돌아와 UTXO가 된다.

- 만약 존재하는 기록보다 큰 돈을 보낼 경우에는 검증 과정에서 탈락된다.

- 지갑의 상태가 3.21BTC 일때 3.1을 보낸다면, TX가 두가지로 보내지게 된다.

- 3에 해당하는 TX와 0.2의 0.1, 그리고 다시 자신에게 돌아오는 UTXO (0.1BTC)가 생성된다.

- 많은 UTXO가 생긴다면 MERGE 작업이 일어난다.

 

거래에 대한 정리

- 내 계정(내 주소)에서 내가 가진 코인 기록을 지움

- 송금액 만큼의 수신인의 새 코인 기록을 만듬

- 잔액만큼의 내 코인 기록도 새로 만듬

- 수신인의 비트코인 주소에 들어간 금액 기록

- 비트코인 주소에서 빠져나간 잔액기록 

- 출력으로는 출력인덱스, 코인량(금액), 수신자주소(공개키해쉬)를 기록한다.

- 이렇게 수신된 코인을 UTXO 라 부른다.(Unspent Transaction Output)

- 따라서 지금 사용 가능한 모든 코인은 다 UTXO 이다.

 

비트코인의 블록헤더와 잔액관리

 

- 마이너는 한 블럭당 TX수가 한정되어 있다.

- 따라서 TX Fee가 높은 순서대로 정렬하여 처리한다.

- 그 후 검증과정을 거치고, 블럭을 찾아내면, 블럭의 내용들을 Broadcasting 한다.

 

비트코인의 한계점

- 비트코인 스크립트 언어의 단점.

- 작업증명방식의 합의 메커니즘 (PoW)

 : 지나치게 큰 에너지 소모

 : 채굴자들의 중앙화

 : 만명의 Miner들이 있어도, 블록을 생성하는 것은 1명이기에, 그에 해당하는 보상을 받는 사람은 한명이다.

 : 새로운 블록에 Transaction을 모두 다같이 하고, 이어 붙일 권한을 부여받는 것이 블록을 생성한다는 뜻이다.

 : 나머지 9999명은 맞는지 증명만 할뿐, 매우 비효율적이다.

- 늦은 거래처리속도

- 의사결정구조

 : hard fork(bitcoin cash), segwit

반응형

댓글