Célébrer ou ne pas célébrer Neutrino ? – Réponse à Nicolas Dorier

Il y a quelques semaines, Nicolas Dorier, un acteur très connu dans le milieu Bitcoin, a publié un article : “Why I don’t celebrate Neutrino”. Un autre acteur français, lui aussi a émis un certain scepticisme sur le nœud léger développé par Lightning Labs.

Avec cet article, nous allons revenir sur l’origine des noeuds légers/SPV et tenter d’aborder le sujet avec un autre point de vue. Le plus important n’étant pas de s’alarmer, mais de s’assurer de comprendre au mieux la situation.

Pour bien comprendre cet article, lisez : Lightning network, qu’est-ce que Neutrino ?

Les noeuds SPV (Simplified Payment Verification)

Rappelons d’abord qu’un noeud léger est en réalité ce qui a été présenté comme un noeud SPV (Simplified Payment Verification) dans le papier de présentation de Bitcoin.

« It is possible to verify payments without running a full network node. » Whitepaper de Bitcoin

L’idée décrite dans cette section 8 est que l’utilisateur d’un tel protocole ne peut pas vérifier la transaction par lui-même. Cependant, il peut avoir la preuve de l’intégration de sa transaction dans une chaîne (la plus longue), et peut ainsi s’assurer de manière indépendante que la transaction a été acceptée dans le réseau, dès lors qu’il y a eu un nombre de blocs suffisants ajoutés postérieurement.. Ce mécanisme de vérification vient avec un avertissement : le réseau doit être en majorité détenu par des nœuds honnêtes. Il décrit une stratégie possible qui pourrait notifier les utilisateurs du protocole SPV dans le cas contraire.

« Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. » Nicolas Dorier

La section est quand même conclut avec cette note, qui conseille aux personnes recevant des paiements de manière régulière d’utiliser un nœud complet.

Cette dernière note nous donne une idée de pour qui ce genre de système est destiné : le concept de SPV est pour les utilisateurs occasionnels, ceux qui ne veulent pas faire tourner un noeud complet sur l’ordinateur ou mobile, car trop coûteux par rapport à leur utilisation.

Ne pas remplacer les noeuds complets…

L’utilisation de nœuds Neutrino, ne signifie donc pas la fin du monde Bitcoin, mais au contraire offre une porte d’entrée à ce qui normalement aurait trouvé son utilisation trop coûteuse. Cela permet à certaine personnes de pouvoir expérimenter, s’intéresser, s’engager et pourquoi pas même de monter leur propre nœud complet à l’avenir.

Les clients SPV nous offrent aussi une meilleure pratique pour les portefeuilles. La plupart des portefeuilles, aujourd’hui, utilisent des serveurs centralisés détenus par des compagnies qui peuvent collecter les informations sur leurs utilisateurs. Une pratique présente par défaut dans Samouraï Wallet qui à son lancement utiliser même un service tierce sans avoir prévenu ses utilisateurs alors qu’ils se disent “privacy focus”. C’est un peu naïf de compter sur le fait que les utilisateurs vont monter leur propre nœud pour utiliser leur application. Nous ne devons pas minimiser l’expérience utilisateur.

BIP37 est cassé

Il est souvent mentionné aussi la fameuse BIP37. Il s’agit d’une amélioration ajoutée pour améliorer l’efficacité des nœuds SPV. Le concept de Bloom Filters a permet de minimiser le nombre de données téléchargées par le client et réduisantdonc les besoins en bande passante. C’est une avancée très importante qui permet de créer des applications mobiles sans que votre forfait internet n’y passe en quelques heures. Il permet aussi d’accéder à Bitcoin dans des pays avec des réseaux internets moins développés. Même si aujourd’hui, on a fait beaucoup de progrès en matière de réseau, supprimer cette BIP pourrait avoir des répercussions négatives. Attendons peut-être un peu avant de la déclarer obsolète.

« I look forward the PR which remove BIP37 from Bitcoin Core code. » Extrait des conclusions du papier de recherche sur les blooms filters

Dans l’article, il est mentionné que BIP37 serait “cassé”. Il y a en effet eu un article  décrivant les problèmes liés à la fuite d’information des filtres de Blooms. Il est peut-être aussi bien de rappeler que la conclusion n’était pas aussi catégorique et faisait justement des recommandations sur les implémentations.

« To this end, we propose a lightweight solution that enhances the privacy offered by Bloom filters; our proposal can be integrated within existing SPV client implementations with minimum modifications. » Whitepaper de Bitcoin

La difficulté de l’implémentation

Maintenant, parlons un peu implémentation, c’est en effet toujours la partie la plus compliquée. L’un des arguments avancés est “trop difficile à implémenter” (Harder to implement). Ce qui est un proposé ici, est de transférer la difficulté du développeur à l’utilisateur.

C’est un argument qui a un peu de mal à passer. Il est utilisé pour dire qu’il est difficile de demander la même information à plusieurs nœuds. On peut tout aussi bien répondre à cela, que si on arrive à le faire pour un nœud, on peut le faire pour plusieurs.

On peut même dire que c’est en réalité la seule manière correcte d’implémenter le protocole SPV.

« by querying network nodes until he’s convinced he has the longest chain » Nicolas Dorier

Il en est facile de s’en convaincre et c’est aussi le postulat de Nicolas  Dorier dans son article. Malheureusement, sa conclusion écarte cette option. Nous n’avons pas besoin de valider les blocs pour nous convaincre qu’une transaction est valide, mais juste de nous assurer qu’elle est enterrée assez loin dans la chaîne la plus longue. La position de Nicolas Dorier est que l’utilisateur devrait valider aussi les blocs et non juste en être convaincu.

« This mean that you need to a full node on some separate server and connect your light wallet to it. » Nicolas Dorier

Il est important de noter qu’un noeud SPV ne valide pas les règles de consensus. Cela est très bien expliqué, mais il faut préciser aussi que l’on n’a pas forcément besoin que tout le monde le fasse à plein temps, tant et si bien qu’un nombre suffisant de personnes s’occupent de ce processus (comme les commerçants).

Conclusion

Rassurons-nous, ce n’est pas la fin de Bitcoin avec l’apparition de Neutrino. Au contraire, cela pourrait s’avérer être une étape importante en matière d’accessibilité. Essayons plutôt de discuter calmement des possibilités que cela nous offre. Les librairies SPV sont une bonne chose pour les développeurs et va leur permettre d’expérimenter.

*Notes : Certaines personnes préfèrent le terme client léger à cause de détail technique. L’auteur ne partage pas ce point de vue et intentionnellement choisi de garder le nom SPV.

Lola D.

"Le Cyberespace est fait de transactions, de relations, et de la pensée elle-même, formant comme une onde stationnaire dans la toile de nos communications. Notre monde est à la fois partout et nulle part, mais il n’est pas où vivent les corps." - John Perry Barlow, Déclaration d’indépendance du Cyberespace, Davos, Suisse, 8 février 1996