Appendix A: Opérateurs, constantes et symboles du langage de script de transaction
Note
|
Tableaux et descriptions provenant de https://en.bitcoin.it/wiki/Script. |
Pousser la valeur sur la pile affiche les opérateurs pour pousser les valeurs sur la pile.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_0 ou OP_FALSE |
0x00 |
Un tableau vide est poussé sur la pile |
1 à 75 |
0x01 à 0x4b |
Poussez les N octets suivants sur la pile, où N est compris entre 1 et 75 octets |
OP_PUSHDATA1 |
0x4c |
L’octet de script suivant contient N, poussez les N octets suivants sur la pile |
OP_PUSHDATA2 |
0x4d |
Les deux octets de script suivants contiennent N, poussez les N octets suivants sur la pile |
OP_PUSHDATA4 |
0x4e |
Les quatre octets de script suivants contiennent N, poussez les N octets suivants sur la pile |
OP_1NEGATE |
0x4f |
Poussez la valeur "–1" sur la pile |
OP_RESERVED |
0x50 |
Interruption - Transaction non valide à moins qu’elle ne se trouve dans une clause OP_IF non exécutée |
OP_1 ou OP_TRUE |
0x51 |
Poussez la valeur "1" sur la pile |
OP_2 à OP_16 |
0x52 à 0x60 |
Pour OP_N, poussez la valeur "N" sur la pile, par exemple, OP_2 pousse "2" |
Contrôle de flux conditionnel affiche les opérateurs de contrôle de flux conditionnel.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_NOP |
0x61 |
Ne fais rien |
OP_VER |
0x62 |
Interrompt la transaction non valide à moins qu’elle ne se trouve dans une clause OP_IF non exécutée |
OP_IF |
0x63 |
Exécute les instructions suivantes si le haut de la pile n’est pas 0 |
OP_NOTIF |
0x64 |
Exécute les instructions suivantes si le haut de la pile est 0 |
OP_VERIF |
0x65 |
Interrompt la transaction invalide |
OP_VERNOTIF |
0x66 |
Interrompt la transaction invalide |
OP_ELSE |
0x67 |
Exécuter uniquement si les instructions précédentes n’ont pas été exécutées |
OP_ENDIF |
0x68 |
Terminer le bloc OP_IF, OP_NOTIF, OP_ELSE |
OP_VERIFY |
0x69 |
Vérifie le haut de la pile, arrête et invalide la transaction si elle n’est pas VRAIE |
OP_RETURN |
0x6a |
Arrête et invalide la transaction |
Opérations de verrou temporel affiche les opérateurs utilisés pour les verrous temporels.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_CHECKLOCKTIMEVERIFY (précédemment OP_NOP2) |
0xb1 |
Marque la transaction comme non valide si l’élément supérieur de la pile est supérieur au champ nLockTime de la transaction, sinon l’évaluation du script continue comme si un OP_NOP avait été exécuté. La transaction est également invalide si 1. la pile est vide ; ou 2. l’élément de la pile supérieure est négatif ; ou 3. l’élément de la pile supérieure est supérieur ou égal à 500000000 alors que le champ nLockTime de la transaction est inférieur à 500000000, ou vice versa ; ou 4. le champ nSequence de l’entrée est égal à 0xffffffff. La sémantique précise est décrite dans la BIP-65 |
OP_CHECKSEQUENCEVERIFY (précédemment OP_NOP3) |
0xb2 |
Marque la transaction comme non valide si le temps de verrouillage relatif de l’entrée (appliqué par BIP 0068 avec nSequence) n’est pas égal ou supérieur à la valeur de l’élément de la pile supérieure. La sémantique précise est décrite dans BIP-112 |
Opérations de pile montre les opérateurs utilisés pour manipuler la pile.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_TOALTSTACK |
0x6b |
Extrait l’élément supérieur de la pile et le pousse vers une autre pile |
OP_FROMALTSTACK |
0x6c |
Extrait l’élément supérieur de la pile alternative et le pousse pour empiler |
OP_2DROP |
0x6d |
Extrait top deux éléments de la pile |
OP_2DUP |
0x6e |
Dupliquer les deux éléments du haut de la pile |
OP_3DUP |
0x6f |
Dupliquer les trois premiers éléments de la pile |
OP_2OVER |
0x70 |
Copie les troisième et quatrième éléments de la pile vers le haut |
OP_2ROT |
0x71 |
Déplace les cinquième et sixième éléments de la pile vers le haut |
OP_2SWAP |
0x72 |
Échange les deux paires d’objets dans la pile |
OP_IFDUP |
0x73 |
Duplique l’élément du haut de la pile s’il n’est pas 0 |
OP_DEPTH |
0x74 |
Compte les éléments sur la pile et pousse le décompte résultant |
OP_DROP |
0x75 |
Extrait l’élément du haut de la pile |
OP_DUP |
0x76 |
Duplique l’élément supérieur de la pile |
OP_NIP |
0x77 |
Extrait le deuxième élément de la pile |
OP_OVER |
0x78 |
Copie le deuxième élément de la pile et le pousse vers le haut |
OP_PICK |
0x79 |
Extrait la valeur N du haut, puis copie le Nième élément en haut de la pile |
OP_ROLL |
0x7a |
Extrait la valeur N du haut, puis déplacer le Nième élément vers le haut de la pile |
OP_ROT |
0x7b |
Alterne les trois premiers éléments de la pile |
OP_SWAP |
0x7c |
Échange les deux premiers éléments de la pile |
OP_TUCK |
0x7d |
Copie l’élément supérieur et l’insère entre l’élément supérieur et le deuxième élément |
Opérations d’épissure de chaînes de caractère affiche les opérateurs de chaîne.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_CAT |
0x7e |
Désactivé (concatène les deux premiers éléments) |
OP_SUBSTR |
0x7f |
Désactivé (renvoie la sous-chaîne) |
OP_LEFT |
0x80 |
Désactivé (renvoie la sous-chaîne gauche) |
OP_RIGHT |
0x81 |
Désactivé (renvoie la sous-chaîne droite) |
OP_SIZE |
0x82 |
Calculer la longueur de la chaîne de l’élément supérieur et pousser le résultat |
Arithmétique binaire et conditionnelles affiche les opérateurs logiques arithmétiques et booléens binaires.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_INVERT |
0x83 |
Désactivé (Inverser les bits de l’élément supérieur) |
OP_AND |
0x84 |
Désactivé (booléen ET des deux premiers éléments) |
OP_OR |
0x85 |
Désactivé (OU booléen des deux éléments supérieurs) |
OP_XOR |
0x86 |
Désactivé (XOR booléen des deux principaux éléments) |
OP_EQUAL |
0x87 |
Pousse TRUE (1) si les deux premiers éléments sont exactement égaux, pousse FALSE (0) sinon |
OP_EQUALVERIFY |
0x88 |
Identique à OP_EQUAL, mais exécute OP_VERIFY après pour arrêter si ce n’est pas TRUE |
OP_RESERVED1 |
0x89 |
Interruption - Transaction non valide à moins qu’elle ne se trouve dans une clause OP_IF non exécutée |
OP_RESERVED2 |
0x8a |
Interruption - Transaction non valide à moins qu’elle ne se trouve dans une clause OP_IF non exécutée |
Opérateurs numériques affiche les opérateurs numériques (arithmétiques).
Symbole | Valeur (hex) | La description |
---|---|---|
OP_1ADD |
0x8b |
Ajouter 1 à l’élément au dessus de la pile |
OP_1SUB |
0x8c |
Soustraire 1 de l’élément au dessus de la pile |
OP_2MUL |
0x8d |
Désactivé (multiplier l’élément au dessus de la pile par 2) |
OP_2DIV |
0x8e |
Désactivé (diviser l’élément au dessus de la pile par 2) |
OP_NEGATE |
0x8f |
Inverse le signe de l’élément au dessus de la pile |
OP_ABS |
0x90 |
Change le signe de l’élément au dessus de la pile en positif |
OP_NOT |
0x91 |
Retourne l’élément du dessus si l’élément est 0 ou 1 booléen, sinon retourne 0 |
OP_0NOTEQUAL |
0x92 |
Si l’élément supérieur est 0, renvoie 0, sinon renvoie 1 |
OP_ADD |
0x93 |
Sort les deux éléments au dessus de la pile, les additionnes et pousse le résultat |
OP_SUB |
0x94 |
Sort les deux éléments au dessus de la pile, soustrait le premier du second et pousse le résultat |
OP_MUL |
0x95 |
Désactivé (multiplie les deux premiers éléments) |
OP_DIV |
0x96 |
Désactivé (divise le deuxième élément par le premier élément) |
OP_MOD |
0x97 |
Désactivé (le reste divise le deuxième élément par le premier élément) |
OP_LSHIFT |
0x98 |
Désactivé (décale le deuxième élément vers la gauche du nombre de bits du premier élément) |
OP_RSHIFT |
0x99 |
Désactivé (décale le deuxième élément vers la droite du nombre de bits du premier élément) |
OP_BOLAND |
0x9a |
ET booléen des deux premiers éléments |
OP_BOOLOR |
0x9b |
OU booléen des deux premiers éléments |
OP_NUMEQUAL |
0x9c |
Renvoie TRUE si les deux premiers éléments sont des nombres égaux |
OP_NUMEQUALVERIFY |
0x9d |
Identique à NUMEQUAL, puis OP_VERIFY pour arrêter si ce n’est pas TRUE |
OP_NUMNOTEQUAL |
0x9e |
Renvoie TRUE si les deux premiers éléments ne sont pas des nombres égaux |
OP_LESSTHAN |
0x9f |
Renvoie TRUE si le deuxième élément est inférieur à l’élément supérieur |
OP_GREATERTHAN |
0xa0 |
Renvoie TRUE si le deuxième élément est supérieur à l’élément supérieur |
OP_LESSTHANOREQUAL |
0xa1 |
Renvoie TRUE si le deuxième élément est inférieur ou égal à l’élément supérieur |
OP_GREATERTHANOREQUAL |
0xa2 |
Renvoie TRUE si le deuxième élément est supérieur ou égal à l’élément supérieur |
OP_MIN |
0xa3 |
Renvoie le plus petit des deux premiers éléments |
OP_MAX |
0xa4 |
Renvoie le plus grand des deux premiers éléments |
OP_WITHIN |
0xa5 |
Renvoie TRUE si le troisième élément est compris entre le deuxième élément (ou égal) et le premier élément |
Opérations cryptographiques et de hachage affiche les opérateurs de fonction cryptographique.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_RIPEMD160 |
0xa6 |
Renvoye le hachage RIPEMD160 de l’élément supérieur |
OP_SHA1 |
0xa7 |
Renvoie le hachage SHA1 de l’élément supérieur |
OP_SHA256 |
0xa8 |
Renvoie le hachage SHA256 de l’élément supérieur |
OP_HASH160 |
0xa9 |
Renvoie le hachage RIPEMD160(SHA256(x)) de l’élément supérieur |
OP_HASH256 |
0xaa |
Renvoie le hachage SHA256(SHA256(x)) de l’élément supérieur |
OP_CODESEPARATOR |
0xab |
Marque le début des données vérifiées par signature |
OP_CHECKSIG |
0xac |
Sort une clé publique et une signature et valide la signature pour les données hachées de la transaction, renvoie TRUE si cela correspond |
OP_CHECKSIGNVERIFY |
0xad |
Identique à CHECKSIG, puis OP_VERIFY pour arrêter si ce n’est pas TRUE |
OP_CHECKMULTISIG |
0xae |
Exécute CHECKSIG pour chaque paire de signature et de clé publique fournie. Tous doivent correspondre. Un bogue dans la mise en œuvre affiche une valeur supplémentaire, préfixée par OP_0 comme solution de contournement |
OP_CHECKMULTISIGVERIFY |
0xaf |
Identique à CHECKMULTISIG, puis OP_VERIFY pour arrêter si ce n’est pas TRUE |
Non opérateurs affiche les symboles non opérateur.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_NOP1 à OP_NOP10 |
0xb0 à 0xb9 |
Ne fait rien, ignoré |
Codes OP réservés à un usage interne par l’analyseur affiche les codes opérateur réservés à l’analyseur de script interne.
Symbole | Valeur (hex) | La description |
---|---|---|
OP_SMALLDATA |
0xf9 |
Représente un petit champ de données |
OP_SMALLINTEGER |
0xfa |
Représente un petit champ de données entier |
OP_PUBKEYS |
0xfb |
Représente les champs de clé publique |
OP_PUBKEYHASH |
0xfd |
Représente un champ de hachage de clé publique |
OP_PUBKEY |
0xfe |
Représente un champ de clé publique |
OP_INVALIDOPCODE |
0xff |
Représente tout code OP non attribué actuellement |