Définition
Bitcoin Script est un langage de programmation à pile, non Turing-complet, utilisé pour définir les conditions de dépense des transactions Bitcoin . Ce système de script simple et puissant est intégré à chaque sortie (script de verrouillage ou scriptPubKey) et entrée (script de déverrouillage ou scriptSig) d'une transaction Bitcoin, permettant ainsi de programmer les conditions de dépense sans exposer le réseau Bitcoin aux risques d'une plateforme de contrats intelligents Turing-complète. Bitcoin Script prend en charge les portefeuilles multi-signatures , les transactions à durée de vie limitée, les contrats verrouillés par hachage, les canaux de paiement et les échanges atomiques, le tout sans nécessiter de blockchain à usage général.
Origine & Histoire
| Date | Espaces |
| 2008 | Satoshi Nakamoto conçoit Bitcoin Script dans le cadre de la conception du livre blanc de Bitcoin |
| 2009 | Script Bitcoin déployé dans le bloc de genèse Bitcoin ; Pay-to-Public-Key (P2PK) est le premier type de script. |
| 2012 | BIP 16 : Introduction du Pay-to-Script-Hash (P2SH), permettant l’utilisation de scripts de rachat complexes. |
| 2015 | La fonctionnalité CHECKLOCKTIMEVERIFY (CLTV) a été ajoutée pour permettre le verrouillage temporel absolu des transactions. |
| 2016 | L'option CHECKSEQUENCEVERIFY (CSV) a été ajoutée pour activer les verrous temporels relatifs pour les canaux de paiement. |
| 2017 | SegWit introduit Pay-to-Witness-Public-Key-Hash (P2WPKH) et P2WSH |
| 2021 | La mise à jour de Taproot (BIP 340/341/342) introduit les signatures Schnorr et MAST via Tapscript. |
| 2023 | Les ordinaux Bitcoin utilisent un script pour inscrire des données dans les données témoins. |
| 2023 | Le débat sur la relance de la BIP 347 (OP_CAT) s'intensifie en vue d'éventuelles extensions de script. |
« Bitcoin Script est volontairement limité – et c’est une fonctionnalité, pas un bug. La simplicité est gage de sécurité. » – Greg Maxwell, développeur de Bitcoin Core
Fonctionnement
EXÉCUTION DU SCRIPT DE TRANSACTION BITCOIN ═══════════════════════════════════════════════════════════════════════════════ SCRIPT DE VERROUILLAGE (scriptPubKey) — sur la sortie UTXO : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG (P2PKH standard — Payer au hachage de clé publique)
SCRIPT DE DÉVERROUILLAGE (scriptSig) — fourni par le dépensier :
EXÉCUTION (basée sur la pile) : La pile est initialement vide.
- Pousser → Pile : [signature]
- Pousser → Pile : [signature, clé publique]
- OP_DUP : haut dupliqué → Pile : [sig, pubKey, pubKey]
- OP_HASH160 : hachage supérieur → Pile : [sig, pubKey, pubKeyHash]
- Pousser → Pile : [signature, clé publique, hachage de clé publique, attendu]
- OP_EQUALVERIFY : comparer → Pile : [signature, clé publique] (si égal)
- OP_CHECKSIG : vérification de la signature → Pile : [TRUE]
Résultat : VRAI = la transaction est valide et UTXO est dépensé
TYPES DE SCRIPTS : P2PK → Paiement à la clé publique (hérité) P2PKH → Paiement au hachage de clé publique (le plus courant) P2SH → Paiement au hachage de script (multi-signatures, complexe) P2WPKH → SegWit natif (bech32) P2TR → Paiement à Taproot (le plus efficace/privé) ══════════════════════════════════════════════════════
| Type de script | Format d'adresse | Case Study | Politique de confidentialité |
| P2PK | (pas d'adresse standard) | Bitcoin original, Pièces Satoshi | Low |
| P2PKH | 1… (Base58) | paiements standard à signature unique | Low |
| P2SH | 3… (Base58) | Scripts complexes à signatures multiples | Moyenne |
| P2WPKH | bc1q… (beck32) | SegWit natif, frais réduits | Moyenne |
| P2WSH | bc1q… (beck32) | Scripts SegWit natifs | Moyenne |
| P2TR | bc1p… (beck32m) | Taproot, Tapscript, Ordinaux | Haute |
En termes simples
- Serrure et cléChaque sortie Bitcoin possède un verrou (script de verrouillage) — pour la dépenser, vous devez fournir la clé correcte (script de déverrouillage) qui satisfait aux conditions.
- Machine à empilerLe script s'exécute en empilant des valeurs et en exécutant des opérations ; il est simple, prévisible et délibérément non Turing-complet pour éviter les boucles infinies.
- Exemple multi-signatureUn script multisig 2 sur 3 nécessite 2 des 3 signatures de clés privées désignées pour débloquer les fonds — utilisé pour les trésoreries d'équipe et les portefeuilles sécurisés.
- Confidentialité TaprootTaproot crée des systèmes multi-signatures complexes et scripts de contrats intelligents Elles sont identiques aux transactions simples à signature unique sur la blockchain, ce qui améliore la confidentialité.
- Limites délibéréesContrairement à Solidity d'Ethereum, Bitcoin Script ne peut pas accéder à des données externes, effectuer de boucles ou appeler d'autres contrats, ce qui le rend prévisible et sécurisé.
Exemples du monde réel
| Scénario | Type de script | Bénéfice |
| portefeuille chaud d'échange | P2SH 2 sur 3 multisignature | Nécessite 2 des 3 clés pour être utilisées — protège contre le vol d'une seule clé |
| Canal Lightning Network | HTLC (contrat à verrouillage temporel par hachage) | Permet des paiements BTC instantanés hors chaîne |
| Échange atomique BTC↔LTC | HTLC sur les deux chaînes | Échange inter-chaînes sans intermédiaire et en toute confiance |
| Héritage à durée déterminée | VÉRIFIER L'HEURE DE VERROUILLAGE | Les fonds ne seront utilisables qu'après une date précise. |
| Inscription des ordinaux | Données témoins P2TR | Inscription NFT/données dans Taproot Witness |
Avantages
| Avantage | Détails |
| Sécurité | La conception incomplète de Turing empêche les vecteurs d'attaque complexes possibles dans les contrats intelligents. |
| Prévisibilité | Chaque script s'exécute de manière déterministe avec un calcul limité. |
| Expressivité | Permet la prise en charge de plusieurs signatures, des verrous temporels et des HTLC, suffisante pour le réseau Lightning. |
| Efficacité | Les scripts sont compacts, ce qui minimise les données de transaction et les frais. |
| Confidentialité (Taproot) | Des conditions de dépenses complexes, indiscernables de simples paiements |
Inconvénients et risques
| Analyse | Détails |
| Fonctionnalité limitée | Impossible de mettre en œuvre des solutions complexes Défi, oracles, ou contrats intelligents arbitraires |
| Complexité du script | Les scripts multi-signatures avancés sont complexes à implémenter correctement. |
| Problèmes liés aux formats hérités | Les anciens types de scripts (P2PK, P2PKH) offrent une confidentialité moindre que les alternatives modernes. |
| codes d'opération désactivés | Plusieurs opcodes puissants (OP_CAT, OP_CHECKSIGFROMSTACK) ont été désactivés pour des raisons de sécurité. |
| risques liés aux bogues de script | Des erreurs dans les scripts personnalisés peuvent bloquer définitivement des fonds. |
Conseils de gestion des risques :
- Testez toujours les implémentations de scripts personnalisés sur le réseau de test avant le réseau principal.
- Utilisez les adresses P2TR (Taproot) pour une confidentialité optimale et une compatibilité future.
- Pour les portefeuilles multi-signatures, utilisez des implémentations établies (Bitcoin Core, Sparrow Wallet) plutôt que des scripts personnalisés.
- Stockez vos scripts de rachat (P2SH) en toute sécurité — vous en avez besoin pour dépenser des fonds
QFP
Q : Pourquoi Bitcoin Script n'est-il pas Turing-complet ?
A : La complétude de Turing autorise les boucles infinies, ce qui est dangereux dans une blockchain où tous les nœuds doivent exécuter chaque script. L'incomplétude délibérée de Bitcoin Script garantit que les scripts se terminent de manière prévisible, empêchant ainsi les attaques par déni de service et permettant une vérification formelle des scripts.
Q : Qu'est-ce qu'un HTLC dans Bitcoin Script ?
A : Un contrat à verrouillage temporel par hachage (HTLC) est un script qui permet de réclamer un paiement en révélant un secret (préimage) dont le hachage correspond à une valeur prédéterminée, ou de le rembourser à l'expéditeur après expiration du délai. Les HTLC constituent l'élément fondamental du réseau Lightning.
Q : Comment Taproot améliore-t-il Bitcoin Script ?
A: Taproot (BIP 340/341/342) introduit les signatures Schnorr permettant l'agrégation de clés, MAST (Merklized Abstract Syntax Trees) via Tapscript permettant des scripts complexes tout en ne révélant que les branches exécutées, et rendant toutes les sorties Taproot identiques de l'extérieur — améliorant considérablement la confidentialité et l'efficacité.
Conseil UPay : Lors de la configuration d’un portefeuille Bitcoin, utilisez les adresses Taproot (bc1p…) pour un équilibre optimal entre confidentialité, efficacité et compatibilité future. La plupart des portefeuilles modernes, comme Sparrow et Phoenix, prennent en charge Taproot nativement.
Avertissement : Ce contenu est fourni à des fins éducatives uniquement et ne constitue pas un conseil financier ou technique.
UPay — Rendre la crypto encyclopédique









