A
A

ZeroSync épure la synchronisation au réseau Bitcoin

sam 23 Sep 2023 ▪ 8 min de lecture ▪ par Nicolas T.
Wallet

Les wallets pourront bientôt se synchroniser instantanément au réseau Bitcoin grâce à la société ZeroSync et son système « STARK proof ».

Bitcoin zerosync

Bitcoin Node

Avant de plonger au cœur du sujet, rappelons qu’un nœud est un logiciel (Bitcoin core) qui valide les transactions bitcoin. Son rôle est de rejeter tout bloc qui hébergerait une transaction non valide.

Toutes les dix minutes environ, un bloc de transactions (valide) se propage à l’ensemble des nœuds qui le relayent de proche en proche.

Il existe différents types de nœuds. Il y a essentiellement des « Full nodes », les « pruned nodes » et ceux qui nous intéressent plus particulièrement : les « light nodes ». Ils sont aussi appelés nœuds SPV pour Special Payment Verification.

Les nœuds complets (full nodes) conservent en mémoire l’ensemble des utxo et des données se trouvant dans chaque bloc. Ils nécessitent beaucoup d’espace disque (au moins 600 Go actuellement), de bande passante (5 Go par jour) et de puissance de calcul.

Le nœud élagué (pruned node) part du principe qu’il n’est pas nécessaire de conserver toutes les données pour vérifier les transactions. Seuls quelques centaines de blocs (quelques centaines de Mo) et l’ensemble des utxo (5 Go) sont gardés en mémoire.

Soit dit en passant, un nœud élagué doit tout de même télécharger initialement l’ensemble des blocs. On parle d’IBD (Initial Block Download) dans le jargon. Les données sont élaguées au fil du téléchargement.

Rappel sur les UTXO

Un utxo est un script. En clair, un petit bout de code qui lie une quantité de bitcoin (un chiffre) à une clé publique.

À cette clé publique correspond une clé privée nécessaire pour débloquer les bitcoins. C’est-à-dire les lier à une autre clé publique (ou « adresse bitcoin », c’est la même chose).

La somme de tous les utxo correspond exactement à l’ensemble des bitcoins en circulation. Chaque transaction se traduit concrètement par la suppression d’un ou plusieurs utxo simultanément à la création de nouveaux utxo.

Tous les nœuds conservent une compilation identique de ces utxo. Elle est mise à jour à chaque fois qu’un bloc se propage au réseau.

Il existe actuellement 129 millions d’utxo. Chaque nœud (complet ou élagué) doit stocker l’ensemble de ces utxo pour savoir à chaque instant qui a le droit de dépenser quels bitcoins.

Dit autrement, sans la liste complète des utxo, un nœud ne peut rien vérifier.

Light Node

Ces « nœuds » SPV se trouvent dans les wallets. Ils ne participent pas au processus de vérification des transactions puisqu’ils ne stockent ni l’historique des blocs, ni les utxo.

Seuls les en-têtes (headers) des blocs sont téléchargés lors de la synchronisation initiale. Cela revient par exemple à télécharger les titres des chapitres d’un livre plutôt que l’intégralité du texte. Leur fonction est simplement de vérifier combien de bitcoins sont liés aux adresses de votre wallet.

Le problème étant que les nœuds SVP doivent communiquer avec des nœuds complets pour sonder les blocs. Or ces nœuds peuvent être malveillants et collecter les adresses de votre wallet ainsi que votre adresse IP. D’où l’intérêt de connecter son wallet via le navigateur Tor (VPN).

L’utilisation de son propre nœud complet permet d’éviter cette potentielle perte d’anonymat. Aucun risque alors de révéler des informations sur vos adresses et donc votre solde de bitcoins.

Bref, les nœuds légers ne font que 64 mégaoctets (80 octets par en-tête de bloc multipliés par ~808 000 blocs). La description de leur mécanisme se trouvait déjà dans le white paper du Bitcoin.

Ces nœuds se servent astucieusement de la structure dite en arbre de Merkle qui « concatène » toutes les transactions d’un bloc. Un arbre de Merkle n’a rien d’extraordinaire. Il s’agit simplement d’une structure qui hache toutes les transactions par paires. Les hash résultants sont de nouveau hachés par paire jusqu’à ce qu’il ne reste qu’un seul hash appelé la racine de Merkle (Merkle root).

Et le fait est que ces arbres de Merkle sont suffisants pour vérifier si une transaction a été incluse dans un bloc Bitcoin.

Pourquoi les nœuds SPV sont si importants ?

Un nœud complet ou élagué nécessite de télécharger l’ensemble des blocs. Cela peut prendre des heures, voire des jours entiers selon les régions (600 Go…).

Avec les preuves SPV, connaître la racine de l’arbre de Merkle de chaque bloc suffit à vérifier son solde de BTC. Or, cette racine représente moins de 0.0001 % des données contenues dans un bloc !

Ce qui nous amène à l’innovation de la société ZeroSync avec les « preuves ZK » (zero knowledge proof). Ces dernières améliorent la preuve SVP en comprimant les en-têtes en une seule preuve.

En somme, de la même manière que l’on compresse les transactions en une racine d’arbre de Merkle, ZeroSync compresse les en-têtes en un autre arbre de Merkle. Ce processus permet de synthétiser l’ensemble des en-têtes en une donnée courte et légère : la preuve.

Cette preuve permet de s’assurer rapidement qu’un en-tête de bloc donné existe bel et bien. Et comme dit plus haut, un en-tête s’utilise pour attester qu’une transaction spécifique se trouve bien dans un bloc.

Cette frugalité de données accélère grandement la synchronisation des wallets avec le réseau Bitcoin. La première étape de ZeroSync est donc franchie. L’objectif est désormais d’étendre ce système aux nœuds complets pour se débarrasser de la nécessité de vérifier les 600 Go de blocs lors de l’IBD.

Terminons en rappelant qu’à terme, le téléchargement et la vérification de l’ensemble des blocs pourraient devenir rédhibitoires en termes de bande passante et de mémoire. C’est une menace pour la décentralisation qui ne devrait jamais être tenue pour acquis.

Les innovations de ZeroSync sont bienvenues, d’autant plus qu’elles ne nécessitent aucune modification du protocole.

Dans le cadre de la synchronisation des wallets Bitcoin, un élément essentiel à souligner est l’utilisation des Arbres de Merkle. Ces structures jouent un rôle clé dans l’optimisation de l’espace de stockage sur la blockchain, permettant une synchronisation plus rapide et efficace. En effet, les arbres de Merkle, introduits par Ralph Merkle en 1979, utilisent des fonctions de hachage cryptographiques pour créer des liens entre les transactions, formant ainsi une chaîne vérifiable et sécurisée. Cette caractéristique est cruciale pour les light nodes dans les wallets, qui se reposent sur les headers des blocs pour la vérification des transactions sans nécessiter l’historique complet des blocs. Ainsi, les arbres de Merkle contribuent non seulement à la sécurité du réseau Bitcoin mais aussi à sa scalabilité et à la protection de la confidentialité des utilisateurs.

Maximisez votre expérience Cointribune avec notre programme 'Read to Earn' ! Pour chaque article que vous lisez, gagnez des points et accédez à des récompenses exclusives. Inscrivez-vous dès maintenant et commencez à cumuler des avantages.


A
A
Nicolas T. avatar
Nicolas T.

Reporting on Bitcoin, "the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy".

DISCLAIMER

Les propos et opinions exprimés dans cet article n'engagent que leur auteur, et ne doivent pas être considérés comme des conseils en investissement. Effectuez vos propres recherches avant toute décision d'investissement.