Comment fonctionne le langage de script de Bitcoin ?

« Toute transaction est constituée d’entrées et de sorties. Sauf dans le cas de la génération de nouveaux bitcoins, chaque entrée est la sortie d’une autre transaction. Dans Bitcoin, on porte donc attention aux sorties transactionnelles, et en particulier aux sorties transactionnelles non dépensées, presque toujours désignées sous le nom d’UTXO, abréviation de l’anglais Unspent Transaction Output.

Les UTXO représentent de facto les bitcoins en circulation : un bitcoin n’existe que parce qu’il est le résultat d’une transaction et qu’il n’est inclus dans aucune autre transaction. Même les bitcoins nouvellement créés résultent d’une transaction, appelée « coinbase », que le mineur construit pour se récompenser.

Lors d’une transaction Bitcoin, les UTXO en entrée sont déverrouillés et de nouveaux UTXO sont verrouillés. Bien évidemment, le montant en sortie ne peut pas excéder le montant en entrée. Le verrouillage et déverrouillage des UTXO se fait par l’intermédiaire de scripts dont l’exécution se fait lors de la validation par les nœuds du réseau. La transaction n’est réalisée que lorsque les scripts sont valides aux yeux du réseau : si l’un d’entre eux est invalide, la transaction est rejetée.

Dans le cas d’une transaction entre adresses simples, les scripts de déverrouillage consistent à vérifier les signatures qui correspondent aux adresses en entrée. Les scripts de verrouillage consistent quant à eux à verrouiller les fonds aux adresses de sortie.

Le langage de script de Bitcoin fonctionne avec une pile (stack), à la manière de certains langages des années 60 comme Forth. Attention : on ne parle pas ici d’une pile électrique, mais d’une pile de données ! Les données sont placées sur la pile et des codes opératoires (opcodes) agissent sur ces données. Le langage est riche : il existe plus d’une centaine de codes opératoires, comme l’atteste la page wiki de Script. »

Suite à lire sur cryptoast.fr