Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Transactions bitcoin partiellement signées

Par Anis BENZIANE Publié le 18/08/2019 à 16:37:32 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Les transactions Multisig 1 ont été un excellent cas d'utilisation de Bitcoin au cours des dernières années, elles nécessitent des transactions non signées ou partiellement signées pour être transmises entre plusieurs parties pour les "co-signer". Cependant, il n'existe actuellement aucun format unifié pour le partage de ces transactions entre plusieurs signataires, cela dépend de l'implémentation particulière de chaque porte-monnaie, ce qui rend la tâche difficile pour les parties utilisant différents portefeuilles Bitcoin.

Un projet de propositions d'amélioration Bitcoin (174), proposé il y quelques années par Andrew Chow, a suscité l'intérêt des développeurs Bitcoin. Il vise à créer un format extensible standard que différents clients peuvent mettre en œuvre pour faciliter la transmission des transactions bitcoin partiellement signées (PSBT) aux utilisateurs pour signer et combiner leurs signatures.

Partiellement signé

Étant donné que la signature des transactions exige également que les signataires aient accès aux UTXO (Unspent Transaction Output), ce format vise également à permettre aux signataires hors ligne tels que le matériel et les portefeuilles "air-gappd" de signer des transactions sans avoir besoin d'accéder à l'ensemble UTXO et sans être victimes de fraude. Pour expliquer la nécessité de ce BIP, nous allons commencer par un exemple qui montre pourquoi c'est important.

Disons que je suis Bob, j'aimerais payer Alice 5 BTC en échange d'un service, mais je ne fais pas confiance à Alice et nous faisons tous les deux confiance à Mark, alors nous créons une adresse Multisig 2 sur 3 avec 5 bitcoins entre Alice, Bob et Mark. Maintenant qu'Alice n'a pas fourni le service et que j'aimerais récupérer mon argent, je vais créer un PSBT et l'envoyer à Mark. Mark, étant un séquestre, se soucie de la sécurité de ses pièces de monnaie, il signe donc ma transaction PSBT à l'aide d'une machine hors ligne et me la renvoie, je vais ensuite prendre ma transaction signée et la transaction signée de Mark, les combiner et les sérialiser puis les diffuser sur le réseau comme une transaction réseau en série valide qui dépense les entrées vers mon adresse avec deux signatures différentes.

Un autre exemple serait le scénario où nous faisons quelque chose comme un achat groupé, je peux faire un PSBT avec mes entrées, le faire passer à différentes parties, chacune à son tour ajouter ses entrées et signer la transaction, puis je vais signer la transaction, la finaliser et la sérialiser puis l'envoyer au réseau.

Le format PSBT se compose de paires clé-valeur <clé>|<valeur>, les clés sont la plupart du temps juste un entier hexadécimal d'un octet, ou un entier hexadécimal concaténé avec une clé publique. Ils se composent de "types globaux", qui s'appliquent à la fois aux entrées et aux sorties, de types "par entrée" et "par sortie". Actuellement, les types définis "par entrée" et "par sortie" comprennent : Witness Script, Redeem Script et chemin de dérivation BIP 32, avec des types supplémentaires dans le champ "par entrée" comme Witness UTXO et Non-Witness UTXO, Sighash Type, Signature partielle, Finalized scriptSig et Finalized scriptWitness.

Le format de transaction sera le suivant :

{0x70736274}|{0xff}|{global key-value map}|{input key-value map}|...|{input key-value map}

Il y a eu des discussions dans le Bitcoin-dev contre le modèle de valeur-clé, réclamant un modèle d'ensemble plus simple, on soutient que cela peut être meilleur en lisibilité humaine et avoir plus d'efficacité spatiale car certaines clés peuvent être abandonnées, mais cela ne sera très probablement pas mis en œuvre car c'est un changement radical par rapport à la proposition originale du BIP.

Tel que proposé par le PIF actuel, une partie peut jouer 4 rôles différents pendant le schéma de signature partielle : un Créateur, un signataire, un combinateur et un finalisateur d'entrée. Une nouvelle mise à jour du BIP, en cours de discussion, ajoute un Updater et un Extracteur de Transaction.

  • Le Créateur crée une transaction non signée et la place dans un nouveau PSBT, tout en créant un champ de saisie vide.

  • L'Updater accepte un PSBT et y ajoute des informations, il ajoute les chemins de dérivation UTXO, redeemScripts, witnessScripts et BIP 32 si disponibles.

  • Le Signataire n'ajoute pas de sources de données, mais il crée des signatures pour les transactions qu'il peut signer et les ajoute en tant que paire clé-valeur "Signature partielle" pour la saisie qu'elle concerne, il peut également calculer les adresses, les valeurs envoyées et les frais de transaction, les montrant à l'utilisateur comme confirmation et avertissement.

  • Le Combiner fusionne un ou plusieurs PSBTs en supprimant toute paire de valeurs de clés en double, le Combiner n'a pas besoin de comprendre comment interpréter le script, il les combine simplement selon les spécifications.

  • Le Finalizer n'accepte qu'un seul PBST, il détermine si l'entrée a suffisamment de données pour passer la validation et s'il le fait, il construit le scriptSig et le scriptWitness et se débarrasse de toutes les données sauf UTXO et les champs inconnus dans la carte de valeurs des clés d'entrée.

  • L'Extracteur de transactions accepte un seul PSBT et vérifie si toutes les entrées ont des scriptSigs et des scriptWitnesses complets. Si tel est le cas, l'extracteur sérialise les transactions et sort une transaction réseau entièrement valide.

Le format est conçu pour être étendu à l'avenir en ajoutant de nouveaux types pour les paires clé-valeur, ce qui le rend rétrocompatible car les signataires qui n'identifient pas les nouveaux codes ne feront que les ignorer. Pour assurer la compatibilité, il a également été conçu pour ne pas être "non-sérialisable" par les non-sérialiseurs de transaction normale.

Regarding the encoding of a PSBT, it can either be represented by a Base64 string or a plain binary file with the .psbt file extension. A MIME type name will be added once the BIP has been revised.

Conclusion

Ce nouveau format peut apporter un tout nouveau niveau d'adoption aux porte-monnaie Multisig, le BIP est encore répertorié en tant que brouillon mais nous devrions le voir promu à Proposé bientôt et peut-être commencer à voir des implémentations apparaître de temps en temps !

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels