Glossario / Indirizzi e chiavi
Chiave pubblica non compressa
- Che cos'è una chiave pubblica non compressa?
- Una chiave pubblica non compressa scrive entrambe le coordinate di un punto della curva dietro un prefisso 0x04, occupa 65 byte e oggi sopravvive soprattutto nelle chiavi generate prima del 2012.
Il primo software di Bitcoin registrava i valori completi di x e y, ed è per questo che i bitcoin del 2009 e del 2010 stanno dietro indirizzi derivati da chiavi da 65 byte. Poi SegWit ha chiuso la porta al formato, dato che il BIP-143 vieta le chiavi non compresse nei programmi witness di versione 0 e nessun indirizzo bc1q può usarne una. Se stai recuperando un vecchio paper wallet, è questo il dettaglio che decide se i tuoi fondi compaiono.
Come funziona
Una chiave pubblica non compressa ha una struttura tanto letterale quanto il suo nome. Un byte di prefisso 0x04 annuncia il formato, poi 32 byte danno la coordinata x, poi 32 byte danno la coordinata y, per 65 byte in tutto. Non c'è nulla da calcolare per leggerla: entrambe le metà del punto sono già lì, ed è proprio per questo che l'implementazione originale la scelse sull'hardware dell'epoca.
Le regole di validità non hanno mai riservato un trattamento particolare al formato al livello di base. Un nodo che verifica una spesa legacy pay-to-public-key-hash o pay-to-script-hash accetta una chiave non compressa senza obiezioni, e i bitcoin bloccati su una chiave del 2010 restano spendibili senza alcuna scadenza. È cambiato tutto ciò che è costruito sopra: i wallet BIP-32 derivano solo chiavi compresse, quindi una frase di recupero non può mai produrre una chiave non compressa, e SegWit le ha rese non valide nelle spese witness di versione 0.
Il costo dei 32 byte in più si paga al momento della spesa. Un input legacy con una chiave compressa occupa circa 148 vbyte; lo stesso input con una chiave non compressa occupa circa 180 vbyte, più o meno il 22 per cento in più per una spesa identica. Consolidare una dozzina di questi input durante un picco di commissioni è il caso in cui quella differenza smette di essere un dettaglio.
Dove lo vedi
Tre artefatti consegnano ancora chiavi non compresse alle persone, e tutti e tre risalgono alla stessa epoca.
I paper wallet stampati dai siti generatori dal 2011 al 2013 producevano di solito un indirizzo che iniziava con 1 e una stringa in Wallet Import Format che iniziava con 5, il marcatore del lato non compresso del formato. Le monete fisiche della serie Casascius, coniate tra il 2011 e il 2013, nascondevano lo stesso tipo di stringa sotto un ologramma a prova di manomissione. E le chiavi private esportate dal software di wallet più antico precedono del tutto il cambio.
Recuperare una vecchia chiave
La trappola non è la codifica, è che una sola chiave privata produce due indirizzi diversi. L'hash della chiave da 65 byte dà un indirizzo legacy; l'hash della versione compressa da 33 byte della stessa chiave ne dà uno completamente diverso. Se importi la chiave in un software moderno che dà per scontata la compressione, il saldo può sembrare zero mentre i bitcoin restano intatti sull'altro indirizzo.
I wallet che gestiscono bene il materiale vecchio, tra cui Electrum, controllano entrambe le derivazioni quando sposti una chiave invece di importarla. Lo spostamento è anche l'operazione più sicura: porta i bitcoin in un indirizzo di cui hai il controllo grazie alla tua frase di recupero attuale, così una stampa rimasta in un cassetto, fotografata da uno smartphone o vista da un precedente proprietario smette di poter spendere qualsiasi cosa. Controlla entrambe le forme dell'indirizzo su un block explorer prima di concludere che un recupero è fallito.