Glossario / Indirizzi e chiavi
Chiave pubblica
- Che cos'è una chiave pubblica?
- Una chiave pubblica è il punto sulla curva secp256k1 derivato dalla tua chiave privata, pubblicabile senza rischi, ed è il valore contro cui si verifica una firma quando spendi.
Moltiplicare la chiave privata per un punto fisso della curva produce la chiave pubblica, e nessun metodo conosciuto inverte questo passaggio. Le chiavi compresse occupano 33 byte, e Taproot le ha ridotte ulteriormente alla forma x-only di 32 byte definita nel BIP-340. Da utente raramente ne vedi una, perché la maggior parte degli indirizzi pubblica solo un hash della chiave e rivela la chiave stessa quando i bitcoin si muovono finalmente.
Come funziona
Le chiavi pubbliche derivano da una curva specifica, e la sua aritmetica fa tutto il lavoro. Bitcoin usa secp256k1, definita dall'equazione y al quadrato uguale a x al cubo più 7 su un ampio campo primo, insieme a un punto di partenza concordato chiamato generatore. Sommare quel generatore a se stesso tante volte quante ne indica la chiave privata produce un altro punto sulla curva, e quel punto è la chiave pubblica. L'operazione è veloce in una direzione e, con tutte le tecniche note oggi, impraticabile nell'altra, ed è su questo che si basa interamente la proprietà dei bitcoin.
In pratica compaiono tre codifiche. La forma non compressa originale spende 65 byte per scrivere entrambe le coordinate dietro un prefisso 0x04. La forma compressa conserva solo la coordinata x e un byte di parità, 33 byte in totale, ed è quella predefinita da ben più di un decennio. Taproot fa un passo avanti con chiavi x-only di esattamente 32 byte, eliminando il byte di parità perché è il BIP-340 a fissare la convenzione.
Dove la chiave appare on-chain dipende dal tipo di output. Un output legacy o SegWit versione 0 impegna un hash di 20 byte della chiave pubblica, quindi la catena mostra l'hash e nient'altro finché i bitcoin non vengono spesi, e a quel punto chi spende deve rivelare la chiave che corrisponde a quell'hash. Un output Taproot è diverso: la chiave di output di 32 byte sta nell'indirizzo stesso, visibile dal momento in cui i fondi arrivano.
Perché questo conta quando compri bitcoin
Due situazioni pratiche mettono una chiave pubblica davanti a un comune acquirente, ed è facile sbagliarsi in entrambe.
La prima è dimostrare che un indirizzo è tuo. Secondo il regolamento UE sui trasferimenti di fondi, un exchange deve verificare che un indirizzo self-hosted appartenga davvero al suo cliente prima di inviare più di 1.000 euro a quell'indirizzo, e controlli comparabili si applicano in diverse altre giurisdizioni trattate nelle nostre guide per paese. La prova standard è un messaggio firmato: il tuo wallet firma una sfida con la chiave dietro l'indirizzo, e l'exchange la verifica con la chiave pubblica. Nulla di segreto lascia il tuo dispositivo, quindi è sicuro soddisfare questa richiesta, a differenza di una richiesta della chiave stessa.
La seconda è la chiave pubblica estesa, la xpub che il tuo wallet può esportare. Una xpub non è una credenziale di spesa, e consegnarla non può costarti bitcoin direttamente. Consegna però la tua storia finanziaria: chiunque la possieda può generare ogni indirizzo che quel wallet userà mai, passato e futuro, e leggere il saldo e ogni transazione a essi collegata. I tracker di portafoglio, gli strumenti fiscali e i commercialisti chiedono le xpub abitualmente. Concedine una solo dove saresti a tuo agio a consegnare un estratto conto bancario di tutta una vita, e usa un conto o un wallet separato dove non lo saresti.
Seguire una chiave fino alla blockchain
Prendi un wallet che usa il percorso standard SegWit nativo, m/84'/0'/0'/0/0. La chiave a quel percorso è di 33 byte compressi. Il wallet ne calcola l'hash, prima con SHA-256 e poi con RIPEMD-160, producendo 20 byte, e codifica quei byte come un indirizzo bc1q. Tutto ciò che viene inviato a quell'indirizzo è ora vincolato a un hash, e la rete non ha mai visto la chiave.
Quando spendi, il campo witness contiene due elementi: una firma e la chiave pubblica di 33 byte. Ogni nodo calcola l'hash della chiave, controlla che il risultato corrisponda ai 20 byte richiesti dall'output, poi verifica la firma con la chiave. Solo se entrambe le condizioni valgono la spesa è valida. Da quel blocco in poi la chiave è pubblica, il che è un buon motivo per non lasciare un saldo su un indirizzo da cui hai già speso.
Chiave pubblica vs chiave privata
La chiave privata è scelta a caso e la chiave pubblica è calcolata da essa, mai il contrario. Questa asimmetria decide come viene gestita ciascuna: pubblicare una chiave pubblica è routine e non ti costa nulla, mentre pubblicare una chiave privata consegna i bitcoin subito e in modo irreversibile. I backup proteggono il lato privato, dato che la chiave pubblica può sempre essere ricalcolata da esso in microsecondi. La verifica usa il lato pubblico, ed è per questo che estranei e nodi possono controllare la tua firma senza che venga mai affidato loro nulla.