비트코인 P2P 네트워크 구조: 중앙 서버 없이 거래되는 원리
📋 목차
비트코인 P2P 네트워크에는 거래를 처리하는 중앙 서버가 없어요. 새로 켠 노드가 DNS 시드로 이웃을 찾고, 거래는 이웃에게만 전달되며, 같은 규칙으로 검증에 통과한 블록만 남습니다. 이 순서를 따라가면 서버 없는 송금이 왜 성립하는지 보여요.
"은행 서버도 없는데 내 코인이 상대에게 어떻게 도착하지?" 이 질문에서 막히는 분이 많더라고요. 계좌 잔액을 관리하는 회사가 없다면, 누가 "이 거래는 진짜"라고 판정하는 걸까요.
답을 먼저 말하면, 판정하는 주체는 한 곳이 아니라 전 세계에 흩어진 노드 각각이에요. 각 노드가 똑같은 검증 규칙을 자기 컴퓨터에서 돌리고, 통과한 것만 이웃에게 넘깁니다. 규칙을 어긴 데이터는 전달되기 전에 그 자리에서 버려져요.
아래에서는 노드가 켜지는 순간부터 거래가 블록에 담기기까지의 흐름을, 비트코인 코어 공식 개발자 문서에 적힌 동작 기준으로 하나씩 따라가 봅니다. 마지막에는 본인이 직접 명령어로 확인하는 방법까지 정리했어요.
![]() |
| 세계 지도 위에 흩어진 비트코인 노드들이 서로 여러 갈래 선으로 연결된 분산 네트워크 |
중앙 서버가 없다는 말의 실제 구조
일반적인 인터넷 서비스는 서버-클라이언트 구조예요. 앱이 회사 서버에 물어보고, 서버가 답을 주면 그게 곧 사실이 됩니다. 서버가 멈추면 서비스도 멈추죠.
비트코인 P2P 네트워크는 이 관계가 없어요. 모든 참가자가 동등한 자격의 노드(peer)이고, 각자가 데이터를 저장하고 검증하고 중계합니다. 어떤 노드에게도 "너는 이 거래를 받아들여라"라고 명령할 권한이 없어요. 대신 소프트웨어에 새겨진 합의 규칙이 있고, 그 규칙을 통과하지 못한 데이터는 어느 노드에서든 똑같이 거부됩니다.
여기서 자주 헷갈리는 게 하나 있어요. 노드와 채굴자는 다른 역할입니다. 채굴자는 새 블록을 만드는 쪽이고, 노드는 그 블록이 규칙에 맞는지 검사해서 받아들일지 말지 정하는 쪽이에요. 채굴자가 규칙을 어긴 블록을 만들면, 그 블록은 노드들 앞에서 그냥 폐기됩니다.
노드가 들고 있는 건 결국 하나의 거대한 거래 기록 파일이에요. 2026년 8월 15일 확인 기준으로 블록 높이는 96만 2천 번대에 들어섰고, 데이터 크기는 집계 방식에 따라 약 760GB에서 870GB 사이로 갈립니다. 왜 이렇게 차이가 날까요? 순수한 블록 데이터만 세느냐, 검색용 인덱스와 탈락한 블록까지 포함하느냐에 따라 100GB 넘게 벌어지거든요. 그래서 노드를 준비할 때는 넉넉한 저장 공간을 잡는 편이 안전합니다.
처음 켠 노드는 연결 상대를 어떻게 찾을까
전화번호부가 없는 상태에서 낯선 도시에 도착했다고 생각해 보세요. 방금 설치한 노드가 딱 그 처지입니다. 접속할 상대의 IP 주소를 하나도 모르거든요.
비트코인 코어는 이 문제를 세 단계로 풉니다. 우선 예전에 접속했던 피어 목록을 디스크에 저장해두는데, 이 기록이 있으면 최대 11초 동안 거기부터 연결을 시도해요. 실패하거나 기록이 없으면 소프트웨어에 하드코딩된 DNS 시드 도메인에 질의합니다. 이 도메인은 활동 중인 노드들의 IP를 A 레코드로 돌려주는 역할만 해요. DNS 시드가 60초 안에 응답하지 않으면, 릴리스 당시 활동하던 노드 IP 목록이 마지막 안전장치로 쓰입니다.
상대를 찾았으면 인사를 나눠요. version 메시지를 보내 자기 버전과 현재 블록 높이를 알리고, 상대도 version으로 답한 뒤 서로 verack을 주고받으면 연결이 성립합니다. 이후에는 addr 메시지로 "내가 아는 다른 노드들 주소"를 서로 교환하면서, DNS 시드에 의존하지 않고도 연결을 늘려가요. 연결 유지도 단순합니다. 30분 넘게 조용하면 먼저 말을 걸고, 90분 동안 아무 응답이 없으면 끊어진 것으로 처리해요.
📊 실제 데이터
비트코인 코어 공식 문서(reduce-traffic 기준)에 따르면 기본 설정에서 노드는 최대 200개 연결을 허용하고, 이 중 내가 먼저 거는 연결은 11개입니다. 8개는 거래와 블록을 모두 주고받는 연결, 2개는 블록만 주고받는 연결, 나머지 1개는 짧게 붙었다 떨어지는 탐색용이에요. 메인넷 기본 포트는 8333, 테스트넷은 18333입니다. 공유기 포트를 열지 않으면 외부에서 들어오는 연결은 받지 못하고 11개 아웃바운드로만 동작해요.
여기에 알려진 약점도 있어요. DNS 시드 응답에는 서명이 없습니다. 악의적인 시드 운영자나 중간자 공격자가 자기가 통제하는 노드 IP만 돌려주면, 새 노드는 가짜 네트워크에 갇힐 수 있어요. 공식 문서도 시드에만 의존하지 말라고 명시하고 있고, 그래서 연결 경로를 여러 갈래로 유지하는 설계가 중요합니다.
![]() |
| 새로 켠 노드가 DNS 시드에 질의해 IP 목록을 받고 8333 포트로 version과 verack을 주고받는 연결 절차 흐름도 |
거래 한 건이 네트워크로 퍼지는 순서
여기가 오해가 가장 많은 지점이에요. 송금 버튼을 누르면 전 세계 노드에 동시에 방송되는 걸로 생각하기 쉬운데, 실제로는 그렇지 않습니다.
지갑이 서명한 거래는 우선 내가 연결된 소수의 이웃에게만 전달돼요. 그것도 거래 전문을 통째로 던지지 않습니다. 먼저 inv 메시지로 "이런 식별자를 가진 거래가 있다"고 알리고, 상대가 아직 그 거래를 모르면 getdata로 요청하고, 그제야 tx 메시지에 실제 거래 데이터가 실려 갑니다. 이미 아는 거래라면 요청 자체를 하지 않으니 중복 전송이 줄어들어요.
거래를 받은 노드는 곧바로 중계하지 않아요. 서명이 유효한지, 쓰려는 잔액이 이미 쓰인 건 아닌지 검증한 다음 통과한 것만 자기 이웃에게 다시 알립니다. 이 과정이 겹겹이 반복되면서 몇 초 안에 네트워크 대부분으로 번져요. 소문이 퍼지는 방식과 닮아서 가십(gossip) 전파라고 부릅니다.
아직 블록에 담기지 않은 거래는 각 노드의 메모리, 즉 멤풀에 임시로 머물러요. 중요한 건 멤풀이 노드마다 다르다는 점입니다. 공식 문서에도 멤풀은 비영구 메모리이며 노드를 재시작하면 사라진다고 나와 있어요. 어떤 거래 탐색기에서는 내 거래가 보이는데 다른 곳에서는 안 보이는 상황, 수수료를 낮게 넣었을 때 며칠 뒤 거래가 사라진 것처럼 보이는 상황이 여기서 나옵니다.
거래 중계는 생각보다 대역폭을 씁니다. Erlay 논문(2019)은 트랜잭션 릴레이만으로 노드당 월 18GB 수준까지 쓰인다고 계산했어요. 이를 집합 재조정 방식으로 약 40% 줄이자는 제안이 BIP330인데, 2026년 초 기준으로 비트코인 코어 정식 릴리스에는 아직 들어가지 않았고 설계 재검토가 진행 중입니다. 즉 지금 노드를 켠다면 이 절감 효과는 아직 기대할 수 없어요.
블록 전파와 체인 재구성으로 합의가 맞춰지는 원리
채굴자가 새 블록을 찾으면 이제 이 사실을 최대한 빨리 알려야 해요. 늦으면 남이 만든 블록에 밀리니까요.
초기 방식은 inv로 알리고 요청받으면 블록 전체를 보내는 것이었어요. 지금은 두 가지 개선이 얹혀 있습니다. 하나는 BIP130의 sendheaders로, 왕복 절차를 줄이려고 80바이트짜리 블록 헤더를 곧장 보내는 방식이에요. 다른 하나는 BIP152 컴팩트 블록입니다. 어차피 상대 노드 멤풀에도 같은 거래들이 이미 들어 있으니, 거래 전문 대신 짧은 식별자만 보내고 상대가 없는 것만 골라 요청하게 하죠. 1MB 넘는 블록을 매번 통째로 보내는 것과 비교하면 전송량 차이가 큽니다.
받은 노드는 헤더를 먼저 확인하고, 부모 블록을 아는 블록만 본문을 요청해요. 검증에 실패한 데이터를 계속 보내는 상대에게는 벌점이 쌓이고, 기준을 넘으면 기본값 86,400초, 그러니까 24시간 동안 차단됩니다. 거짓 정보로 자원을 낭비시키는 노드를 각자 알아서 끊어내는 구조예요.
그런데 서로 다른 채굴자가 거의 동시에 블록을 찾으면? 한동안 네트워크가 둘로 갈립니다. 어떤 노드는 A를, 어떤 노드는 B를 꼭대기로 보고 있어요. 이 상태는 다음 블록이 나오면 정리됩니다. 새 블록이 A 위에 쌓이면 A 쪽 체인이 더 길어지고, B를 보고 있던 노드는 체인 재구성(reorg)을 거쳐 A 쪽으로 갈아탑니다. 이런 일시적 분기는 대략 한 달에 한 번 정도, 그것도 보통 맨 위 블록 하나에서만 일어난다고 알려져 있어요.
거래소나 상점이 "확인 몇 회"를 요구하는 이유가 여기 있습니다. 방금 들어온 블록은 뒤집힐 가능성이 남아 있지만, 위에 블록이 여러 개 쌓일수록 그걸 되돌리려면 나머지 채굴자 전체보다 많은 연산력이 필요해져요. 중앙 심판 없이 이중지불이 막히는 건 이 누적 비용 때문입니다.
풀 노드·프루닝 노드·SPV 지갑의 차이
"노드를 돌린다"는 말이 다 같은 뜻은 아니에요. 저장하는 양과 검증하는 범위가 다르고, 그에 따라 남을 얼마나 믿어야 하는지도 달라집니다.
| 구분 | 아카이브 풀 노드 | 프루닝 노드 | SPV 경량 지갑 |
|---|---|---|---|
| 저장 데이터 | 전체 블록 | 최근 블록만 | 헤더 위주 |
| 직접 검증 | 전부 | 전부 | 일부 |
| 과거 블록 제공 | 가능 | 제한적 | 불가 |
| 타인 신뢰 | 없음 | 없음 | 필요 |
표에서 가장 눈여겨볼 줄은 마지막 행이에요. 프루닝 노드는 오래된 블록 파일을 지워 저장 공간을 크게 아끼지만, 지우기 전에 이미 전부 검증했기 때문에 신뢰 수준은 풀 노드와 같습니다. 반면 SPV 지갑은 블록 헤더와 자기 거래에 관련된 일부 데이터만 받아요. 그래서 가볍고 휴대폰에서도 돌아가지만, 연결된 상대가 알려주는 정보에 기대야 합니다.
![]() |
| 풀 노드와 프루닝 노드, SPV 경량 지갑의 저장 용량과 검증 범위를 나란히 비교한 표 형태 인포그래픽 |
⚠️ 주의
비트코인 공식 개발자 문서는 SPV 방식의 한계를 분명히 적어두고 있어요. 연결된 풀 노드가 정보를 빼놓는 방식으로 거짓말을 하면, SPV 클라이언트는 실제로 일어난 거래를 없었던 것으로 인식할 수 있습니다. 문서는 이를 서비스 거부의 한 형태로 봐요. 큰 금액을 다루거나 잔액을 스스로 확인해야 하는 상황이라면, 지갑이 어떤 서버에 물어보고 있는지부터 점검하는 편이 안전합니다.
잘못 알려진 내용과 직접 확인하는 방법
노드 수를 찾아보면 사이트마다 숫자가 딴판이라 당황하게 돼요. 2026년 8월 확인 기준으로 coin.dance는 2만 개대 중반, bitref는 1만 3천 개대, newhedge는 8천 개대를 표시하고 있습니다.
어느 한 곳이 틀린 게 아니라 세는 기준이 다릅니다. 외부에서 접속 가능한 노드만 세는지, Tor로만 연결되는 노드를 포함하는지, 같은 운영자의 중복 주소를 하나로 묶는지, 크롤링 주기를 어떻게 잡는지에 따라 결과가 크게 달라져요. 게다가 앞서 봤듯 공유기 포트를 열지 않은 노드는 어떤 집계에도 잡히지 않습니다. 그래서 공개된 수치는 모두 실제 노드 수의 하한선으로 읽는 게 맞아요.
두 번째 오해는 "노드가 많을수록 거래가 빨라진다"는 생각이에요. 처리 속도는 블록 생성 간격(평균 10분)과 블록 용량이 정하는 거라 노드 수와 직접 관계가 없습니다. 노드가 늘어서 좋아지는 건 속도가 아니라 검열 저항성과 데이터 가용성이에요. 세 번째는 다수결 오해입니다. 노드끼리 투표해서 규칙을 바꾸는 절차는 없어요. 각 노드가 자기 소프트웨어의 규칙을 적용할 뿐이고, 마음에 안 드는 변경은 업데이트를 안 하는 것으로 거부됩니다.
💡 꿀팁
노드를 설치했다면 콘솔에서 네 가지만 쳐 봐도 지금까지 설명한 구조가 눈에 들어와요. getconnectioncount로 현재 연결 수를, getpeerinfo로 각 피어의 주소와 연결 방향(inbound 여부)을, getnetworkinfo로 내 노드가 어떤 네트워크에서 수신 대기 중인지를, getblockchaininfo로 동기화 진행률과 프루닝 설정 여부를 확인할 수 있습니다. 연결 수가 11에서 멈춰 있다면 8333 포트가 막혀 있다는 신호로 볼 수 있어요.
소프트웨어 버전도 확인 대상입니다. 비트코인 코어는 2026년 4월 19일 31.0 버전이 공개됐어요. 오래된 버전을 쓰면 새로 추가된 전파 최적화나 보안 수정이 빠진 상태로 네트워크에 붙게 되니, 설치 전에 공식 배포처에서 현재 버전을 먼저 보는 걸 권합니다.
![]() |
| 새로 채굴된 블록이 이웃 노드로 단계적으로 번져 나가며 각 단계에서 검증되는 블록 전파 과정 일러스트 |
자주 묻는 질문
Q. 노드를 운영하면 보상을 받나요?
받지 않습니다. 코인 보상은 블록을 생성한 채굴자에게만 지급되고, 검증과 중계만 하는 노드에는 수익이 없어요. 노드 운영으로 얻는 건 금전 보상이 아니라 남에게 묻지 않고 자기 잔액과 거래를 확인할 수 있는 상태입니다.
Q. 공유기 포트를 못 열면 노드가 쓸모없나요?
본인 검증 용도로는 문제없이 작동합니다. 다만 외부에서 들어오는 연결을 받지 못해 아웃바운드 11개 연결로만 동작하고, 다른 노드에게 블록을 나눠주는 역할은 거의 하지 못해요. 네트워크에 기여하는 정도가 줄어드는 것이지 내 지갑 검증이 약해지는 건 아닙니다.
Q. 노드를 계속 켜두면 데이터 사용량이 부담되지 않나요?
기본 설정에서는 과거 블록을 남에게 제공하느라 업로드가 많이 나갈 수 있어요. 공식 문서는 하루 업로드 상한을 정하는 maxuploadtarget, 최대 연결 수를 줄이는 maxconnections, 거래 중계를 끄는 blocksonly 같은 선택지를 안내합니다. 다만 blocksonly를 켜면 수수료 추정이 동작하지 않고 컴팩트 블록도 쓸 수 없어 블록 전파가 느려집니다.
Q. 보낸 거래가 탐색기에서 안 보이면 실패한 건가요?
곧바로 실패로 볼 수는 없어요. 멤풀은 노드마다 다르게 유지되기 때문에, 그 탐색기가 보는 노드에 아직 도착하지 않았거나 수수료가 낮아 해당 노드 멤풀에서 밀려났을 수 있습니다. 거래 ID로 다른 탐색기를 함께 확인해 보고, 오래 지연되면 지갑의 수수료 조정 기능이 있는지 살펴보는 방법이 있어요.
Q. 노드 수가 줄어들면 네트워크가 위험해지나요?
숫자 자체보다 분포가 더 중요합니다. 노드가 특정 국가나 소수 클라우드 사업자에 몰릴수록 한 번의 차단이나 장애가 여러 노드에 동시에 영향을 줄 수 있어요. 반대로 수가 적당해도 지역과 접속 경로가 흩어져 있으면 회복력이 유지됩니다.
본 포스팅은 공개 자료와 공식 문서를 바탕으로 작성되었으며, 전문적인 의료·법률·재무 조언을 대체하지 않습니다. 정확한 정보는 해당 분야 전문가 또는 공식 기관에 확인하시기 바랍니다. 본 글의 내용은 기술 구조에 대한 정보 제공 목적이며 투자 권유가 아닙니다. 개인 상황에 따라 결과가 다를 수 있으므로 반드시 전문가와 상담 후 결정하시기 바랍니다. 소프트웨어 버전, 네트워크 통계, 기본 설정값은 2026년 8월 15일 확인 기준이며 이후 변경될 수 있으니 실제 설치 전 공식 페이지에서 다시 확인하는 편이 안전합니다.
👉 함께 읽으면 좋은 글: 비트코인 블록체인 원리: 거래가 기록되고 검증되는 방식
👉 함께 읽으면 좋은 글: 비트코인 메인넷과 사이드체인 차이: 확장 방식 비교
👉 함께 읽으면 좋은 글: 비트코인 거래 속도와 확장성 문제는 왜 생길까
👉 함께 읽으면 좋은 글: 비트코인 세그윗 SegWit은 무엇이고 왜 필요한가
비트코인 P2P 네트워크에서 중앙 서버의 자리를 대신하는 건 특별한 기술 하나가 아니라, 노드마다 똑같이 적용되는 검증 규칙과 이웃에게만 넘기는 단순한 중계 규칙입니다.
개념만 잡으면 되는 분이라면 거래 전파 순서와 블록 재구성 부분까지만 이해해도 충분해요. 지갑을 안전하게 쓰고 싶은 분은 지금 쓰는 지갑이 SPV인지 자체 노드 연결인지부터 확인해 보시고, 직접 노드를 돌려볼 생각이라면 저장 공간과 8333 포트 개방 여부를 먼저 점검한 뒤 공식 배포처의 최신 버전으로 시작하는 순서가 무난합니다.
읽다가 막힌 부분이나 직접 노드를 돌리며 겪은 상황이 있다면 댓글로 남겨 주세요. 비슷한 질문을 가진 분에게 도움이 되도록 이 글에 반영하겠습니다.




댓글
댓글 쓰기