MSTR Cat

Blockchain/Niveau IV · Le protocole en profondeur/4.2 Évolutions du protocole/Leçon 3

Transactions partiellement signées (PSBT)

Le conteneur qui permet à un inconnu de vérifier ce que signe un appareil

MatérielUn portefeuille matériel prenant en charge les PSBTLogiciel Bitcoin Core avec la commande « decodepsbt » disponibleUn ordinateur ou un appareil isolé de tout réseau (air-gapped)

Curiosité

  1. Pourquoi une transaction inachevée a-t-elle besoin de plus de données qu’une transaction terminée ?
  2. Pourquoi chaque portefeuille matériel avait-il jadis besoin de son propre format pour les transactions non signées ?
  3. Comment un utilisateur peut-il ajouter une nouvelle sortie après que le modèle initial a déjà été créé ?

Explorer

  1. Une transaction brute standard est un objet compact et définitif, prêt à être diffusé. Une transaction Bitcoin partiellement signée (PSBT), définie dans le BIP174 en 2017 par Andrew Chow, est différente : c’est un conteneur qui renferme une transaction inachevée ainsi que toutes les métadonnées nécessaires pour la compléter ultérieurement. Elle peut se trouver dans trois états : entièrement construite mais non signée, partiellement signée avec certaines entrées traitées et d’autres en attente, ou entièrement signée et prête à être extraite sous forme hexadécimale brute. Ce format permet à un programme non fiable de générer un modèle qu’un appareil de confiance peut vérifier sans avoir besoin d’accéder au réseau.
  2. Le processus PSBT définit six rôles : Créateur, Metteur à jour, Signataire, Combinateur, Finalisateur et Extracteur (la version 2 en ajoute un septième, le Constructeur). Une fois que le créateur a construit la transaction, le metteur à jour y joint les sorties précédentes dépensées, leurs scripts et les chemins de dérivation des clés, afin que le signataire puisse vérifier exactement ce qu’il approuve, montants et frais compris. Cette inclusion explicite de métadonnées rend le fichier nettement moins compact que la sérialisation standard, mais elle est indispensable, car elle permet aux portefeuilles matériels de vérifier la structure de la transaction sans se connecter à un nœud relié à Internet qui pourrait être compromis ou exécuter un logiciel malveillant.
  3. L’interopérabilité est la principale raison d’être des PSBT. Avant cette norme, les différents logiciels de portefeuille utilisaient des méthodes incompatibles pour faire transiter les données entre un portefeuille chaud (hot wallet) et un dispositif de stockage à froid, ce qui enfermait les utilisateurs chez un fournisseur. Le BIP174 a résolu ce problème en établissant un langage universel ; aujourd’hui, un coordinateur comme Sparrow peut transmettre le même PSBT à des appareils de signature de différents fabricants, par USB, carte SD ou code QR. Le multisig entre fabricants devient ainsi praticable : chaque signataire ajoute sa signature au fichier, et aucune clé privée ne quitte jamais son appareil.
  4. La version 0 de PSBT présente une limitation structurelle rigide : une fois créée, la transaction globale non signée est figée. La version 0 stocke une transaction non signée complète dans un champ global, de sorte qu’aucune entrée ni sortie ne peut être ajoutée après sa création. Cette rigidité signifiait que si quelqu’un commençait à construire une transaction complexe à plusieurs parties et se rendait compte qu’il lui fallait une sortie de rendu de monnaie (change) supplémentaire, il devait abandonner tout le processus et repartir de zéro avec un nouveau modèle.
  5. Le BIP370 introduit la version 2 de PSBT pour résoudre ce problème d’immuabilité. Dans la version 2, toutes les informations relatives à une entrée ou à une sortie donnée sont regroupées dans le champ qui lui est propre, au lieu d’être réparties entre données locales et globales. Les participants peuvent alors ajouter des entrées ou des sorties après la création du PSBT, tant que ses indicateurs « modifiable » le permettent. Cela fluidifie le processus collaboratif : en examinant une seule entrée, on y trouve toutes les données qui s’y rapportent, ce qui simplifie la vérification par les appareils matériels et réduit le risque de désynchronisation d’état.
  6. Les usages pratiques vont de la signature sur portefeuille matériel aux transactions collaboratives comme payjoin et coinjoin, où les participants s’échangent des PSBT jusqu’à ce que tout le monde ait signé. Pour un utilisateur ordinaire, cela signifie qu’il peut créer une transaction sur son téléphone, brancher un portefeuille matériel pour la signer en toute sécurité hors ligne, puis extraire la transaction brute finale pour la diffuser, chaque appareil voyant exactement ce qu’il signe.

Faits clés

  • Le BIP174 définit la version 0 de PSBT, qui exige un champ global de transaction non signée qui ne peut pas être modifié après sa création.
  • Le BIP370 définit la version 2 (PSBTv2), qui permet d’ajouter des entrées et des sorties après la création du PSBT en regroupant les données dans des champs spécifiques.
  • Un PSBT est volontairement moins compact que la sérialisation standard, car il stocke une quantité importante de métadonnées destinées à la vérification par les appareils de signature.
  • Le processus d’origine comporte six rôles : Créateur, Metteur à jour, Signataire, Combinateur, Finalisateur et Extracteur.
  • Les PSBT facilitent l’interopérabilité entre divers logiciels de portefeuille et appareils de signature matériels.
  • Des coordinateurs comme Sparrow et des appareils de signature comme Coldcard échangent des PSBT par fichier ou par code QR.

Exercice neuf, six, trois, un

9RassemblerÉnumérez 9 rôles ou états différents impliqués dans le cycle de vie d’une transaction Bitcoin, de sa création initiale à sa diffusion finale.
6RegrouperRegroupez les 9 en 6 catégories selon qu’ils impliquent l’ajout de données, la vérification de la structure, l’application de signatures cryptographiques, la fusion de contributions, la finalisation du format ou la diffusion du résultat.
3DistillerRéduisez les 6 groupes à 3 fonctions essentielles que tout système de gestion des transactions doit assurer pour garantir la sécurité et l’interopérabilité.
1CristalliserRédigez 1 phrase expliquant pourquoi une transaction inachevée nécessite plus de données qu’une transaction finalisée.

Vérification des faits

Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.

Ouvrir dans l'académie interactive →

EN PT ES ZH JA KO RU DE MS