Photo by Shubham Dhage / Unsplash

J'ai un problème avec le web3

Humeur 8 sept. 2022

Cette semaine je vous partage un petit coup de gueule (ou "billet d'humeur" si on était sur France Inter) sur le web3. Ça risque d'être un peu long mais ça me tient à cœur.

Qu'est-ce que le web3 ?

En tant que développeur web2, j'ai longtemps été intrigué par ce qu'on appelle le web3. J'ai regardé tout ça de loin, en essayant de comprendre le concept.

Le web3 a pour but de résoudre les problèmes de centralisation et de monopole du web2 par l'utilisation de la blockchain : les données personnelles sont stockées (et donc chiffrées) sur la blockchain dans le wallet de l'utilisateur, dont lui seul possède en théorie la clé secrète.

De cette manière, chacun peut contrôler qui a eu accès à ses données, car l'historique des accès est ancré à jamais dans la blockchain. Cela permettrait une gouvernance horizontale, une résistance à la censure, une rémunération plus élevée pour les créateurs de contenus, etc.

Rappel utile sur la blockchain

La blockchain est une technologie permettant de stocker une suite d'évènements (transactions) en garantissant leur authenticité et leur chronologie de 3 manières :

  1. En copiant la totalité de cette base de données sur tous les appareils membres de la blockchain (et en ne considérant comme valide que la blockchain la plus longue)
  2. En générant un hash de signature pour chaque transaction grâce à la clé privée de l'utilisateur à l'origine de la transaction.

Le point N° 2 est ce qui met le "chain" dans "blockchain" :

n.sign = hash(n[-1].sign + n.content, privkey)

n.content = n.content + n.sign

Le fait d'inclure le hash précédent dans le calcul du hash suivant et d'accoler ce hash à la transaction courante est l'idée de génie qui permet de chaîner les transactions entre elles : impossible de falsifier une transaction sans devoir recalculer le hash de toutes celles qui suivent.

Seule la dernière transaction est vulnérable, c'est là qu'intervient le premier garde-fou cité ci-dessus : la duplication de la chaîne (à beaucoup d'endroits, et avec une utilisation intensive). Une autre subtilité intervient également : la preuve de travail.

Si un attaquant souhaite falsifier la dernière transaction d'une blockchain, il fera face à :

  1. Un réseau de n-1 nœuds qui possède une version différente de la blockchain et qui se mettra "d'accord" (via un comportement préprogrammé dans le code source de la blockchain) pour ne pas accepter la chaîne falsifiée.
  2. Ce même réseau qui travaille en même temps pour valider les transactions suivantes : impossible pour l'attaquant de rattraper le temps perdu à calculer la preuve de travail de sa transaction falsifiée, car il devra en plus recalculer toutes les preuves suivantes à partir de son hash frauduleux : la blockchain la plus longue et la plus récente sort gagnante.

Il existe tout de même plusieurs types d'attaques contre la blockchain, rien n'est infaillible, mais elles sont très compliquées à mettre en œuvre.

Toute cette sécurité implique que chaque changement d'état dans ce grand livre de transactions doit être signé par un procédé cryptographique complexe. Et c'est une étape qui ne peut pas être déléguée à un tiers, sinon tout le concept de "pair à pair" s'effondre.

Bon et du coup, c'est quoi le problème ?

Ne nous méprenons pas, je trouve les concepts de la blockchain et du bitoin géniaux. Je pense également que la blockchain peut avoir des tas d'applications révolutionnaires. Mais, du coup, c'est quoi le problème ?

Eh bien j'en vois plusieurs.

Premier problème : l'adoption

Comme expliqué dans mon précédent article, je me suis intéressé de près au fonctionnement du bitcoin, et donc par ricochet à la blockchain et au web3. Ce que j'en ai principalement retenu, c'est de la frustration à l'utilisation :

  • Chaque action aussi simple qu'accepter des CGU doit faire l'objet d'une transaction signée
  • La rigueur dont il faut faire preuve pour protéger ses wallets est douloureuse (en termes d'UX)
  • Les transactions monétaires et les transactions de données sont par défaut mélangées (il appartient à l'utilisateur d'avoir plusieurs wallets pour différents usages)
  • Certaines actions basiques du web2 sont payantes sur le web3

Signer chaque transaction sans les comprendre

S'inscrire sur un réseau social web3 par exemple, c'est avoir des pop-up de ce type qui apparaissent à chaque action qui modifie l'état de votre compte (inscription, follow, CGU, etc.) :

Bon courage pour faire adopter ça à ma Maman

On pourrait se dire que devoir "signer" une transaction à l'acceptation des CGV est une bonne chose : cela permet de vérifier que lesdites CGV ont un jour été lues ou au moins visionnées par l'utilisateur. Sauf que voilà : la transaction en elle-même est déjà incompréhensible, et on finit par signer tout et n'importe quoi tellement ce genre de pop-up apparaît souvent.

Si je veux aller plus loin, que je persiste jusqu’à vouloir créer un post sur ce réseau social, on m'informe que cela n'est pas possible car mon wallet n'est pas configuré sur le bon réseau :

Le web3 n'est pas prêt pour le grand public

Pour moi, une telle UX n'est pas près de convaincre le grand public, et c'est là le premier problème que me pose le web3.

Devoir sécuriser son wallet soi-même

S'agissant de protéger ses données et son argent sur le web3, il faut donc posséder sa propre paire de clés et la sécuriser correctement : on conseille de passer par un hardware wallet (se saisir d'un appareil à chaque signature de transaction en plus de la pop-up) ou, au pire, de noter les 12 ou 24 mots de la "seed" sur un papier caché à l’abri des regards.

Encore une fois oui, c'est une bonne chose, mais c'est d'une lourdeur sans nom et ça rejoint le point précédent : c'est totalement inadapté au commun des mortels.

Le hack est encore plus simple

J'ai vu il y a quelques semaines passer un hack simple mais puissant : le simple defacing d'une page HTML permet d'ajouter un JS malicieux permettant de déclencher une demande de transaction via l'extension de navigateur de votre wallet. Vous avez vu la transaction en capture au-dessus ? Qui hormis les développeurs chevronnés comprend 1% de ce que prévoit de faire la transaction ? Résultat, des tas de gens ont cliqué sur "Signer" par fatigue de devoir accepter toute la journée des transactions incompréhensibles et se sont fait vider leur wallet. Tout ça à cause d'un JS, et la blockchain n'a rien pu faire pour se défendre.

C'est payant

Concernant la non-gratuité du web3, j'ai voulu tester de créer un NFT avec une image random qui traînait sur mon ordinateur : j'ai réussi. Mais une fois le NFT créé et ancré dans la blockchain, impossible par exemple de le retirer de la plateforme OpenSea sans avoir à payer des "gas fee" : des frais de transaction.

C'est quelque chose de très courant sur la blockchain : le réseau étant décentralisé, ce sont les utilisateurs qui doivent supporter les coûts d'infrastructure. Encore une fois, comment faire adopter ça au plus grand nombre ?

Second problème : l'utopie horizontale

Second problème, pardonnez-moi les gros mots mais je ne vois pas le foutu rapport entre un web plus juste, décentralisé et confidentiel et le concept de la blockchain. La blockchain résout le problème de la double dépense dans un réseau de transactions de pair à pair. Elle le fait très bien et l'idée est géniale.

Cela ne garanti pas (à moins que j'aie loupé 5 saisons, ce qui n'est pas totalement impossible) que des sites web3 construits sur la blockchain seraient plus justes ou confidentiels. OK, on aura nos datas dans des wallets dont on a minutieusement stocké la clé de manière analogique. Mais qu'est-ce qui empêchera une entité quelconque de garder la data dans une DB "web2" une fois celle-ci lue, à l'abri des regards ? Le fonctionnement intrinsèque d'un ordinateur n'a pas été redéfini, on parle ici d'une technologie bâtie PAR-DESSUS l'existant, cela ne le remplace pas.

Utiliser la blockchain qui est une technologie conçue pour se passer de confiance pour finir par l'utiliser comme faire-valoir d'un système finalement basé sur la confiance, c'est quelque chose qui m'échappe un peu. Mais encore une fois, peut-être que j'ai loupé un épisode.

Dernier problème : l'humain se centralise. Tout le temps.

Internet a été conçu pour être décentralisé. Vous pouvez techniquement vous brancher à internet via un fournisseur associatif, monter votre propre serveur de mail, votre propre cloud et avoir une activité numérique complètement déconnectée des monopoles des GAFAM, c'est totalement possible même en 2022. Qui parmi les non-professionnels a un jour fait ça ? Même parmi les pros du domaine, quasi-personne ne fait ça.

Le web (qui n'est pas la même chose qu'internet on le rappelle, le web est à internet ce que la voiture est à la route) a été conçu pour être décentralisé : le lien hypertexte permet de relier entre elles des ressources sans passer par une entité centrale. Vous pouvez, sur votre serveur perso construit au paragraphe précédent, héberger une page web où vous posterez vos humeurs et vos coups de cœur. Encore une fois, qui fait ça ? Les gens ont les réseaux sociaux pour ça.

On peut pousser la réflexion aussi loin qu'on le souhaite, on en arrive à la même conclusion : quelle que soit l'intention derrière l'innovation ou même les contraintes techniques imposées, on ne peut pas prévoir ce que les gens vont en faire. Internet et le web sont, par essence, décentralisés, il existe des alternatives décentralisées à tous les gros services numériques, pourtant quasiment personne ne les utilise, parce que c'est plus simple comme ça. Je ne crois pas que les usagers d'internet vont soudainement accepter d'ajouter une telle dose de friction à leur utilisation quotidienne d'internet et du web pour préserver la décentralisation.

Conclusion : j'adore l'idée

Personnellement je suis fan de la décentralisation, de la liberté d'expression et du principe d'une gouvernance horizontale. Ça donne envie bien sûr. Mais je suis certain que les usages ne vont malheureusement pas se métamorphoser. On ne pourra pas imposer autant de frictions contre un peu plus de vie privée quand je passe pour l'ovni de la région parce que j'ai un cloud privé ou une adresse e-mail qui n'est pas en @gmail ou @outlook.

Je suis également fan d'UX, et dans le cas du web3 elle a clairement été oubliée, et ça me frustre énormément car j'aimerais que ce soit plus simple, j'aimerais pouvoir l'expliquer à des non-techs, mais ce n'est pas possible en l'état.

Je pense que l'idée à de l'avenir, mais pas sous sa forme actuelle.

Voilà, j'espère n'avoir pas trop froissé les fans du web3, mais pour moi cette technologie qu'est la blockchain est incorrectement utilisée dans ce cas, et je pense qu'une grosse réflexion doit être menée pour arriver à rendre ce concept utilisable au jour le jour pour n'importe quel quidam.

Mots clés

Peter Cauty

Passionné de technologie et d'automobile depuis ma tendre enfance, je me suis plongé dans le le développement web à mes 12 ans. Ingénieur de formation, aujourd'hui Indépendant.