X-only public keys
Les clés publiques X-only (BIP-340) ne contiennent que la coordonnée x, sans préfixe de parité. Elles font 32 octets et sont utilisées par Schnorr et Taproot. C'est un gain d'espace dans les transactions. Elles supposent une convention sur le signe de y.
Définition
Une X-only public key est une clé publique de la courbe secp256k1 représentée uniquement par sa coordonnée x, sur 32 octets. C'est le format introduit par le BIP-340 pour les signatures Schnorr, et adopté massivement par Taproot (BIP-341) à son activation en novembre 2021.
Rappel sur les pubkeys traditionnelles
Une clé publique secp256k1 est un point (x, y) sur la courbe. Trois formats coexistaient avant Schnorr :
| Format | Taille | Usage |
|---|---|---|
| Non-compressée | 65 bytes | Historique, début Bitcoin |
| Compressée (BIP-66) | 33 bytes | Préfixe 02/03 (parité de y) + x |
| X-only | 32 bytes | Schnorr / Taproot |
Le format compressé utilise un préfixe (02 si y pair, 03 si y impair). Le format X-only supprime ce préfixe et fixe par convention que y est pair.
Pourquoi cette convention
Pour tout x sur la courbe, il existe deux y possibles (un pair, un impair). En signant avec Schnorr, on impose simplement que la clé publique utilisée corresponde au y pair. Si la pubkey générée par dérivation a un y impair, on inverse la clé privée (d' = n - d) pour obtenir une clé équivalente avec y pair. Cela ne change rien à la sécurité, mais économise 1 byte par clé.
Gain pratique
Sur une transaction Taproot type, chaque output (scriptPubKey) contient une X-only pubkey de 32 bytes au lieu de 33. Avec MuSig2 (agrégation de signatures), un multisig N-of-N ressemble à une simple X-only pubkey : impossible à distinguer d'un single-sig pour un observateur externe. Énorme gain de confidentialité.
Implications pour les développeurs
- Lors de l'agrégation MuSig2 ou de tweak BIP-32, vérifier la parité de y et negate si nécessaire.
- Les libs comme
secp256k1(Pieter Wuille) gèrent automatiquement la conversion. - Les pubkeys X-only sont incompatibles avec ECDSA classique sans normalisation.
À retenir
Les X-only pubkeys sont une micro-optimisation aux conséquences macro : moins de bytes, plus de confidentialité, et l'unification des single-sig et multi-sig à l'oeil nu. Elles sont le standard de toute l'écriture Taproot moderne.
Termes lies
- Schnorr (signature)Schnorr est un schéma de signature numérique introduit dans Bitcoin par le soft fork Taproot (2021). Il offre la linéarité, qui permet l'agrégation des signatures (MuSig). Plus simple, plus rapide et plus sûr que ECDSA. Il ouvre la voie à de nouveaux usages comme MuSig2, FROST et Tapscript.
- TaprootTaproot est le soft fork activé en novembre 2021 (BIP-340/341/342). Il introduit signatures Schnorr, Tapscript et MAST. Il rend une dépense par clé indistinguable d'une dépense par script complexe. Plus efficace, plus privé, plus extensible.
- BIP-340BIP-340 spécifie les signatures Schnorr sur secp256k1. Pierre angulaire de Taproot. Format de 64 octets (32 R + 32 s) avec X-only public keys.
- Clé publique compresséeUne clé publique compressée stocke uniquement la coordonnée x et un préfixe indiquant la parité de y. Elle fait 33 octets au lieu de 65. Standard depuis 2014, elle réduit la taille des transactions. Toutes les clés modernes sont compressées.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.