BIP 14분야 · 피어 서비스유형 · 명세상태 · 배포됨

프로토콜 버전 및 사용자 에이전트

Protocol Version and User Agent

쉬운 설명

프로토콜 버전과 사용자 에이전트(User Agent)를 분리해서, 네트워크 노드가 서로 어떤 프로토콜을 쓰는지와 어떤 클라이언트를 쓰는지를 명확히 구분해 표현하는 규칙을 정해요.

BIP0014는 비트코인 프로토콜 버전과 사용자 에이전트(User Agent)를 분리한 표준으로, 네트워크 노드 간 통신을 더 명확하게 만들기 위해 제안됐습니다.

목적

기존에는 Satoshi 클라이언트 버전과 프로토콜 버전이 동일하게 움직여, 코어 구현의 릴리스 일정에 다른 구현체들이 얽매이는 문제가 있었습니다. BIP14는 프로토콜 버전(네트워크 호환성 판단용)과 User Agent(클라이언트 식별용)를 분리해, 서로 독립적으로 진화할 수 있게 합니다.

프로토콜 버전 vs User Agent

프로토콜 버전은 version 메시지와 getblocks, 블록 헤더 등에서 사용되어, 어떤 피어와 어떤 메시지를 주고받을 수 있는지 판단하는 데 쓰입니다. User Agent는 /Satoshi:0.6.0/bitcoin-qt:0.4/ 같은 문자열로, 어떤 구현체·버전인지 사람과 툴이 식별하는 용도이며, 합의 규칙이나 프로토콜 동작에는 영향을 주지 않습니다.

주요 변경 사항

version/getblocks 메시지에서 version 필드는 오직 "프로토콜 버전" 전용으로 사용됩니다. 이전에 다른 의미로 쓰이던 sub_version_num 필드는 /Name:Major.Minor.Revision/Name:Version/ 형식의 User Agent 문자열을 담도록 재정의되었고, 괄호 () 안에 추가 주석을 달 수 있습니다.

배포 결과와 실제 영향

BIP14는 2011년 11월 제안되어 Final 상태로 채택·배포되었고, 프로토콜 버전 0.6부터 클라이언트 버전과 독립적으로 관리되기 시작했습니다. 오늘날 노드 운영자는 getpeerinfo RPC 등을 통해 /Satoshi:27.0.0/ 형태의 User Agent를 확인하며, 이를 통해 Bitcoin Core, libbitcoin 등 다양한 구현체를 구분하고 네트워크 상태를 모니터링할 수 있습니다.

공식 BIP 문서open_in_new