In questo ultimo articolo affronteremo con la teoria come si ottiene la chiave privata e come si deriva la chiave pubblica.
Come già spiegato nei precedenti articoli, per lo script P2PK, non esiste un address specifico. È molto importante comprendere come il protocollo Bitcoin si è evoluto per arrivare ad ottenere gli address che utilizziamo oggi.
Il tutto parte dalla chiave privata.
La chiave privata è una sequenza di byte ottenuti applicando l’algoritmo secp256k1, i valori che otteniamo devono ricadere all’interno del range di tale algoritmo.
L’algoritmo secp256k1 è parte della crittografia delle curve ellittiche, spesso la troviamo l’acronimo ECC: Elliptic Curve Cryptography.
Troviamo anche l’acronimo ECDSA che ci indica Elliptic Curve Digital Signature Algorithm.
ECC: Elliptic Curve Cryptography
ECDSA:Curve Digital Signature Algorithm
La chiave privata deve rispettare le direttive DER, Distinguished Encoding Rules. Brevemente, la chiave viene interpretata come un coding binario e non contiene plain text come le chiavi PEM, come ad esempio —
-----BEGIN EC PRIVATE KEY
-----xxxxx---
--END EC PRIVATE KEY-----
Sulla chiave viene aggiunto un prefisso per identificare se la chiave privata è destinata all’ambiente di main o per l’ambiente di test.
Da qui si ottiene la chiave privata in formato WIF, acronimo di Wallet Import Format.
Se vogliamo importare una chiave privata nel nostro wallet utilizzeremo la chiave privata WIF con il comando importprivkey.
$ bitcoin-cli help importprivkey
Quando firmiamo la transazione utilizziamo la chiave privata PEM, come mostrato nel libro Bitcoin In Action – SegWit, Bitcoin Script & Smart Contracts
Applicando un byte (01), in coda alla chiave, si ottiene la chiave privata WIF compressa, altrimenti si ha la chiave WIF non compressa.
Ad oggi si utilizza prevalentemente la chiave privata compressa.
Dalla chiave privata si deriva la chiave pubblica, compressa e non compressa.
La chiave pubblica non compressa è quella che abbiamo analizzato negli articoli precedenti dedicati al P2PK, la riconosciamo perchè inizia sempre con il byte 04 ed è lunga 130 caratteri esadecimali
La chiave pubblica compressa si ottiene applicando un version prefix, verificando l’ultimo byte e applicando la funzione crittografica RIPEMD160.
Nel video corso e nei nostri libri andiamo con la pratica a generare manualmente tutti gli indirizzi.
Perchè è stata preferita la chiave pubblica compressa nel corso degli anni?
Le fees si pagano in base a quanto è pesante la transazione in termini di bytes, o per meglio dire sulla vsize dopo l’introduzione di SegWit.
Come ormai sappiamo, la chiave privata non deve essere assolutamente condivisa, perchè è in grado di generare quella firma digitale comprovabile dalla corrispondete chiave pubblica, che ovviamente è stata possibile derivare solo ed esclusivamente da quella chiave privata.
Se ti stai chiedendo perchè è importante la firma, guarda gli articoli precedenti.
–––––
—
🐙 GitHub: https://bit.ly/2Lj3yeY
–––
📕 Bitcoin In Action – SegWit, Bitcoin Script e Smart Contracts (Amazon)
📕 Bitcoin In Action – SegWit, Bitcoin Script e Smart Contracts (pagamento in bitcoin)
–––
📒 Libro Bitcoin dalla teoria alla pratica (Amazon)
📒 Libro Bitcoin dalla teoria alla pratica (pagamento in bitcoin)
📒 Book Bitcoin from theory to practice (Amazon)
📒 Book Bitcoin from theory to practice (accept bitcoin)
—
🎥 Video Corso Bitcoin dalla teoria alla pratica
—
📙 Tascabile Bitcoin 199 domande (Amazon)
📙 Tascabile Bitcoin 199 domande (pagamento in bitcoin)
📙 Pocket Book Bitcoin 199 questions (Amazon)
📙 Pocket Book Bitcoin 199 questions (accept bitcoin)
—
► ITA: Twitter , Facebook, Medium, Instagram, Youtube, GitHub
► ENG: Twitter , Facebook, Medium, Instagram, Youtube, GitHub
Television isn’t a good idea (Radio Stations)
Email isn’t a good idea (Post offices)
Amazon isn’t a good idea (Retail stores)
Bitcoin isn’t a good idea (Central banks)
In crypto we trust