BIP-322
BIP-322 standardise la signature de messages avec des wallets SegWit/Taproot. Permet de prouver la propriété d'une adresse sans dépenser. Utile pour les preuves de réserves.
Le besoin
Depuis les premiers temps de Bitcoin, on peut signer un message avec une clé pour prouver la propriété d'une adresse legacy (P2PKH). Mais l'ancien format (Sign Message / Verify Message) ne fonctionne que pour les adresses 1.... Comment prouver qu'on possède une adresse SegWit bc1q... ou Taproot bc1p... ? Comment signer pour une multisig ? BIP-322, rédigé par Karl-Johan Alm en septembre 2018, généralise la signature à tous les types de scripts.
Le principe : un PSBT déguisé
L'idée de BIP-322 est de construire deux transactions virtuelles :
to_spend: une transaction fictive qui envoie 0 sat à l'adresse à prouver, avec un message dansscriptSig.to_sign: une transaction qui dépenseto_spendet qu'on signe normalement.
La signature obtenue est donc une signature Bitcoin valide au sens du protocole, ce qui résout tous les cas (P2PKH, P2WPKH, P2SH, multisig, Taproot, scripts custom). On peut la vérifier avec n'importe quel validateur de transaction.
Trois variantes
| Format | Usage | |--------|-------| | Legacy | Compatibilité avec l'ancien Sign Message | | Simple | Cas standard, signature d'un seul input | | Full | Avec entrées additionnelles (proof of funds) |
Le format Full permet de prouver non seulement la propriété d'une adresse, mais aussi de prouver qu'on contrôle un certain montant en incluant les UTXO réels dans la signature.
Cas d'usage majeurs
- Proof of Reserves : un exchange prouve cryptographiquement qu'il détient X bitcoins sans révéler ses clés.
- Authentification web3-style : login Bitcoin (« Sign in with Bitcoin »).
- Vérification de propriétés marchand→client.
- Travel Rule : prouver qu'une adresse self-custody est bien celle du client.
- DAOs Bitcoin : votes pondérés par UTXO contrôlés.
Adoption
BIP-322 progresse : intégration dans Sparrow Wallet, Bitcoin Core (depuis 25.0), Trezor, Coldcard, BitBox02, Electrum. Les exchanges (Kraken, OKX) l'utilisent pour les Proof of Reserves trimestrielles. Côté Ledger, le support reste partiel.
À retenir
BIP-322 modernise une fonctionnalité que beaucoup pensaient évidente : signer un message avec son wallet. C'est désormais le standard pour toute opération demandant une preuve de propriété cryptographique, du login à la preuve de réserves complète.
Termes lies
- Preuve de réservesUne preuve de réserves est un mécanisme cryptographique permettant à un dépositaire de prouver qu'il détient bien les fonds de ses clients. Elle utilise notamment des arbres de Merkle. Très demandée depuis l'effondrement de FTX. Elle limite mais n'élimine pas le risque de contrepartie.
- Signature numériqueUne signature numérique prouve mathématiquement qu'un message a été produit par le détenteur d'une clé privée, sans la révéler. Bitcoin utilise ECDSA (et Schnorr depuis Taproot). C'est la pièce maîtresse de la sécurité des transactions. Sans signature valide, un input ne peut pas être dépensé.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.