Gregory Maxwell, également appelé Greg Maxwell ou gmaxwell, est développeur Bitcoin et cofondateur de Blockstream. Il a contribué à CoinJoin, Confidential Transactions et Taproot, et cosigné Bech32. Ces noms désignent des techniques distinctes, pas un ensemble de fonctions présent dans chaque portefeuille Bitcoin.
Le travail de Maxwell relie le développement de Bitcoin à la confidentialité et à la sécurité. Il a cofondé Blockstream, dont il a été CTO, c’est-à-dire directeur technique. Le 19 janvier 2018, l’entreprise a annoncé qu’il avait quitté ce poste pour se consacrer à Bitcoin. C’est la date de l’annonce, pas la preuve du jour exact de son départ. Elle ne renseigne pas non plus sur son emploi actuel. Les problèmes concrets qu’il a étudiés comptent davantage ici que son titre professionnel. [1]
Imaginez plusieurs personnes réunissant leurs paiements dans une transaction. Chacune apporte ses entrées, des fonds reçus auparavant et désormais dépensés, puis signe pour autoriser leur utilisation. Un observateur ne peut donc pas déduire avec certitude un propriétaire commun de leur seule présence dans la même transaction. Sous le nom gmaxwell, Maxwell a expliqué CoinJoin le 22 août 2013. Il mentionnait explicitement des usages antérieurs limités ; cette technique ne demandait pas de changer les règles du protocole Bitcoin. [2]
Comment les participants conviennent-ils de ce qu’ils vont signer ? Un coordinateur peut préparer un CoinJoin simple, mais chacun vérifie d’abord sa sortie : où vont ses fonds et pour quel montant. Il signe ensuite ses entrées. Cela ne donne pas au coordinateur le droit de dépenser les fonds à sa guise. Pourtant, dans une réalisation simple, il peut connaître les liens entre entrées et sorties. Un participant qui refuse de signer peut aussi bloquer la session. Protection contre le vol, disponibilité et confidentialité sont des propriétés différentes. [2]
Les transactions Bitcoin ordinaires rendent les montants publics. Confidential Transactions traitent un autre problème que le regroupement des paiements : les montants sont cachés dans des engagements cryptographiques. Ceux-ci fixent une valeur sans la révéler et permettent aussi d’en vérifier les sommes. L’explication de Maxwell dans Elements prolonge une proposition d’Adam Back datant de 2013. Son utilisation dans Elements ne constitue pas le déploiement de cette fonction sur le réseau de base Bitcoin. Cacher les montants ne cache pas non plus tout le graphe des transactions, c’est-à-dire les liens entre paiements. [3]
Arithmétiquement, 10 = 11 + (-1). Pris comme modèle de transfert sans frais, cela pose problème : le total est juste, mais une sortie positive dépasse la valeur de départ, compensée par une sortie négative absurde. Dans Confidential Transactions, un débordement modulaire peut produire un effet comparable quand le calcul revient au début du système numérique. Il faut donc une preuve d’intervalle : elle confirme que le montant caché se trouve dans les limites autorisées sans donner sa valeur exacte. La confidentialité ne doit pas permettre de fabriquer de l’argent supplémentaire. [3]
Pourquoi publier les conditions de secours quand tout le monde est d’accord et qu’elles n’ont pas servi ? La proposition Taproot de Maxwell du 23 janvier 2018 montrait comment une signature commune pouvait cacher l’existence d’autres conditions de dépense. Si les parties coopèrent, un accord complexe peut ressembler à un paiement ordinaire autorisé par une clé. La date du message n’est pas celle de l’activation sur le réseau. Entre l’idée et son adoption restent la discussion, la définition de règles précises et leur acceptation. [4]
La spécification finale BIP 341, document technique public définissant les règles de Taproot, nomme Pieter Wuille, Jonas Nick et Anthony Towns comme auteurs. La voie par clé peut utiliser une signature sans dévoiler la présence d’un script alternatif. Un script est un programme exprimant des conditions de dépense ; si cette voie est utilisée, le programme choisi et sa preuve d’inclusion sont révélés. Cela n’enlève rien à l’idée initiale de Maxwell, mais ne permet pas de lui attribuer seul les règles finales. [5]
Pour envoyer de l’argent, il faut aussi une adresse correctement écrite. Pieter Wuille et Greg Maxwell sont les auteurs du BIP 173, qui décrit Bech32 pour les adresses SegWit natives. Sa somme de contrôle comprend des caractères aidant à détecter une erreur de codage. Elle ne vérifie ni l’identité du destinataire ni qui détient la clé privée. Une adresse valide mais substituée peut passer ce contrôle. Bech32 répond donc à un autre problème que CoinJoin ou les montants cachés ; leurs bénéfices ne se confondent pas. [6]
Pour une vision complète, lisez aussi Pieter Wuille, Matt Corallo, Satoshi Nakamoto. Cette entrée est également citée par Pieter Wuille, Matt Corallo.