본문으로 건너뛰기
buybitcoinsmart

용어집 / 노드와 소프트웨어

Addrv2

Addrv2란 무엇입니까?
Addrv2는 비트코인 노드가 구형 addr 메시지로는 표현할 수 없는 피어 주소를 전파할 때 사용하는 피어 간 메시지이며, 각 주소에는 Tor v3, I2P 또는 Cjdns용 1바이트 네트워크 ID가 붙습니다.

BIP-155에 명시되어 있습니다.

구형 addr 메시지는 고정된 16바이트 주소 필드를 사용하므로 32바이트 Tor v3 onion 주소를 담을 수 없습니다. BIP-155는 이 필드를 1바이트 네트워크 ID와 최대 512바이트의 주소로 대체하며, 메시지당 항목 수는 1,000개로 제한됩니다. 보유 자산이 집의 IP 주소로 드러나지 않도록 Tor를 통해 노드를 운영한다면, 다른 노드가 해당 노드의 존재를 알게 되는 방식이 바로 addrv2입니다.

작동 방식

Addrv2는 자신이 이어받는 메시지의 형식을 유지하면서 한 개의 필드를 다시 작성합니다.

각 항목은 다섯 가지를 담습니다. 해당 노드가 마지막으로 연결된 시각을 나타내는 Unix 타임스탬프, 항상 8바이트를 차지하지 않도록 CompactSize 인코딩으로 옮겨진 서비스 비트 필드, 1바이트 네트워크 ID, 주소 자체, 그리고 네트워크에 포트가 없을 때 0이어야 하는 16비트 포트입니다. BIP-155는 일곱 개의 ID를 예약합니다. 4바이트의 0x01 IPv4, 16바이트의 0x02 IPv6, 10바이트의 0x03 Tor v2, 32바이트의 0x04 Tor v3, 32바이트의 0x05 I2P, 16바이트의 0x06 Cjdns, 16바이트의 0x07 Yggdrasil입니다. 1,000개를 넘는 항목을 담은 메시지, 512바이트보다 긴 주소, 길이가 자신의 ID와 일치하지 않는 주소는 모두 거부되어야 합니다.

이 가운데 두 ID에는 각주가 필요합니다. Tor v2는 작동을 멈췄습니다. 2025-10-01 날짜의 BIP 버전 2.0.0은 클라이언트가 더 이상 0x03 ID를 전파하거나 중계해서는 안 되며 수신 시 무시해야 한다고 기록하고 있고, Bitcoin Core는 해당 번호를 열거형에 남겨 두면서 TORV2를 더 이상 지원되지 않는 것으로 문서화합니다. Core는 일곱 번째 ID를 아예 구현하지 않으며, src/netaddress.h의 해당 열거형 BIP155Network는 IPV4 = 1부터 CJDNS = 6까지 이어지다가 거기서 끝나고, MAX_ADDRV2_SIZE는 명세가 명시한 것과 같은 512바이트로 설정되어 있습니다.

지원 여부는 당연한 것으로 가정되지 않고 협상됩니다. 노드는 sendaddrv2를 보내 지원을 알리며, 시점은 엄격합니다. 상대 피어의 version 메시지 이후, verack 이전에만 보내야 하며, Core는 이를 늦게 보내는 피어의 연결을 끊어 강제합니다. 한 번도 보내지 않으면 상대 피어는 구형 형식을 계속 사용하고, 구형 필드로 표현할 수 없는 모든 주소 유형을 조용히 버립니다. 2026-08-03 날짜의 버전 2.1.0은 관련된 공백을 메웠는데, IPv6로 감싸진 IPv4 주소, 즉 ::ffff:0:0/96 범위가 IPv6 ID로 전달되어서는 안 된다고 규정했습니다. 한 대의 기계가 두 ID로 도착하면 별개의 피어 두 개로 집계되기 때문입니다.

확인할 수 있는 곳

Addrv2는 Bitcoin Core에서 직접 읽는 무언가가 아니라 네트워크 레이블로 나타납니다.

getpeerinfo 호출은 모든 연결에 네트워크 이름을 붙이며, getnodeaddresses는 네트워크 이름을 인수로 받습니다. src/rpc/net.cpp의 도움말 텍스트는 getnodeaddresses 4 "i2p"와 -named getnodeaddresses network=onion count=12를 예로 사용합니다. getaddrmaninfo 호출은 더 나아가 저장된 주소 풀을 네트워크별로 new, tried, total 개수로 나눈 뒤 all_networks 합계를 덧붙입니다. ipv4와 ipv6을 넘어서는 행에는 어떤 addr 메시지로도 인코딩할 수 없었던 주소가 들어 있으며, 노드가 처음 그 주소를 어떻게 알게 되었든 마찬가지입니다.

onion 사례는 실제로 전달되는 정보가 얼마나 적은지 보여 줍니다. Tor v3 주소는 .onion 접미사 앞에 56개의 base32 문자가 있으며, 이는 32바이트 ed25519 공개 키, 2바이트 SHA3-256 체크섬, 1바이트 버전을 인코딩합니다. 실제로 전송되는 것은 공개 키뿐이고, 수신 노드가 나머지를 재구성합니다. 버전은 항상 3이고 체크섬은 이미 보유한 값의 함수이기 때문입니다.

보유자에게 이것은 눈에 보이는 결과가 하나뿐인 내부 배관입니다. 기본적으로 모든 트래픽을 Tor로 보내는 지갑, 그중에서도 Wasabi와, Tor를 통해 자신의 노드에 접속하는 지갑, 예컨대 Blockstream Green은 모두 onion 피어를 애초에 찾을 수 있다는 사실에 의존합니다.

Addrv2 vs 비트코인 주소

비트코인 주소와 addrv2 주소는 세 글자만 공유할 뿐 그 밖에는 아무것도 공유하지 않습니다. addrv2 항목은 네트워크상의 위치, 즉 기계가 어디에 있는지에 대한 답이며, 아무리 많아도 코인을 받을 수 없습니다. onion 주소를 지갑의 전송 필드에 붙여 넣으면 형식이 잘못된 것으로 거부되며, 그것이 올바른 결과입니다.

혼동하기 쉬운 용어

자주 묻는 질문

내 노드에서 addrv2를 활성화해야 합니까?

아닙니다. Bitcoin Core가 BIP-155가 요구하는 구간, 즉 상대 피어의 version 메시지 이후 verack 이전에 sendaddrv2 메시지를 대신 보내며, 협상된 프로토콜 버전이 최소 70016인 경우에만 보냅니다. 구형 소프트웨어는 알지 못하는 메시지 유형을 거부할 수 있기 때문입니다. 한 번도 응답하지 않는 피어는 구형 addr 형식을 계속 수신합니다.

addrv2가 내 노드의 트래픽을 암호화합니까?

아닙니다. Addrv2는 노드가 어떤 주소에 대해 이야기할 수 있는지만 바꾸며, 연결 자체가 어떻게 보호되는지는 바꾸지 않습니다. 연결 암호화는 별도의 협상인 BIP-324가 정의하는 v2 전송이며, Bitcoin Core는 자체 서비스 비트로 이를 알립니다.

BIP-155에 Tor v2용 네트워크 ID가 여전히 나열되어 있는 이유는 무엇입니까?

해당 id는 표에 남아 있지만 더 이상 사용되지 않는 것으로 표시되어 있습니다. 2025-10-01에 작성된 BIP의 2.0.0 버전은 Tor v2가 더 이상 작동하지 않으며 클라이언트가 id 0x03을 전파하거나 중계해서는 안 되고 수신 시 무시해야 한다고 기록합니다. Bitcoin Core는 BIP155Network enum에 TORV2 = 3을 유지하며 해당 id를 더 이상 지원되지 않는 것으로 문서화합니다.

다음에 읽을 글

관련 용어

노드와 소프트웨어 분야의 다른 용어

이 페이지를 영어로 읽기