Vai al contenuto
buybitcoinsmart

Glossario / Nodi e software

Addrv2

Che cos'è Addrv2?
Addrv2 è il messaggio peer-to-peer che i nodi bitcoin usano per propagare indirizzi dei peer che il vecchio messaggio addr non può esprimere, ciascuno contrassegnato con un id di rete da un byte per Tor v3, I2P o Cjdns.

Specificato nel BIP-155.

Il vecchio messaggio addr porta un campo indirizzo fisso di 16 byte, che non può contenere un indirizzo onion Tor v3 di 32 byte. Il BIP-155 sostituisce quel campo con un id di rete da un byte più un indirizzo fino a 512 byte, con un limite di 1.000 voci per messaggio. Gestisci un nodo su Tor per tenere i tuoi bitcoin lontani dal tuo indirizzo IP domestico, e addrv2 è il modo in cui gli altri nodi scoprono che esiste.

Come funziona

Addrv2 conserva la forma del messaggio a cui succede e riscrive un solo campo.

Ogni voce porta cinque cose: un timestamp Unix del momento in cui quel nodo è stato visto connesso l'ultima volta, un campo di bit di servizio passato alla codifica CompactSize così non costa più sempre otto byte, un id di rete da un byte, l'indirizzo stesso e una porta di 16 bit che deve essere zero dove la rete non ne ha una. Il BIP-155 riserva sette id: 0x01 IPv4 a 4 byte, 0x02 IPv6 a 16, 0x03 Tor v2 a 10, 0x04 Tor v3 a 32, 0x05 I2P a 32, 0x06 Cjdns a 16 e 0x07 Yggdrasil a 16. Un messaggio con più di 1.000 voci, un indirizzo più lungo di 512 byte o un indirizzo la cui lunghezza non concorda con il suo id dovrebbero essere rifiutati.

Due di questi id richiedono una nota. Tor v2 ha smesso di funzionare: la versione 2.0.0 del BIP, datata 2025-10-01, stabilisce che i client non devono più propagare né inoltrare l'id 0x03 e devono ignorarlo alla ricezione, e Bitcoin Core mantiene il numero nel suo enum documentando TORV2 come non più supportato. Core non implementa affatto il settimo id, perché quell'enum, BIP155Network in src/netaddress.h, va da IPV4 = 1 a CJDNS = 6 e si ferma lì, con MAX_ADDRV2_SIZE impostato agli stessi 512 byte che la specifica indica.

Il supporto si negozia, non si dà per scontato. Un nodo lo annuncia inviando sendaddrv2, e il momento è vincolante: solo dopo il messaggio version del peer e prima di verack, cosa che Core impone disconnettendo un peer che lo invia in ritardo. Se non lo invii mai, il peer continua a usare il formato legacy e scarta silenziosamente ogni tipo di indirizzo che il vecchio campo non può esprimere. La versione 2.1.0, datata 2026-08-03, ha colmato una lacuna correlata stabilendo che gli indirizzi IPv4 incapsulati in IPv6, l'intervallo ::ffff:0:0/96, non devono viaggiare con l'id IPv6, perché una macchina che arriva con due id viene contata come due peer distinti.

Dove lo vedi

Addrv2 compare in Bitcoin Core come etichetta di rete, non come qualcosa che leggi direttamente.

La chiamata getpeerinfo contrassegna ogni connessione con un nome di rete, e getnodeaddresses ne accetta uno come argomento: il testo di aiuto in src/rpc/net.cpp usa come esempi getnodeaddresses 4 "i2p" e -named getnodeaddresses network=onion count=12. La chiamata getaddrmaninfo va oltre e suddivide il pool di indirizzi memorizzati per rete, con conteggi new, tried e total, prima di aggiungere un totale all_networks. Le righe oltre ipv4 e ipv6 contengono indirizzi che nessun messaggio addr avrebbe potuto codificare, comunque il tuo nodo ne sia venuto a conoscenza.

Il caso onion mostra quanto poco viaggi davvero. Un indirizzo Tor v3 è di 56 caratteri base32 prima del suffisso .onion, che codificano una chiave pubblica ed25519 di 32 byte, un checksum SHA3-256 di due byte e una versione di un byte. Solo la chiave pubblica viaggia sulla rete, e il nodo che la riceve ricostruisce il resto, dato che la versione è sempre 3 e il checksum è una funzione di ciò che ha già.

Per chi detiene bitcoin è infrastruttura di base con una sola conseguenza visibile. I wallet che instradano tutto su Tor per impostazione predefinita, Wasabi tra questi, e i wallet che raggiungono il tuo nodo su Tor, come Blockstream Green, dipendono tutti dal fatto che i peer onion siano trovabili in primo luogo.

Addrv2 vs un indirizzo bitcoin

Un indirizzo bitcoin e un indirizzo addrv2 condividono tre lettere e nulla più. Una voce addrv2 è una posizione su una rete, una risposta a dove si trova una macchina, e nessuna quantità di queste può ricevere bitcoin. Incolla un indirizzo onion nel campo di invio di un wallet e verrà rifiutato come malformato, che è il risultato corretto.

Da non confondere con

Domande frequenti

Devo attivare addrv2 sul mio nodo?

No. Bitcoin Core invia il messaggio sendaddrv2 per te, nella finestra richiesta dal BIP-155: dopo il messaggio version del peer e prima di verack, e solo dove la versione di protocollo negoziata è almeno 70016, perché un software più vecchio può rifiutare un tipo di messaggio che non conosce. Un peer che non risponde mai con uno continua a ricevere il vecchio formato addr.

Addrv2 cifra il traffico del mio nodo?

No. Addrv2 cambia solo di quali indirizzi un nodo è in grado di parlare, non come è protetto il collegamento stesso. Cifrare la connessione è una negoziazione separata, il trasporto v2 definito dal BIP-324, che Bitcoin Core segnala con un proprio bit di servizio.

Perché il BIP-155 elenca ancora un id di rete per Tor v2?

L'id resta nella tabella ma è contrassegnato come non più usato. La versione 2.0.0 del BIP, datata 2025-10-01, riporta che Tor v2 non è più operativo e che i client non devono diffondere né ritrasmettere l'id 0x03 e devono ignorarlo alla ricezione. Bitcoin Core mantiene TORV2 = 3 nel suo enum BIP155Network e documenta l'id come non più supportato.

Leggi anche

Termini correlati

Altro in Nodi e software

Leggi questa pagina in inglese