비트코인 네트워크(비트코인 P2P 프로토콜)

블록체인에 대해서 공부하면서 항상 블록체인 네트워크가 어떻게 구성되는지 궁금했다.

해답은 안드레아스 안토노폴러스의 Mastering Bitcoin(비트코인, 블록체인과 금융의 혁신) 이라는 책에서 찾을 수 있었다.(블록체인 책중 가장 구체적이고 잘 정리된 책)

기본적으로 비트코인 네트워크를 구성하는 클라이언트는 세가지로 나뉜다.

  • Full Client : 비트코인 거래정보(Full BlockChain)을 가진 클라이언트
  • LightWeight Client: 사용자의 지갑과 라우트 노드만 가진 클라이언트(거래정보는 가지지 않음)
  • Web Client : 웹 클라이언트를 통해 접속하며 제3자의 서버에 지갑을 저장

하지만, 실제 비트코인 네트워크를 구성하는 노드는 ‘라우팅’, ‘블록체인 DB’ , ‘채굴’ , ‘지갑’ 같은 기능에 따라 다양하게 나눠지는데 크게

  • Reference Client : 사토시 클라이언트라고도 불리는 클라이언트로 모든 서비스(지갑,채굴, BlockChain DB , 라우터 )를 가진 노드
  • Full Block Chain Node : Full Client의 노드로 전체 거래내역을 가진 Full Node (지갑은 없음)
  • Mining Node : 채굴 기능을 가진 노드
  • Lightweight Wallet :  거래내역을 저장하지 않고 지갑 서비스와 라우팅 서비스를 가진 노드

로 나눠볼수 있다.(이외에도 기능에 따라 다양한 노드가 존재)

이렇게 기능에 따라 구성된 노드들은 비트코인 네트워크에 참여하며 서로 연결되어 있는데 비트코인 네트워크에 연결되기 위해서는 최소 하나 이상의 이웃 노드와 연결되어야 한다. 이때 이웃 노드와 연결하기 위해서는 TCP 통신을 하는데 8333 port(일반적으로 비트코인 포트로 알려짐)를 사용해서 서로 연결된다. 최초 연결시에는 오랜기간 안정적으로 동작되고 있는 seed node 를 기본으로 연결하거나 IP를 사용해서 연결될 노드를 선택할 수 있다.

그리고, 최초 클라이언트 내에는 기본적으로 최초블록만 가지고 있는데 연결된 이후에는 Full Client 일 경우 이웃 노드와 블록의 Height를 비교해서 최신 블록을 받아오는 일련의 프로세스를 따르게 된다.

“거래 풀(Transaction Pool) / UTXO( Unspent Transaction Output ) 데이터베이스”

이렇게 비트코인 네트워크에서는 각 노드들이 연결되어 거래가 성사될 경우(Wallet A -> Wallet B 로 이동) 해당 거래 내역은 거래 풀로 들어가게 된다. 이 거래 풀에 들어간 거래는 미승인 거래로 아직 블록체인에 포함되지 않은 거래들이다. 마이닝 노드는 거래 풀에서 미승인 거래들을 모아 블록을 생성하게 되고 보통 생성된 블록 이후 6개의 블록이 생성되면(6개 블록이 생성된 이후에는 변조가 불가능한 것으로 판단) 거래 취소가 불가능한 상태가 된다.


%d 블로거가 이것을 좋아합니다: