Aller au contenu principal
Script

ScriptPubKey

Le scriptPubKey est le script de verrouillage d'une UTXO. Il définit les conditions à satisfaire pour la dépenser (signature, hash, etc.). Tout output Bitcoin a un scriptPubKey. C'est la pièce centrale du modèle UTXO.

Définition

Le scriptPubKey (parfois noté "locking script") est le programme Bitcoin Script attaché à chaque output d'une transaction. Il encode les conditions cryptographiques que devra satisfaire toute future tentative de dépense de cet output. Tant que ces conditions ne sont pas remplies, les bitcoins de l'UTXO restent verrouillés.

Place dans l'output

Chaque output d'une transaction Bitcoin contient exactement deux champs :

[8 octets]    value (montant en satoshis)
[varint+N]    scriptPubKey (script de verrouillage)

Le scriptPubKey est donc la "serrure", la value est ce qui est dans le coffre, et le futur scriptSig (ou scriptWitness) sera la "clé".

Templates standards

Bitcoin Core reconnaît plusieurs formats standards :

| Type | scriptPubKey | Adresse | |------|--------------|---------| | P2PK | <pubkey> OP_CHECKSIG | Pas d'adresse (obsolète) | | P2PKH | OP_DUP OP_HASH160 <hash160> OP_EQUALVERIFY OP_CHECKSIG | 1... | | P2SH | OP_HASH160 <hash160> OP_EQUAL | 3... | | P2WPKH | OP_0 <hash160> (20 octets) | bc1q... (bech32) | | P2WSH | OP_0 <sha256> (32 octets) | bc1q... (bech32) | | P2TR | OP_1 <pubkey x-only> (32 octets) | bc1p... (bech32m) | | OP_RETURN | OP_RETURN <data> (≤ 80 octets) | Pas d'adresse |

Comment c'est utilisé

Lorsqu'une nouvelle transaction veut dépenser un output, le nœud :

  1. Récupère le scriptPubKey de l'output référencé.
  2. Concatène avec le scriptSig ou exécute la logique SegWit/Taproot équivalente.
  3. Évalue : si la pile finit avec "true" (et selon les règles de validation), la dépense est valide.

Évolution des formats

  • 2009 : P2PK majoritaire au début (les premières transactions de Satoshi).
  • 2010-2017 : P2PKH dominant.
  • 2012 : Apparition de P2SH (BIP-16).
  • 2017 : SegWit, format Bech32, P2WPKH et P2WSH.
  • 2021 : Taproot, format Bech32m, P2TR.

Aujourd'hui (2025-2026), la majorité des nouveaux paiements se fait en P2WPKH et P2TR. Les anciens types subsistent pour la rétrocompatibilité.

Relation avec les adresses

Une adresse Bitcoin est simplement un encodage humain d'un scriptPubKey :

bc1q...  ↔  OP_0 <hash160 de la pubkey>

Décoder une adresse, c'est reconstituer le scriptPubKey qu'elle encode. Inversement, tout scriptPubKey "standard" peut être encodé en adresse, ce qui n'est pas le cas des scripts custom.

À retenir

Le scriptPubKey est la "définition de propriété" sur Bitcoin. Chaque satoshi en circulation est verrouillé par exactement un scriptPubKey, et cette structure modulaire est ce qui permet à Bitcoin d'évoluer (multisig, SegWit, Taproot) sans casser le modèle UTXO.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.