Script

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Lo Script è un elemento fondamentale per i Bitcoin, perché le transazioni Bitcoin non sono soltanto dei trasferimenti di valore da un wallet ad un altro, ma sono dei programmi più o meno semplici, definiti anche smart contract, in un linguaggio di scripting che stabiliscono come i Bitcoin possono essere trasferiti o spesi.

Ad esempio la prima forma di pagamento Bitcoin, chiamata P2PK Pay-to-Public-Key in italiano Paga alla Chiave pubblica (ormai obsoleta) è realizzata con uno script di poche istruzioni.

Il linguaggio di scripting di Bitcoin si chiama semplicemente Script. Tutti gli script Bitcoin sono scritti in Script.

Satoshi Nakamoto lo definisce in questo modo:
"Lo script è in realtà un predicato. È solo un'equazione che si valuta come vera o falsa. Predicato è una parola lunga e poco familiare, quindi l'ho chiamata script."

Bitcoin Script è un linguaggio simile al Forth basato su stack. È un linguaggio che generalmente viene considerato non Turing complete, perché volutamente manca di diverse funzioni logiche, inclusi i loop. Questo viene fatto per garantire che nessuno script Bitcoin possa consumare una potenza di calcolo eccessiva e danneggiare i nodi della rete.

Lo script viene utilizzato quasi esclusivamente per le transazioni, e possiamo classificare in 2 categorie gli script:

Una transazione è composta da un insieme di input UTXO in ingresso, ognuno dei quali ha il suo scriptPubKey che definisce come l'UTXO può essere speso o trasferito, e questo trasferimento viene sbloccato nella transazione tramite lo scriptSig. Lo script bitcoin serve quindi principalmente per bloccare e sbloccare bitcoin, non per creare applicazioni o eseguire programmi generici. La semplicità di Script offre anche sicurezza a Bitcoin e rende più facile per gli sviluppatori evitare di perdere denaro durante la progettazione di portafogli o applicazioni su Bitcoin. Questi script vengono a volte chiamati smart contract.

Tutte le transazioni Bitcoin utilizzano Script per definire come possono essere spesi gli output. In altre parole, lo script di una transazione Bitcoin determina a chi è stato inviato il bitcoin. Bitcoin ha alcuni script diversi, con Pay-to-Public-Key-Hash (P2PKH) che è il più popolare. P2PKH è un semplice script che paga bitcoin a un indirizzo, indicato attraverso il suo hash. Altri script possono ottenere configurazioni più complesse, come la creazione di indirizzi multisig. Per spendere i Bitcoin inviati ad un indirizzo multisig viene richiesto più firme da più chiavi private. Sebbene i tipi di script SegWit, P2WPKH e P2WSH, offrano risparmi sulle commissioni di transazione, l'adozione di questi nuovi tipi di script è volutamente lenta. Ad aprile 2021, quasi quattro anni dopo l'attivazione di SegWit, gli script P2PKH sono utilizzati da oltre il 70% degli UTXO.

Gli script sono composti da opcode, i comandi di base, con i dati aggiuntivi come indirizzi, chiavi pubbliche e firme.


aggiornato il 2022-03-18