Table des matières
ToggleLorsque nous parlons de Bitcoin Script, nous faisons référence à un langage de programmation Bitcoin. Il est en charge du traitement des transactions. Des transactions aussi simples que les micropaiements aux comptes multi-utilisateurs. Ce langage se lit de gauche à droite et repose sur un ensemble de structures linéaires appelées pile(stack). Les instructions de ce langage sont exécutées dans un ordre consécutif, l’une après l’autre.
Il est important de noter que ce langage n’est pas complet de Turing, il ne peut donc pas résoudre tous les types de problèmes. Son fonctionnement se limite à ne pas autoriser les boucles dans le système. Toutefois, cette limitation n’est pas un inconvénient, car elle est créée intentionnellement. Grâce à cette limitation, en cas d’erreur dans le système, celle-ci ne serait pas répétée constamment.
Dans le cas contraire, des opérations en boucle très compliquées pourraient être créées, ralentissant le système et consommant le taux de Hash total. Ce langage de programmation est très important, car il permet d’écrire des programmes et de faire en sorte que l’ordinateur exécute nos commandes. Les OP_CODES sont utilisés à cette fin. Ils sont utilisés pour des fonctions telles que les mathématiques, les boucles, les appels de fonctions, etc…..
En d’autres termes, le Bitcoin Script est un ensemble d’instructions qui enregistre chaque transaction effectuée. Ces instructions précisent comment les utilisateurs peuvent utiliser le réseau et avoir accès aux Bitcoins.
L’objectif de Bitcoin Script est d’offrir un ensemble de paramètres flexibles permettant d’effectuer des transactions en bitcoins de manière simple. C’est précisément pour cette raison que Satoshi Nakamoto a désactivé certaines fonctions lorsqu’il a développé le Bitcoin, notamment la multiplication. C’est pourquoi il s’agit d’un script simple en termes de programmation.
Cette langue décide si une opération peut être effectuée ou non sur le réseau. En d’autres termes, il décide si la transaction est autorisée à transférer des fonds. Le Bitcoin Script apporte la nature programmable du Bitcoin. Grâce au Bitcoin Script, nous pouvons faire en sorte qu’une transaction n’ait lieu que si certaines conditions sont remplies. Des propriétés de ce type ne se trouvent que dans les crypto-monnaies. Cela les différencie de la monnaie numérique d’aujourd’hui et surtout de la monnaie papier.
Ce programme est une évolution qui permet à l’argent d’agir de manière indépendante et décentralisée en fonction de la programmation qui y est mise en œuvre. Mais le script Bitcoin ne permet pas seulement les transactions, il empêche également la création d’erreurs dans le système et évite l’utilisation d’opérations complexes. Ce script convertit les transactions en opérations faciles à calculer et, comme nous l’avons déjà mentionné, il ne permet pas les boucles infinies qui ralentissent le réseau.
Parmi les scripts les plus utilisés aujourd’hui sur le réseau figure le script P2PKH. Les scripts sont indispensables pour effectuer tout type d’opération sur Bitcoin. Dans ce cas, chaque action est exécutée par un script spécifique qui détermine ce qui doit être fait. Rien ne se passera dans cette opération qui ne soit pas dicté par un Bitcoin Script.
Un script standard se compose d’une structure en deux parties, le ScriptPubKey et le ScriptSig. Ce type de script est la manière la plus courante d’effectuer une transaction BTC.
Le ScriptPubKey pourrait être :
15higMjoCCNXSA95xZbJUdPvXNmkAduhCA
Et le ScriptSig serait un ensemble de chiffres et de lettres semblables à ce qui suit :
760402203f004eeed0cef2715643e2f25a27a28f3c578e94c7f0
f6a4df104e7d163f7f8f022100b8b248c1cfd8b55a0365107a9511d
759b7544d979dd152a955c867epect0ef79702
Au premier abord, nous ne voyons que la difficulté d’un mélange de chiffres et de lettres impossible à comprendre, mais il s’agit en réalité de la couche derrière laquelle se cache un système totalement simple.
Dans le scriptPubKey, nous voyons les actions à effectuer dans la transaction et dans le ScriptSig, nous voyons la clé publique et la signature qui permettront de vérifier l’authenticité de la transaction. C’est ainsi que le script Bitcoin garantit que l’utilisateur qui envoie la transaction a accès aux fonds et peut les déplacer.
Tout ceci implique les OP_CODES mentionnés ci-dessus. Il s’agit de codes d’opération qui représentent une partie d’une instruction linguistique qui spécifie l’opération à effectuer.
En outre, les OP_CODE créent des structures avancées et programment des opérations au sein de la blockchain. Chaque OP_CODE a une tâche différente. Certains effectuent la modification des entrées, d’autres la vérification des données et s’assurent que les données sont correctes et valides, et d’autres encore la duplication des éléments. Chaque OP_CODE joue un rôle important dans le fonctionnement du Bitcoin Script.
Pour exécuter un script, la première étape consiste à dupliquer la clé publique du propriétaire des fonds concernés par la transaction. Cette clé est ensuite soumise à un processus de hachage où le hachage SHA-256 est appliqué. La combinaison obtenue est ensuite hachée avec le hachage RIPEMD-160.
Une fois ce dernier hachage appliqué, le résultat des hachages est comparé au hachage trouvé dans la clé publique de la scriptPubKey pour vérifier qu’il s’agit de la même clé et qu’elle est vérifiée comme valide. Une fois que le script a été vérifié comme correspondant, il est exécuté et passe au CHECKSIG où la signature est vérifiée par la clé publique.
Langage de contrat intelligent
Il est courant que les utilisateurs pensent que Bitcoin est incapable de créer des contrats intelligents. Bitcoin Script est le langage de smart contract de Bitcoin, qui permet de créer des contrats intelligents. Il convient de noter que les capacités des contrats intelligents de Bitcoin sont limitées par rapport à celles d’Ethereum, mais que le réseau Bitcoin dispose de cette capacité.
Nous savons déjà que Bitcoin Script ne partage pas toutes les capacités d’une machine de Turing complète, il ne permet donc pas les boucles et grâce à cela, nous pouvons déterminer quand un programme se terminera et comment il se terminera. Dans Bitcoin Script, il n’est pas possible de créer des scripts qui s’exécutent éternellement, tout comme il est impossible pour le langage de bloquer des programmes ou leur exécuteur.
Ces limitations ralentissent les smarts contracts du bitcoin par rapport à ceux d’Ethereum, mais assurent une plus grande sécurité au réseau.
Le langage de script Bitcoin présente des caractéristiques qui le différencient des autres langages. Nous en verrons quelques-uns ci-dessous.