Cryptology Academy · Lezione

Script di Bitcoin e verifica delle firme UTXO

Segua gli script pay-to-public-key-hash (P2PKH) e la firma ECDSA.

Lezione 4 di 413 passaggi

Script di Bitcoin e verifica delle firme UTXO è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Modello UTXO

Bitcoin utilizza gli output di transazione non spesi (UTXO). Ogni UTXO è una moneta con uno script di blocco (scriptPubKey). Per spenderlo, chi effettua la spesa fornisce uno script di sblocco (scriptSig) che soddisfa lo script di blocco. Gli UTXO sono atomici: o vengono spesi o non vengono spesi, mai parzialmente.

Bitcoin Script

Bitcoin Script è un linguaggio basato su stack e non completo secondo Turing. Gli script vengono eseguiti inserendo dati nello stack ed eseguendo opcode. Non ci sono cicli né ricorsione: gli script terminano sempre. Questa limitazione intenzionale previene gli attacchi di tipo denial-of-service e rende la verifica dello script O(n) rispetto alla sua lunghezza.

P2PKH: pagamento all'hash della chiave pubblica

È il tipo di output più comune. scriptPubKey: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG. scriptSig: . Esecuzione: inserisce la firma e la chiave pubblica, duplica la chiave pubblica, calcola hash160, confronta il risultato con l'hash incorporato e verifica la firma ECDSA. Se tutte le verifiche hanno esito positivo, la moneta può essere spesa.

Traccia di esecuzione di P2PKH

Traccia dello stack per P2PKH: inserisce ; inserisce ; OP_DUP → inserisce una copia; OP_HASH160 → calcola hash160 dell'elemento in cima; inserisce ; OP_EQUALVERIFY → rimuove due elementi e fallisce se non sono uguali; OP_CHECKSIG → rimuove la firma e , verifica ECDSA e inserisce TRUE/FALSE. Lo script ha esito positivo se il risultato è TRUE.

ECDSA in Bitcoin

Bitcoin utilizza ECDSA su secp256k1 (curva di Koblitz, y^2 = x^3 + 7 mod p). La chiave privata è d ∈ [1, n-1]. La chiave pubblica è Q = d*G. Sign(m): k casuale; r = (k*G).x mod n; s = k^{-1}(H(m)+r*d) mod n. La firma è (r, s). Viene codificata in DER nello scriptSig.

Tipi SIGHASH

Le firme Bitcoin vincolano parti specifiche della transazione: SIGHASH_ALL (predefinito): firma tutti gli input e gli output. SIGHASH_SINGLE: firma solo l'output corrispondente. SIGHASH_NONE: non firma alcun output (pericoloso). SIGHASH_ANYONECANPAY: firma solo il proprio input e consente transazioni collaborative.

P2SH: pagamento all'hash dello script

P2SH consente di nascondere condizioni di spesa complesse dietro un hash. scriptPubKey: OP_HASH160 OP_EQUAL. scriptSig: . Esecuzione: verifica che hash(redeemScript) == scriptHash, quindi esegue redeemScript. Consente la multifirma senza rivelare le condizioni fino al momento della spesa.

Multifirma (2-di-3)

redeemScript: OP_2 OP_3 OP_CHECKMULTISIG. scriptSig: OP_0 . OP_0 aggira un bug di OP_CHECKMULTISIG, che rimuove un elemento aggiuntivo dallo stack. Una multifirma 2-di-3 richiede 2 firme qualsiasi su 3.

SegWit e P2WPKH

Segregated Witness (SegWit, BIP-141) sposta le firme fuori da scriptSig, inserendole in un campo witness separato. Risolve la malleabilità delle transazioni, per cui l'ID cambia se cambia scriptSig. scriptPubKey di P2WPKH: OP_0 <20-byte pubKeyHash>. Witness: [ ].

Taproot (P2TR)

Taproot (BIP-340/341/342) utilizza firme Schnorr e alberi sintattici astratti merkelizzati (MAST). La spesa predefinita consiste in una singola firma Schnorr, indistinguibile da una spesa tramite keypath. Le condizioni complesse sono nascoste in un albero di Merkle e vengono rivelate solo se utilizzate. Più privacy ed efficienza.

Verifica degli script nel codice

Bitcoin Core convalida gli script tramite un interprete basato su stack. CheckSig chiama VerifyScript, che esegue lo script combinato scriptSig+scriptPubKey. Per ogni opcode CHECKSIG, chiama CheckECDSASignature, che verifica la firma codificata in DER (r,s) rispetto all'hash della transazione utilizzando secp256k1.

Verifica rapida

Che cosa verifica OP_CHECKSIG in uno script P2PKH?

Riepilogo

Gli UTXO utilizzano Bitcoin Script, basato su stack. P2PKH: il modello di spesa più comune: verifica l'hash di una chiave pubblica, quindi controlla la firma ECDSA. SegWit risolve la malleabilità; Taproot aggiunge Schnorr e MAST. Prossimo argomento: crittanalisi differenziale.

Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Script di Bitcoin e verifica delle firme UTXO» è gratuita?

Sì — il testo completo di «Script di Bitcoin e verifica delle firme UTXO» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Script di Bitcoin e verifica delle firme UTXO»?

Segua gli script pay-to-public-key-hash (P2PKH) e la firma ECDSA. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Script di Bitcoin e verifica delle firme UTXO»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Catene di hash e collegamento dei blocchi
  2. Alberi di Merkle: integrità delle transazioni su larga scala
  3. Proof of Work: mining e adeguamento della difficoltà
  4. Script di Bitcoin e verifica delle firme UTXO
← Torna a Cryptology Academy