Aller au contenu principal
Script

RedeemScript

Le redeemScript est le script complet d'une dépense P2SH, révélé au moment de dépenser. Son hash figure dans le scriptPubKey. Pour un multisig P2SH classique, c'est ce script qui décrit M-of-N. Sans le redeemScript, impossible de dépenser une UTXO P2SH.

Définition

Le redeemScript est le script de dépense effectif d'une UTXO P2SH (BIP-16, 2012). Lors du paiement vers une adresse P2SH, seul le hash du redeemScript apparaît dans le scriptPubKey sous la forme :

OP_HASH160 <hash160(redeemScript)> OP_EQUAL

Le contenu réel du script — qu'il s'agisse d'un multisig 2-of-3, d'un timelock, d'une condition complexe — n'est révélé que lorsque le propriétaire dépense l'UTXO. Cela permet d'envoyer à un destinataire sans connaître la nature de sa politique de dépense.

Exemple multisig 2-of-3

Le redeemScript classique d'un multisig 2-of-3 ressemble à :

OP_2 <pubkey1> <pubkey2> <pubkey3> OP_3 OP_CHECKMULTISIG

Encodé, il fait environ 105 octets. Son hash160 sur 20 octets devient l'adresse 3.... Au moment de dépenser, le scriptSig doit fournir :

OP_0 <sig1> <sig2> <redeemScript>

Le nœud reconstruit le hash du redeemScript, vérifie l'égalité, puis exécute le redeemScript avec les signatures sur la pile.

P2SH-P2WPKH et P2SH-P2WSH

Pendant la transition vers SegWit (2017-2021), de nombreuses adresses 3... étaient en fait des wrappers SegWit imbriqués dans du P2SH. Le redeemScript devient alors :

| Type | RedeemScript | |------|--------------| | P2SH-P2WPKH | OP_0 <hash160(pubkey)> | | P2SH-P2WSH | OP_0 <sha256(witnessScript)> |

Cela permettait à des wallets ne supportant pas bech32 d'envoyer à du SegWit. Avec Taproot et l'adoption massive de bech32, cette astuce est devenue obsolète.

Importance opérationnelle

Perdre le redeemScript équivaut à perdre les fonds : aucun nœud, aucun outil ne peut le retrouver à partir du hash, par construction (préimage SHA-256 inversée impossible). C'est pourquoi un setup multisig P2SH/P2WSH doit toujours sauvegarder soit le redeemScript, soit l'ensemble des xpubs et le schéma de dépense (wsh(multi(2,xpub1,xpub2,xpub3))).

À retenir

Le redeemScript est la "vraie" politique de dépense cachée derrière une adresse P2SH. C'est un mécanisme d'engagement cryptographique qui a permis à Bitcoin d'introduire le multisig et SegWit sans changer les règles d'envoi.

Termes lies

← Retour au glossaire complet

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