Améliorer la scalabilité de Bitcoin avec Utreexo
Les données de Bitcoin doivent s’alléger – La scalabilité du réseau Bitcoin est l’une des principales préoccupations de ses développeurs. Après dix ans d’existence et toujours plus d’utilisateurs, la blockchain pèse désormais près de 300 Go. Cela constitue malheureusement un frein, car les nœuds complets nécessitent de plus en plus de ressources.
Notre avis sur Bitcoin (BTC) »
Thaddeus Dryja, connu pour avoir créé le Lightning Network avec Joseph Poon, a une solution. Elle permet d’alléger considérablement la quantité d’informations que les nœuds complets doivent posséder.
Le modèle UTXO de Bitcoin et l’état de la blockchain
Sur le Bitcoin, les soldes des différentes adresses ne sont pas stockés de la même façon que sur un registre bancaire classique. On parle de modèle UTXO (Unspent Transaction Output) avec une sortie non dépensée. Ainsi, le solde d’une adresse Bitcoin s’obtient en additionnant toutes les sorties vers cette adresse qui n’ont pas encore été dépensées.
Afin de vérifier la validité d’une requête, les nœuds doivent donc connaître le solde de chaque adresse Bitcoin. On appelle cela « l’état de la blockchain ». C’est une sorte de photographie du réseau à l’instant T. Actuellement, il faut posséder la base de données complète des UTXO pour connaître cet état. Elle pèse environ 200 Go.
Ce modèle a donc des avantages (au niveau de la sécurité), mais aussi quelques inconvénients. Cela augmente considérablement l’espace de stockage nécessaire pour maintenir un nœud complet. De même, les besoins en bande passante sont élevés.
Utreexo : pour alléger l’état de la blockchain
Utreexo est l’amélioration proposée par Thaddeus « Tadge » Dryja, chercheur au MIT Digital Currency Initiative.
Cette méthode permet d’alléger considérablement la quantité de données à stocker par un nœud complet pour valider les transactions.
Au lieu d’utiliser l’ensemble des UTXO pour connaître l’état de la blockchain et valider les transactions, Utreexo s’appuie sur un « accumulateur cryptographique ». Un accumulateur est un ensemble d’informations permettant de justifier l’appartenance de données à un ensemble. Plus précisément, il s’agit d’une primitive cryptographique. Elle prouve qu’un élément appartient à un ensemble, sans révéler son contenu. On peut le faire en utilisant des nombres premiers ou des fonctions de hachage, ce qui est le cas pour Utreexo.
Concrètement, cela signifie que les nœuds utilisant Utreexo pourront valider les transactions en se basant sur cet accumulateur. Il n’auront plus besoin de posséder l’ensemble des UTXO. Cela allège considérablement l’espace de stockage nécessaire pour connaître l’état de la blockchain.
Un autre avantage est que le délai de synchronisation pour un nœud complet sera considérablement réduit. Pour diminuer la taille des preuves cryptographiques, Tadge Drya a basé son accumulateur sur les arbres de Merkle. Ainsi, au lieu de la base de données de 200 Go, un nœud compact Utreexo n’a besoin que d’un fichier de quelques centaines d’octets.
Comment implémenter d’Utreexo
Le chercheur a présenté Utreexo le 22 juillet. Il sera implémenté en modifiant le code source du logiciel client Bitcoin : btcd. Pour l’instant, Utreexo est uniquement présent sur le testnet de Bitcoin. Il faudra aussi s’assurer de sa compatibilité avec Bitcoin Core.
Bien qu’Utreexo ne nécessite pas de soft fork pour être implémenté, il s’agit d’un changement de design très important pour Bitcoin. Il faut, comme d’habitude, procéder avec précaution. Une fois que les tests se seront déroulés avec succès, une nouvelle version pourra voir le jour.
Thaddeus Dryja fait partie des chercheurs les plus brillants de l’écosystème Bitcoin. Après son apport majeur au réseau avec le Lightning Network, ses recherches sur les discreet log contracts, voici qu’il nous propose une amélioration considérable du système de validation des transactions.