비트코인 네트워크
비트코인 네트워크
- 비트코인 P2P 프로토콜을 실행하는 노드의 집합
- 확장 비트코인 네트워크 : 비트코인 P2P 프로토콜, 풀 채굴 프로토콜, 스트라텀 프로토콜 및 비트코인 시스템의 구성요소들을 연결하는 연관 프로토콜 등이 포함되어 있는 네트워크 전반을 가리킨다.
노드 지원 가능 기능
- 라우팅 (Routing) : 모든 노드가 보유하는 기능 (블록 검증 및 이웃 노드와 연결 유지 기능 등)
- 블록체인 데이터베이스 (History)
- 채굴 (Mining)
- 지갑 (Wallet)
네트워크 연결
- 한 노드와 연결이 되면 연결된 노드가 이웃 노드들에 IP를 전송함으로써 네트워크에 전파된다.
블록 싱크
- 싱크 시작 전, genesis block만을 갖고 있다. (클라이언트 소프트웨어에 변경 불가능하게 내장되어있다)
- 비트코인 네트워크 상의 다른 노드들을 따라잡을 때까지 반복
SPV 노드
- 블록 헤더만 다운로드해서 사이즈를 줄일 수 있다.
- 다른 노드에 의존해 거래를 검증해야 한다. (트랜잭션 정보를 갖고 있지 않기 때문에, UTXO 소비 여부를 검증할 수 없다.)
블룸 필더 (Bloom filter)
- SPV 노드가 블룸 필터를 사용해서 이웃 노드들에게 특정 패턴과 일치하는 거래를 제공해줄 것을 요청
- 정확도를 변화시킴으로써 정보의 양을 조절한다. (정확도를 낮추면 많은 정보를 받고, 높이면 적은 정보를 받음으로써 SPV 노드의 프라이버시 노출 문제를 해결하려 함)
Transaction Pool (memory pool)
- 트랜잭션 풀을 이용해 네트워크에는 존재하지만 블록체 포함되지 않은 거래들을 추적한다.
- 로컬 메모리 에 쌓여있다.
- 미승인 거래를 갖고 있다.
UTXO pool
- 소비되지 않은 거래 출력값의 항목을 포함하고 있다.
- 로컬 메모리 or 영구 조정소에 색인 데이터베이스 테이블 형태로 저장
- 승인된 출력값을 갖고 있다.
출처
Mastering Bitcoin