Script Bitcoin

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

DateEspaces
2008Satoshi Nakamoto conçoit Bitcoin Script dans le cadre de la conception du livre blanc de Bitcoin
2009Script Bitcoin déployé dans le bloc de genèse Bitcoin ; Pay-to-Public-Key (P2PK) est le premier type de script.
2012BIP 16 : Introduction du Pay-to-Script-Hash (P2SH), permettant l’utilisation de scripts de rachat complexes.
2015La fonctionnalité CHECKLOCKTIMEVERIFY (CLTV) a été ajoutée pour permettre le verrouillage temporel absolu des transactions.
2016L'option CHECKSEQUENCEVERIFY (CSV) a été ajoutée pour activer les verrous temporels relatifs pour les canaux de paiement.
2017SegWit introduit Pay-to-Witness-Public-Key-Hash (P2WPKH) et P2WSH
2021La mise à jour de Taproot (BIP 340/341/342) introduit les signatures Schnorr et MAST via Tapscript.
2023Les ordinaux Bitcoin utilisent un script pour inscrire des données dans les données témoins.
2023Le 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.

  1. Pousser → Pile : [signature]
  2. Pousser → Pile : [signature, clé publique]
  3. OP_DUP : haut dupliqué → Pile : [sig, pubKey, pubKey]
  4. OP_HASH160 : hachage supérieur → Pile : [sig, pubKey, pubKeyHash]
  5. Pousser → Pile : [signature, clé publique, hachage de clé publique, attendu]
  6. OP_EQUALVERIFY : comparer → Pile : [signature, clé publique] (si égal)
  7. 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 scriptFormat d'adresseCase StudyPolitique de confidentialité
P2PK(pas d'adresse standard)Bitcoin original, Pièces SatoshiLow
P2PKH1… (Base58)paiements standard à signature uniqueLow
P2SH3… (Base58)Scripts complexes à signatures multiplesMoyenne
P2WPKHbc1q… (beck32)SegWit natif, frais réduitsMoyenne
P2WSHbc1q… (beck32)Scripts SegWit natifsMoyenne
P2TRbc1p… (beck32m)Taproot, Tapscript, OrdinauxHaute

 En termes simples

  1. 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.
  2. 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.
  3. 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.
  4. 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é.
  5. 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énarioType de scriptBénéfice
portefeuille chaud d'échangeP2SH 2 sur 3 multisignatureNécessite 2 des 3 clés pour être utilisées — protège contre le vol d'une seule clé
Canal Lightning NetworkHTLC (contrat à verrouillage temporel par hachage)Permet des paiements BTC instantanés hors chaîne
Échange atomique BTC↔LTCHTLC sur les deux chaînesÉchange inter-chaînes sans intermédiaire et en toute confiance
Héritage à durée déterminéeVÉRIFIER L'HEURE DE VERROUILLAGELes fonds ne seront utilisables qu'après une date précise.
Inscription des ordinauxDonnées témoins P2TRInscription NFT/données dans Taproot Witness

 Avantages

AvantageDé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

AnalyseDétails
Fonctionnalité limitéeImpossible de mettre en œuvre des solutions complexes Défi, oracles, ou contrats intelligents arbitraires
Complexité du scriptLes scripts multi-signatures avancés sont complexes à implémenter correctement.
Problèmes liés aux formats héritésLes anciens types de scripts (P2PK, P2PKH) offrent une confidentialité moindre que les alternatives modernes.
codes d'opération désactivésPlusieurs opcodes puissants (OP_CAT, OP_CHECKSIGFROMSTACK) ont été désactivés pour des raisons de sécurité.
risques liés aux bogues de scriptDes 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

Actualités et Événements