브로드캐스팅
개인키로 거래에 서명하는 도구인 서명 장치에서 거래를 준비해 보내면 특정 본사나 접수 창구로 전달되는 것처럼 보일 수 있습니다. 하지만 비트코인에는 모든 거래가 모이는 단일 접수처가 없습니다. 브로드캐스팅은 내가 만든 거래를 연결된 이웃 컴퓨터에 알리고, 그 거래가 네트워크 전체로 퍼져 나가게 하는 과정입니다.
접수 창구 없이 퍼지는 거래
은행 앱은 보통 은행 서버라는 정해진 접수처로 거래를 보냅니다. 그 서버를 막으면 이용자는 거래를 전달하기 어렵습니다. 비트코인에서는 노드가 여러 이웃과 연결되어 있고, 거래를 어느 한 곳에만 제출하지 않아도 됩니다. 한 이웃에게 건네면 그 이웃이 확인한 뒤 다시 자기 이웃에게 전달합니다.
동네 소문이 방송국 없이 퍼지는 모습을 떠올릴 수 있습니다. 한 사람이 옆 사람에게 말하고, 들은 사람이 다시 다른 사람에게 옮기면 몇 단계를 거쳐 많은 사람이 같은 소식을 알게 됩니다. 비트코인 거래는 소문과 달리 받은 쪽이 먼저 내용을 확인한다는 점이 다릅니다.
노드는 거래의 서명이 맞는지, 거래가 규칙에 어긋나지 않는지 살펴봅니다. 확인을 통과한 거래만 다음 이웃에게 넘깁니다. 말이 되지 않는 거래는 첫 이웃에서 거부될 수 있으므로 더 멀리 퍼지지 않습니다.
이웃 노드를 거치는 과정
서명 장치가 직접 네트워크 피어 연결을 유지하지 않을 수도 있습니다. 서명한 거래는 함께 쓰는 앱이나 연결된 노드가 네트워크에 제출하고 전파합니다. 노드는 여러 이웃과 연결을 유지하며, 거래를 전달받아 검증한 뒤 자기 이웃들에게 다시 전달합니다. 연결 수의 기본값은 구현, 버전, 연결 유형과 설정에 따라 달라지므로 하나의 숫자로 일반화하기 어렵습니다.
한 단계 건널 때마다 그 소식을 아는 컴퓨터의 수가 크게 늘어날 수 있습니다. 거래는 이웃 노드의 검증과 전달을 거쳐 퍼지며, 실제 전파 시간은 네트워크 연결과 노드 상태에 따라 달라질 수 있습니다. (Bitcoin Developer Guide의 거래 전파 설명)
노드는 이미 받은 거래를 계속 되풀이해 전달하지 않습니다. 최근에 본 거래를 기억해 같은 소식이 네트워크 안에서 끝없이 맴도는 일을 줄입니다. 먼저 거래가 있다는 알림만 보내고, 필요한 이웃에게 본문을 전달하는 방식도 사용됩니다.
전파와 블록 기록은 다르다
거래를 받은 노드는 검증한 뒤 해당 거래를 멤풀이라는 대기 공간에 보관할 수 있습니다. 이때 거래는 네트워크에 퍼졌지만 아직 블록에 기록된 것은 아닙니다. 채굴자가 다음 블록을 만들 때 멤풀에서 거래를 골라 담고, 블록에 포함된 뒤에야 확인이 시작됩니다.
따라서 서명 장치 앱에 전송 완료가 표시되었다고 해서 네트워크 전체의 전파가 끝났거나 거래가 전체장부에 실렸다는 뜻은 아닙니다. 그 표시는 앱 구현에 따라 연결된 서버나 노드에 제출이 성공했다는 의미일 수 있습니다. 다른 노드가 실제로 받았는지, 블록에 포함되었는지는 별도로 확인해야 합니다.
이미 여러 노드의 대기 공간에 들어간 거래를 없던 일로 만들기는 어렵습니다. 수수료를 높여 같은 입력을 사용하는 대체 거래를 시도할 수 있지만, 대체가 허용되는 조건이 맞아야 하며 원래 거래의 취소를 보장하지도 않습니다. 자식 거래의 수수료를 이용해 부모 거래의 확인을 촉진하는 CPFP는 원래 거래를 취소하거나 대체하는 방법이 아니라 확인을 돕는 방법입니다. 한 번 내보낸 거래는 손으로 쉽게 거둬들이기 어렵다는 점이 핵심입니다.
전파된 거래가 기록으로 이어지는 여섯 단계
백서 5장의 네트워크 설명은 거래 전파에서 다음 블록 생성까지를 여섯 단계로 연결합니다. 당시 백서는 검증과 채굴을 모두 수행하는 노드를 중심으로 썼습니다. 오늘날의 역할을 구분해 읽으면 다음과 같습니다.
- 새 거래가 이웃 노드를 거쳐 전파됩니다.
- 채굴자는 거래들을 모아 블록 후보를 구성합니다.
- 후보에 맞는 작업증명 결과를 찾습니다.
- 조건을 만족하는 결과를 찾으면 블록을 전파합니다.
- 다른 노드들은 작업증명뿐 아니라 거래의 서명, 이중 지불 여부 등 유효성 규칙을 확인합니다.
- 채굴자는 받아들인 블록을 참조하는 다음 블록을 만들며 해당 기록 위에 작업을 이어갑니다.
모든 풀노드가 채굴하는 것은 아닙니다. 검증만 수행하는 노드도 잘못된 블록을 거부합니다. 작업증명 조건을 빠르게 확인할 수 있다는 성질과 블록 안의 모든 거래를 검증하는 데 드는 시간도 구분해야 합니다. 비트코인 백서 5장
동시에 도착하지 않아도 이어지는 기록
서로 다른 채굴자가 거의 동시에 블록을 발견하면 노드마다 먼저 본 블록이 다를 수 있습니다. 같은 규칙을 따르는 노드는 경쟁하는 유효한 체인 가운데 누적 작업량이 가장 큰 체인을 선택합니다. 단순히 블록 수를 세거나, 작업량이 많다는 이유로 규칙을 어긴 블록까지 받아들이는 것은 아닙니다. Bitcoin Developer Guide의 분기 설명
거래가 모든 노드에 빠짐없이 동시에 도착해야만 블록에 포함되는 것도 아닙니다. 충분히 전파되어 채굴자의 후보에 들어갈 수 있으면 됩니다. 중간 블록을 놓친 노드는 후속 블록의 연결 정보를 보고 빠진 블록을 요청할 수 있습니다. 뒤늦게 받은 기록도 직접 검증해야 하며, 단순히 최신이라는 이유로 믿지 않습니다.
영상은 이 과정을 거래 전파, 채굴, 검증, 체인 선택이 반복되는 순환으로 설명합니다. 송금 앱의 표시만으로 이 과정이 끝났다고 판단할 수는 없습니다. 거래가 담긴 블록 뒤에 후속 블록이 쌓이는 확인 횟수는 재조직 위험을 평가하는 기준이 되지만, 어떤 횟수도 모든 조건에서 되돌림 가능성을 없애 주지는 않습니다.
개인정보와 검열 저항성
내가 처음 거래를 건넨 이웃은 그 거래가 나에게서 시작되었다고 짐작할 수 있습니다. 거래 내용이 네트워크에 퍼지는 방식이 개인정보 측면에서 약점이 될 수 있는 이유입니다.
풀노드는 자신의 거래와 다른 사람의 거래를 함께 전달하므로, 거래를 전달한 노드가 곧 최초 발신자라고 단정할 수는 없습니다. 다만 자신의 노드를 써도 연결 상대에게 IP 주소가 드러날 수 있습니다. Bitcoin.org의 개인정보 보호 설명은 거래 중계와 IP 주소 노출의 관계를 설명합니다.
거래가 퍼지는 길은 인터넷 하나뿐이지 않습니다. 위성 방송이나 아마추어 무선을 이용해 거래를 보내는 실험도 있습니다. 통신 경로가 여럿이면 한 경로를 막더라도 다른 경로가 남을 수 있으므로, 이런 구조는 검열을 견디는 방법의 하나로 설명됩니다.
브로드캐스팅은 접수 창구가 없는 네트워크에서 거래를 이웃에게 전달하고, 각 노드가 검증한 뒤 다시 퍼뜨리는 과정입니다. 거래가 퍼지는 일과 블록에 기록되는 일은 다르며, 여러 경로와 분산된 확인 절차가 네트워크의 개방성과 검열 저항성에 영향을 줍니다.
관련 개념은 멤풀, 노드, 브로드캐스팅 이후 블록에 포함되는 과정에서 이어서 볼 수 있습니다.