Tabella dei Contenuti
ToggleQuando parliamo di Bitcoin Script ci riferiamo a un linguaggio di programmazione Bitcoin. Gestisce l’elaborazione delle transazioni. Dalle transazioni semplici come i micropagamenti a conti multiutente. Questo linguaggio si legge da sinistra a destra e basa il suo funzionamento su un insieme di strutture lineari note come stack. Le istruzioni di questo linguaggio vengono eseguite in ordine consecutivo una dopo l’altra.
È importante notare che questo linguaggio non è Turing Complete, quindi, non può risolvere tutti i tipi di problemi. Il suo funzionamento è limitato a non consentire loop nel sistema. Tuttavia, questa limitazione non è uno svantaggio, poiché è stata creata intenzionalmente. Grazie a questa limitazione, in caso di errore nel sistema, non si ripeterebbe costantemente.
In caso contrario, operazioni molto complicate potrebbero essere create in loop, rallentando il sistema e consumando l’Hash rate totale. Questo linguaggio di programmazione è molto importante, poiché consente la scrittura di programmi e che il computer esegua i nostri comandi. OP_CODES sono usati per questo scopo. Questi sono usati per funzioni come la matematica, i cicli, le chiamate di funzione, ecc….
In altre parole, Bitcoin Script è un insieme di istruzioni che registrano ogni transazione effettuata. Queste istruzioni stabiliscono come gli utenti possono utilizzare la rete e ottenere l’accesso ai Bitcoin.
L’obiettivo di Bitcoin Script è offrire una serie di parametri flessibili che consentano transazioni Bitcoin in modo semplice. Proprio per questo scopo Satoshi Nakamoto ha disabilitato alcune funzioni quando ha sviluppato Bitcoin, inclusa la moltiplicazione. Per questo motivo è uno script semplice in termini di programmazione.
Questa lingua decide se una transazione può essere eseguita o meno sulla rete. In altre parole, decide se tale operazione è autorizzata a trasferire fondi. Lo script Bitcoin da’ vita alla natura programmabile di Bitcoin. Grazie al Bitcoin Script possiamo effettuare una transazione, che avverrà, solo se vengono soddisfatte determinate condizioni. Proprietà come questa si trovano solo nelle criptovalute. Questo le rende diverse dall’attuale moneta digitale e soprattutto dal cartamoneta.
Questo programma è un’evoluzione che consente al denaro di agire in modo indipendente e decentralizzato in base alla programmazione implementata in esso. Ma il Bitcoin Script non solo consente transazioni, evita anche la creazione di errori nel sistema ed evita l’utilizzo di operazioni complesse . Questo script converte le transazioni in operazioni di facile calcolo e, come abbiamo già detto, non consente loop infiniti che rallentano la rete.
Come funziona Bitcoin Script?
Tra gli script più utilizzati oggi in rete è ben noto lo script P2PKH. Gli script sono fondamentali per eseguire qualsiasi tipo di operazione Bitcoin. In questo, ogni azione viene eseguita da uno script specifico che determina cosa dovrebbe essere fatto. In questa operazione non accadrà nulla che non sia dettato da uno Script Bitcoin.
Uno script standard sarebbe costituito da una struttura in due parti, ScriptPubKey e ScriptSig. Questo tipo di script è il modo più comune per eseguire una transazione BTC.
La ScriptPubKey potrebbe essere:
15higMjoCCNXSA95xZbJUdPvXNmkAduhCA
E lo ScriptSig sarebbe un insieme di numeri e lettere simile al seguente:
760402203f004eeed0cef2715643e2f25a27a28f3c578e94c7f0
f6a4df104e7d163f7f8f022100b8b248c1cfd8b55a0365107a9511d
759b7544d979dd152a955c867epect0ef79702
A prima impatto notiamo solo la difficoltà di un miscuglio di numeri e lettere incomprensibili, ma è proprio lo strato dietro il quale si nasconde un sistema del tutto semplice.
Nello scriptPubKey vediamo le azioni da eseguire nella transazione e nello ScriptSig vediamo la parola chiave pubblica e la firma che aiuteranno a verificare l’autenticità della transazione. Questo è il modo in cui Bitcoin Script garantisce che l’utente che invia la transazione abbia accesso ai fondi e possa spostarli.
Tutto ciò coinvolge gli OP_CODES sopra menzionati. Questi sono codici di operazione che rappresentano una parte di un linguaggio di comando che specifica quale operazione verrà eseguita.
Inoltre, gli OP_CODE creano strutture avanzate e pianificano le operazioni all’interno della blockchain. Ogni OP_CODE ha un compito diverso. Alcuni eseguono la modifica dell’input, altri gestiscono la verifica dei dati e assicurano che i dati siano corretti e validi, e, alcuni duplicano elementi. Ogni OP_CODE svolge un ruolo importante nel funzionamento del Bitcoin Script.
Per eseguire uno script il primo passo è duplicare la parola chiave pubblica del proprietario dei fondi coinvolti nella transazione. Questa chiave viene quindi sottoposta a un processo di hashing in cui viene applicato l’hash SHA-256. L’ hash RIPEMD-160 viene applicato alla combinazione risultante.
Una volta applicato quest’ultimo hash, il risultato di quest’ultimi viene confrontato con l’hash trovato nella parola chiave pubblica dello scriptPubKey, per verificare che sia la stessa chiave e che sia verificato come valido. Una volta verificata la corrispondenza dello script, procede all’esecuzione e passa al CHECKSIG dove viene verificata la firma tramite la parola chiave pubblica.
È molto comune per gli utenti credere che Bitcoin non sia in grado di creare smart contract. Bitcoin Script è il linguaggio degli smart contract di Bitcoin in modo che possa crearli. Va notato che le capacità degli smart contract di Bitcoin siano limitate rispetto a Ethereum, tuttavia, la rete Bitcoin ha questa capacità.
Sappiamo già che Bitcoin Script non condivide tutte le funzionalità di una macchina Turing completa, quindi, non consente loop e grazie a questo possiamo determinare quando e come un programma finirà. In Bitcoin Script non c’è la possibilità di creare script che girano per sempre, così come è impossibile per il linguaggio bloccare i programmi o il loro executor.
Queste limitazioni ritardano gli smart contract di Bitcoin rispetto a Ethereum, tuttavia, garantiscono una maggiore sicurezza nella rete.
Il linguaggio di programmazione Bitcoin ha caratteristiche che lo differenziano da altri linguaggi. Di seguito ne vedremo alcuni.