119 / 736PROP

Block Propagation

새 블록이 네트워크에 퍼지는 과정

채굴자가 블록을 찾으면 다른 참여자들도 그 사실을 알아야 합니다. 소식이 퍼지는 경로, 이미 아는 데이터를 다시 보내지 않는 방법, 빠른 전달만으로 검증을 대신할 수 없는 이유를 살펴봅니다.

Block Propagation은 새로운 블록이 Bitcoin 네트워크의 컴퓨터 사이로 퍼지는 과정입니다. 전달은 데이터를 가져올 뿐이며, 수신 노드는 블록이 유효한지, 자신이 채택한 기록에 포함할 수 있는지 직접 확인해야 합니다.

안나가 채굴을 하다가 거래가 담긴 새 블록을 찾았다고 가정해 봅시다. 블록은 공동 기록에 추가하는 거래 묶음입니다. Bitcoin에는 블록을 모두에게 한꺼번에 보내는 중앙 기관이 없습니다. 안나의 노드는 연결된 컴퓨터인 이웃 노드에 소식을 알립니다. 그 소식이 다시 전달되므로 참여자마다 도착하는 시간이 다릅니다. 이 여정이 Block Propagation입니다. 전달 속도는 다른 채굴자들이 이전 기록을 바탕으로 작업을 계속하는 시간에도 영향을 줍니다. [1] [6]

페터는 집에서 Full Node를 운영합니다. Bitcoin 블록과 거래가 규칙에 맞는지 확인하는 소프트웨어입니다. 새 블록이 있다는 알림만으로는 부족하며, 검증하려면 전체 내용이 필요합니다. 모두 내려받거나, 받은 메시지와 이미 가진 거래로 블록을 재구성할 수 있습니다. 책의 페이지 목록을 받아 자기 서재에서 해당 페이지를 찾는 것과 비슷합니다. 전송량은 줄어도 완성된 책은 같아야 합니다. [1] [7]

블록에는 Block Header라는 짧은 헤더가 있습니다. 이전 블록을 가리키는 정보 등이 들어 있으며, 채굴에 필요한 계산 작업의 증거인 Proof of Work를 확인할 수 있습니다. 채굴자는 계산을 반복해 이 증거를 찾으며, 다른 참여자는 찾아낸 결과를 빠르게 확인할 수 있습니다. 유용한 첫 검사이지만 모든 결제가 유효하다는 증명은 아닙니다. 헤더만으로는 서명이 올바른지, 실제로 사용 가능하고 아직 쓰지 않은 자금을 거래가 사용하는지 알 수 없습니다. 디지털 서명은 비밀 숫자 값인 개인 키로 결제 승인을 증명하며, 키 자체는 공개하지 않습니다. UTXO는 아직 사용하지 않은 거래 출력으로, 금액과 그 금액을 쓰기 위해 충족해야 할 조건을 담은 기록입니다. [6] [8]

페터는 블록이 채굴되기 전에 많은 거래를 받았습니다. 이는 아직 확정되지 않은 거래의 로컬 모음인 Mempool에 보관됩니다. BIP 152의 Compact Blocks는 이를 활용합니다. 모든 거래를 다시 보내는 대신 주로 짧은 식별자와 일부 완전한 거래를 보냅니다. 페터는 익숙한 조각을 올바른 순서로 맞춥니다. 작아지는 것은 네트워크 메시지이지 검증할 블록이 아닙니다. 유효성 규칙도 바뀌지 않습니다. [2] [7]

전 세계가 하나의 Mempool을 공유하지는 않습니다. 노드마다 아는 거래가 조금씩 다를 수 있어 페터에게 없는 거래도 생깁니다. 페터는 빠진 데이터를 요청하거나 전체 블록을 내려받는 방식으로 돌아갑니다. 요청과 응답이 왕복하는 시간이 추가되지만, 내용을 추측하거나 검증을 건너뛸 이유는 아닙니다. 실제 절약 효과는 수신자가 이미 얼마나 많은 거래를 알고 있는지에도 달려 있습니다. [2] [7]

BIP 152의 더 빠른 모드에서는 모든 거래 검사를 마치기 전에 전달할 수 있습니다. 그렇다고 아무것이나 무작정 보내지는 않습니다. 발신자는 검증된 체인과의 연결, Proof of Work, 헤더가 전송하는 거래와 암호학적으로 일치하는지 등을 먼저 확인해야 합니다. 이후 전송과 나머지 검사를 동시에 진행할 수 있습니다. 그래도 Full Node가 블록을 자신의 활성 기록에 채택하려면 완전한 검증을 끝내야 합니다. [2] [4] [7]

안나의 블록이 모두에게 도착하기 전에 다른 채굴자가 같은 이전 블록을 잇는 새 블록을 찾을 수 있습니다. 잠시 네트워크 일부는 한 유효한 가지를 보고 다른 일부는 다른 가지를 봅니다. 유효한 가지들 사이의 선택은 이후 누적된 작업량으로 결정하며, 컴퓨터들의 투표로 결정하지 않습니다. 채택된 체인에서 제외된 유효한 블록을 Stale Block이라고 합니다. 더 빠른 전파는 이런 경쟁이 생길 시간대를 줄이지만 완전히 없애지는 못합니다. [6] [8]

안나의 블록이 느리게 퍼지면 다른 채굴자들이 경쟁 블록 위에서 작업을 이어 갈 가능성이 커집니다. 안나의 블록이 채택된 체인 밖에 남으면 그 기록에서는 해당 보상을 얻지 못합니다. 좋은 연결은 단순한 편의 이상의 의미가 있습니다. 그 이점은 연결이 좋은 운영자에게 채굴이 집중되도록 유도할 수 있습니다. 다만 느린 회선 하나가 중앙화 수준의 측정치이거나 공격의 증거는 아닙니다. [7] [8]

FIBRE는 빠른 블록 전달에 특화된 시스템의 한 예입니다. 전송 메시지의 작은 조각인 데이터 패킷을 잃었을 때 생기는 지연 등을 줄이려 합니다. 이런 경로가 블록을 더 일찍 전달할 수는 있어도, 운영자가 페터를 대신해 유효성을 판단할 권한을 얻지는 않습니다. 페터의 Full Node는 데이터가 어떤 경로로 왔든 같은 규칙을 검사해야 합니다. [3] [9]

네트워크는 데이터 사용량, 개인정보 보호, 연결의 장애 대응 능력도 고려해야 합니다. 빠르더라도 한 경로에만 의존하면 취약점이 됩니다. 개선안들의 역할도 구분해야 합니다. Erlay의 구성 요소인 BIP 330은 이웃 노드들이 거래 알림 집합의 차이를 찾도록 돕습니다. BIP 152의 블록 전달을 대체하지는 않습니다. 공통 목표는 각 노드의 독립적인 검사를 유지하면서 통신을 효율화하는 것입니다. [1] [5]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Compact Blocks, Selfish Mining, Eclipse Attack, Initial Block Download, Bitcoin, Full Node. 다음 항목에서도 이 글을 참조합니다 Sybil Attack, Eclipse Attack, Selfish Mining, Compact Blocks.

DOC · 001Bitcoin Developer Guide — P2P Network문서 DOC · 002BIP 152 — Compact Block Relay명세 DOC · 003Bitcoin FIBRE문서 DOC · 004Bitcoin Core v29.0 — net processing문서 DOC · 005BIP 330 — Erlay명세 DOC · 006Satoshi Nakamoto — Bitcoin whitepaper1차 출처 DOC · 007Bitcoin Core — Compact Blocks FAQ문서 DOC · 008Bitcoin Developer Guide — Block Chain문서 DOC · 009FIBRE — project overview1차 출처
개정일: 1차 출처 우선 · 투자 조언이 아닙니다