Glossaire / Nœuds et logiciels
Serveur Electrum
Aussi appelé Electrum Personal Server.
- Qu'est-ce qu'un serveur Electrum ?
- Un serveur Electrum indexe la blockchain par script et répond aux requêtes d'adresses pour les portefeuilles légers, si bien que ces portefeuilles obtiennent un solde instantané sans télécharger eux-mêmes la chaîne.
Quelqu'un doit faire la recherche. Un nœud complet sait quels bitcoins sont non dépensés mais ne conserve aucune table reliant une adresse à son historique, donc les portefeuilles qui veulent cet historique en une seconde plutôt qu'en une heure interrogent un serveur qui en a construit une. La pratique courante consiste à faire tourner le vôtre aux côtés de votre propre nœud, car l'alternative confie à un inconnu la liste complète des adresses que vous possédez.
Comment cela fonctionne
Un serveur Electrum se place entre Bitcoin Core et un portefeuille, et traduit entre les deux.
Il lit chaque bloc du nœud à son arrivée, extrait chaque script de sortie et stocke une correspondance entre ce script et les transactions qui le touchent. Les portefeuilles se connectent ensuite par un protocole JSON simple en lignes, en texte brut sur le port 50001 ou en TLS sur le port 50002, et posent une question ou s'abonnent pour être avertis lorsque la réponse change. L'abonnement est ce qui rend un portefeuille Electrum immédiat : le serveur pousse une notification dès qu'un paiement arrive, au lieu que le portefeuille interroge à intervalles réguliers.
Les portefeuilles n'envoient pas d'adresses sur cette connexion. Ils envoient un hash de script, l'empreinte SHA-256 du script de sortie avec ses octets inversés, ce qui est une convention de protocole et non une mesure de confidentialité. Le serveur apprend tout de même précisément quels bitcoins vous surveillez, car il renvoie l'historique de ce hash et peut retrouver l'adresse correspondante dans son propre index en un instant. Prendre les hash de script pour de l'anonymat est le malentendu le plus courant au sujet de ce logiciel.
Ce que le portefeuille garde pour lui, c'est la vérification. Il télécharge la chaîne des en-têtes de bloc et vérifie la preuve de Merkle que le serveur fournit pour chaque transaction, de sorte qu'un serveur ne peut pas inventer un paiement qui n'a jamais eu lieu sans produire aussi une fausse chaîne d'en-têtes adossée à une véritable preuve de travail. Il peut encore mentir par omission, en vous cachant une transaction ou une dépense, ce qui est un risque plus faible mais réel.
Trois implémentations couvrent presque tous les déploiements : electrs en Rust, apprécié pour son petit index ; Fulcrum en C++, apprécié pour sa vitesse de requête ; et ElectrumX en Python, l'original. Electrum Personal Server suit une autre voie, en surveillant uniquement les portefeuilles que vous listez dans un fichier de configuration plutôt qu'en indexant toute la chaîne, ce qui ne coûte presque aucun espace disque mais ne répond rien sur les adresses des autres.
Où cela se voit
Les serveurs Electrum sont la moitié invisible de la plupart des portefeuilles bitcoin de bureau.
Electrum lui-même, publié pour la première fois par Thomas Voegtlin en novembre 2011, se connecte à des serveurs publics gérés par des bénévoles, sauf indication contraire de votre part. Sparrow, Specter et BlueWallet parlent tous le même protocole. Chaque distribution de nœud populaire, notamment Umbrel, Start9, RaspiBlitz et myNode, livre electrs ou Fulcrum précisément pour que le portefeuille de votre ordinateur portable puisse interroger votre propre machine sans que personne d'autre apprenne vos adresses.
La raison de cette importance n'est pas hypothétique. À partir de la fin décembre 2018, des attaquants ont exploité des serveurs malveillants sur le réseau Electrum public et tiré parti d'une faiblesse des versions antérieures à 3.3.3, où un serveur pouvait renvoyer du texte enrichi arbitraire comme message d'erreur. Les utilisateurs qui tentaient d'envoyer un paiement voyaient ce qui ressemblait à une invite officielle d'installer une mise à jour, et le téléchargement était un logiciel malveillant. Les pertes signalées se sont chiffrées en centaines de bitcoin. Le client a été modifié pour supprimer la mise en forme des messages du serveur, mais la leçon demeure : un serveur public est un tiers non fiable avec lequel votre portefeuille communique constamment.
Serveur Electrum vs Neutrino
Un serveur Electrum fait la recherche pour vous et apprend ce que vous cherchiez ; Neutrino vous envoie la matière première et n'apprend donc presque rien. Le modèle Electrum est économique, quelques kilo-octets par requête et une réponse instantanée, ce qui explique sa domination chez les portefeuilles de bureau associés à un appareil matériel. Le modèle Neutrino télécharge un filtre compact pour chaque bloc et l'inspecte localement, en dépensant bien plus de bande passante pour éviter de révéler quels scripts ont correspondu. Choisissez le modèle serveur lorsque le serveur est le vôtre, et le modèle à filtres lorsqu'il ne peut pas l'être.