Vai al contenuto
buybitcoinsmart

Glossario / Indirizzi e chiavi

Derivazione BIP-84

Che cos'è la derivazione BIP-84?
La derivazione BIP-84 è lo schema che fissa a 84' il livello di scopo di un percorso BIP-32, così una sola frase di recupero produce indirizzi nativi SegWit bc1q che usano l'incapsulamento P2WPKH del BIP-141.

Specificato nel BIP-84.

BIP-84 riutilizza la struttura a cinque livelli del BIP-44 e cambia solo il valore di scopo. È stato assegnato il 28 dicembre 2017 e associa a ogni conto una chiave estesa zpub i cui byte di versione sono 0x04b24746. Per te decide se una frase di recupero ripristinata trova il tuo saldo bc1q o segnala un wallet vuoto.

Come funziona

BIP-84 fa due cose, e la prima è fissare un numero dentro un percorso. Le chiavi derivano dallo scheletro introdotto dal BIP-44, scritto m / purpose' / coin_type' / account' / change / address_index, e l'unico livello che questa specifica rivendica come proprio è lo scopo, fissato a 84'. Il tipo di moneta, il conto, il change e l'indice degli indirizzi mantengono i significati che il BIP-44 e il BIP-49 avevano già dato loro, e l'autore, Pavol Rusnak, riutilizza esplicitamente la motivazione del BIP-49 invece di ripeterla.

La seconda cosa è il formato dell'output. BIP-84 prende in prestito l'incapsulamento dal BIP-141: lo scriptPubKey è 0x0014 seguito dall'hash di 20 byte della chiave pubblica, lo scriptSig resta vuoto e il witness porta prima la firma e poi la chiave. Nulla in quell'output registra quale valore di scopo lo ha prodotto.

Le chiavi estese del ramo hanno byte di versione propri. Le chiavi pubbliche usano 0x04b24746, che si stampa come zpub, le chiavi private usano 0x04b2430c per zprv, e la testnet usa 0x045f1cf6 e 0x045f18bc per vpub e vprv. Quei valori non sono esclusivi di bitcoin. SLIP-0132, il registro che li raccoglie, elenca Groestlcoin e Syscoin sotto lo stesso 0x04b24746, perché il formato di serializzazione non ha alcun campo per il tipo di moneta, quindi una zpub ti dice il tipo di script e nulla sulla catena a cui appartiene.

La specifica si definisce "not backwards compatible by design" e afferma che un wallet incompatibile "will not discover accounts at all". È una scelta deliberata. Un valore di scopo separato tiene il software scritto prima di SegWit fuori da un conto che il software gestirebbe male, e un saldo che segna zero è un errore migliore di un wallet che si ripristina a metà in silenzio.

Dove lo vedi

BIP-84 compare in tre punti che il tuo wallet già mostra: il percorso del conto m/84'/0'/0', una chiave estesa che inizia con zpub e indirizzi di ricezione che iniziano con bc1q. SLIP-0132 abbina quella riga zpub per bitcoin al percorso m/84'/0', che è l'abbinamento che un'app dichiara quando te ne consegna una. Sparrow, valutato 4,7 nella nostra recensione, gestisce wallet a firma singola e multisig per i tipi di script comuni, quindi il conto che apri è quello che hai scelto e non un'impostazione predefinita ereditata.

La parte del documento che vale la pena prendere in prestito è il blocco dei vettori di test, che trasforma la domanda "questo wallet implementa il BIP-84 come tutti gli altri?" in un controllo che richiede un minuto. Il BIP pubblica i risultati per il mnemonico "abandon" ripetuto undici volte e poi "about":

  • m/84'/0'/0'/0/0 dà bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
  • m/84'/0'/0'/0/1 dà bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g
  • m/84'/0'/0'/1/0 dà bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el

Carica quella frase in un software che non conosci, su una macchina che non contiene bitcoin, scegli SegWit nativo e confronta il primo indirizzo di ricezione e il primo indirizzo di resto con quelle stringhe. Se entrambi coincidono, l'implementazione è d'accordo con lo standard anche sul ramo del resto, che è la metà che le persone dimenticano di verificare. Non inviare mai nulla a quegli indirizzi: il BIP stampa le chiavi private corrispondenti e SLIP-0132 stampa lo stesso mnemonico, quindi chiunque legga uno dei due documenti può spendere ciò che vi arriva.

Derivazione BIP-84 vs P2WPKH

La derivazione BIP-84 dice da dove viene una chiave, e P2WPKH dice come sono bloccati i bitcoin. Solo la seconda è una regola di consenso. Un wallet potrebbe derivare una chiave lungo un percorso che non contiene 84' da nessuna parte, bloccare l'output con lo stesso schema 0x0014, e l'indirizzo bc1q risultante sarebbe indistinguibile dal tuo on-chain. Quindi "un indirizzo BIP-84" è una forma abbreviata e non un'affermazione che un explorer possa stabilire, e il valore di scopo è qualcosa che annoti in una nota di backup, perché non potrai più leggerlo dalla blockchain in seguito.

Da non confondere con

Domande frequenti

Qual è la differenza tra BIP-84 e BIP-49?

Il livello di scopo e, con esso, il formato degli indirizzi. BIP-84 usa 84' e produce indirizzi nativi SegWit bc1q sotto una chiave estesa zpub, mentre BIP-49, assegnato il 19 maggio 2016, usa 49' e produce indirizzi P2WPKH annidati in P2SH sotto una ypub. Una sola frase di recupero può contenere entrambi i conti allo stesso tempo.

Un prefisso zpub dimostra che sto guardando un wallet bitcoin?

No. SLIP-0132 registra gli stessi byte di versione, 0x04b24746, per Groestlcoin e Syscoin oltre che per bitcoin, perché il formato della chiave estesa non ha alcun campo per il tipo di moneta. Il prefisso ti dice che il tipo di script è P2WPKH e nulla sulla catena.

Devo annotare m/84'/0'/0' insieme al mio backup?

Sì, scrivilo accanto al nome del wallet. Il percorso non è segreto e di per sé non rivela nulla, ma un software che ripristina le stesse parole su un diverso livello di scopo deriva un insieme diverso di indirizzi e mostra un wallet vuoto.

Leggi anche

Termini correlati

Altro in Indirizzi e chiavi

Leggi questa pagina in inglese