Les nœuds Bitcoin se rapprochent désormais de la synchronisation instantanée
Les clients Bitcoin Light peuvent désormais se synchroniser presque instantanément avec la pointe de la blockchain, grâce à un nouveau développement permis par la startup Bitcoin ZeroSync et leur travail sur les preuves à connaissance nulle (ZK). En fin de compte, ZeroSync cherche à permettre aux nœuds complets de faire de même.
Les preuves ZK permettent à un prouveur de générer une courte déclaration mathématique qui prouve à un vérificateur qu’un calcul donné est correct sans révéler aucun détail sur ce calcul. Construire cette preuve peut être coûteux en termes de calcul, mais la déclaration qu’elle fournit est toujours très compacte, quelle que soit la taille des données ayant servi d’entrée au calcul de la preuve –– permettant une vérification ultra-rapide de l’exactitude de ces données avec une certitude mathématique. En Bitcoin, cette astuce mathématique peut être très utile aux nœuds et aux clients.
Les nœuds complets Bitcoin sont notoirement tenus de télécharger et de vérifier chaque élément de données qui constitue la blockchain, depuis sa création en janvier 2009 jusqu’à nos jours. En raison de la difficulté de faire évoluer une configuration aussi complète, Satoshi Nakamoto a envisagé dans le livre blanc Bitcoin un type différent de client qui serait en mesure de vérifier ses paiements entrants sans exécuter un nœud complet.
Les clients Bitcoin Light exploitent un mécanisme simplifié de vérification des paiements (SPV). Dès réception d’un paiement, le client interroge les nœuds du réseau pour obtenir les en-têtes de la chaîne la plus longue. Ensuite, il est capable de trouver le bloc auquel la transaction entrante a été ajoutée, ce qui montre que les nœuds du réseau l’ont accepté comme valide. Au fur et à mesure que de nouveaux blocs sont ajoutés à la chaîne, plus le client léger obtient de confirmations que le paiement était valide et accepté par le réseau dans un bloc.
Sans qu’un changement consensuel vers Bitcoin soit nécessaire, les preuves ZK améliorent cette configuration en compressant les en-têtes en une seule preuve. De la même manière que chaque bloc Bitcoin compresse efficacement les données de ses transactions dans un arbre Merkle et inclut la racine de cet arbre dans son en-tête, le travail de ZeroSync prend chaque en-tête de bloc Bitcoin et les regroupe dans un autre arbre Merkle. Ce processus permet de synthétiser la chaîne d’en-têtes en une donnée courte et légère –– la preuve.
La preuve de chaîne d’en-tête est capable de prouver rapidement si un en-tête de bloc donné est inclus dans la chaîne. Un en-tête de bloc peut ensuite être exploité pour attester si une transaction spécifique a été incluse dans ce bloc. Ce processus est très similaire à la méthode SPV décrite précédemment, mais plus efficace. Au lieu de devoir conserver une copie complète de chaque en-tête de la blockchain pour SPV, avec les preuves ZK, le client léger n’a besoin que de stocker cette petite preuve de chaîne d’en-tête, pouvant se synchroniser avec le dernier état de la chaîne en quelques secondes.
En fin de compte, ce que la preuve de la chaîne d’en-tête est en mesure de prouver, c’est que chaque bloc de la chaîne satisfaisait aux exigences de difficulté au moment où il a été extrait. En d’autres termes, la vérification de la preuve de la chaîne d’en-tête permet à l’utilisateur ou au client de s’assurer que chaque bloc Bitcoin jusqu’à cette hauteur donnée a été extrait correctement et répondait aux critères de difficulté d’extraction à ce moment-là.
La publication de la première preuve ZK complète de la chaîne d’en-tête a été la première étape de ZeroSync. Pour réaliser leur vision plus large –– fournir une vérification complète de la blockchain historique aux nœuds complets sans obliger les utilisateurs à la télécharger et à la traiter –– l’équipe doit cocher deux cases supplémentaires. La seconde ferait monter d’un cran la preuve de la chaîne d’en-tête et permettrait à un nœud de se synchroniser de la même manière que la fonction Assume Valid de Bitcoin Core. Le troisième et dernier fournirait la synchronisation complète de la blockchain Bitcoin envisagée.
Assume Valid est une option de Bitcoin Core, activée par défaut, qui suppose que tous les scripts jusqu’à une hauteur de bloc donnée sont valides. Cela signifie que les nouveaux nœuds complets synchronisant la blockchain avec le téléchargement du bloc initial (IBD) peuvent ignorer la vérification des scripts du bloc Genesis jusqu’à la hauteur de bloc établie par le client Bitcoin Core dans une version donnée. Ces scripts constituent la partie des données témoins des transactions –– principalement les signatures résolvant les scripts de verrouillage et déverrouillant les fonds à dépenser, ainsi que les délais et autres conditions de dépenses programmées. Les utilisateurs ont la possibilité de définir `assumevalid=0` et de forcer leur client à effectuer une vérification complète de tous les scripts, en plus de la vérification du contenu des autres blocs. Cependant, l’hypothèse générale et assez sûre derrière l’activation d’Assume Valid par défaut est que suffisamment de preuves de travail ont été présentées jusqu’à cette hauteur de bloc donnée, ce qui permet de croire que les scripts qui le précèdent sont valides.
L’offre intermédiaire de ZeroSync, une fois terminée, permettra aux utilisateurs de Bitcoin de synchroniser leurs nœuds de la même manière qu’un Bitcoin Core IBD par défaut. Le nœud télécharge toutes les données depuis la création de Bitcoin jusqu’à nos jours, mais ne vérifie les données des témoins qu’après la hauteur supposée valide. L’ensemble UTXO est également une partie nécessaire de l’équation. Pour résoudre ce problème, ZeroSync s’appuie sur Utreexo, un projet qui cherche également à accroître l’efficacité de la synchronisation des nœuds Bitcoin. Utreexo fournit le dernier ensemble UTXO sur un bloc donné, et ZeroSync est capable de l’ajouter dans sa configuration basée sur les preuves ZK. Le résultat est une preuve de chaîne d’en-tête beaucoup plus courte et un ensemble UTXO plus compact et efficace, que les clients peuvent exploiter pour satisfaire leurs besoins de vérification des paiements.
L’offre de niveau supérieur de l’équipe ira encore plus loin et permettra aux nœuds de se synchroniser avec le dernier état de Bitcoin sans supposer qu’un script est valide. En utilisant les preuves ZK, les nœuds complets seraient en mesure d’obtenir une synchronisation initiale beaucoup plus rapide avec peut-être des garanties de sécurité encore plus grandes que le paramètre par défaut de Bitcoin Core, qui utilise supposevalid.
Il est important de noter que même si les utilisateurs de Bitcoin Core désactivent assumevalid –– en vérifiant tous les scripts et en obtenant des hypothèses de sécurité similaires à celles de l’offre de niveau supérieur de ZeroSync –– la plus grande proposition de valeur de cette dernière reste le gain substantiel d’efficacité et de rapidité pour vérifier toutes ces informations. Alors que la blockchain Bitcoin contient actuellement 510 Go de données, l’approche de ZeroSync permettra, une fois terminée, un processus beaucoup plus rapide étant donné la production d’une preuve courte et légère d’un peu plus de 1 Mo –– une amélioration des performances de plusieurs ordres de grandeur par rapport à une IBD standard. en utilisant Bitcoin Core tout en garantissant que les mêmes règles de consensus sont respectées.
Les gains d’efficacité ne feront que devenir plus importants à mesure que la blockchain Bitcoin continue de croître bloc après bloc. À terme, le téléchargement et la vérification de l’ensemble de la chaîne pourraient devenir prohibitifs en termes de bande passante et de stockage, en particulier dans les régions du monde où l’accès à l’Internet haut débit et à des disques durs plus gros est limité ou coûteux.