J'écris des contenus pédagogiques sur Bitcoin.
Comment fonctionnent les Watchtowers ?
- d’abord la méthode classique et brute via LND,
- puis une autre approche avec Eye of Satoshi,
- et enfin, en dernière partie, la configuration simplifiée d’une Watchtower sur votre nœud Lightning hébergé avec Umbrel.
1 - Configurer une Watchtower ou un client via LND
lnd prend en charge l’exécution d’une watchtower altruiste privée en tant que sous-système entièrement intégré à lnd. Les watchtowers constituent une seconde ligne de défense contre les scénarios de violation malveillante ou accidentelle lorsque le nœud du client est hors ligne ou incapable de répondre au moment de la violation, offrant ainsi un degré de sécurité accru pour les fonds des canaux.lnd peut désormais être configuré pour fonctionner comme client de watchtower, en sauvegardant des transactions chiffrées de remédiation de violation (dites "transactions de justice") auprès d’autres watchtowers altruistes. La watchtower stocke des blobs chiffrés de taille fixe et ne peut déchiffrer et publier la transaction de justice qu’après que la partie fautive a diffusé un état de commitment révoqué. Les communications client ↔ watchtower sont chiffrées et authentifiées au moyen de paires de clés éphémères, ce qui limite la capacité de suivi de la watchtower sur ses clients via des identifiants de long terme.lnd. De nombreuses autres fonctions liées aux watchtowers sont proches d’aboutir ou bien avancées ; nous continuerons de les livrer au fil des tests et dès qu’elles seront jugées sûres.to_local et to_remote des commitments révoqués ; la sauvegarde des sorties HTLC sera déployée dans une version ultérieure, le protocole pouvant être étendu pour inclure les données de signature supplémentaires dans les blobs chiffrés.Configurer une watchtower
watchtowerrpc, qui permet de communiquer avec la watchtower via gRPC ou lncli. Les binaires publiés incluent par défaut le sous-serveur watchtowerrpc.watchtower.active=1.lncli tower info :$ lncli tower info { "pubkey": "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63", "listeners": [ "[::]:9911" ], "uris": [ ], }
lnd -h :$ lnd -h ... watchtower: --watchtower.active If the watchtower should be active or not --watchtower.towerdir= Directory of the watchtower.db (default: $HOME/.lnd/data/watchtower) --watchtower.listen= Add interfaces/ports to listen for peer connections --watchtower.externalip= Add interfaces/ports where the watchtower can accept peer connections --watchtower.readtimeout= Duration the watchtower server will wait for messages to be received before hanging up on client connections --watchtower.writetimeout= Duration the watchtower server will wait for messages to be written before hanging up on client connections ...
Interfaces d’écoute
:9911, ce qui correspond au port 9911 sur toutes les interfaces disponibles. Les utilisateurs peuvent définir leurs propres interfaces d’écoute via l’option --watchtower.listen=. Vous pouvez vérifier votre configuration dans le champ "listeners" de lncli tower info. Si vous avez de difficulté à vous connecter à votre watchtower, vérifiez que le <port> est ouvert ou que votre proxy est correctement configuré vers une interface d’écoute active.Adresses IP externes
watchtower.externalip=, ce qui expose les URI complètes de la watchtower (pubkey@hôte:port) via RPC ou lncli tower info :$ lncli tower info ... "uris": [ "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@1.2.3.4:9911" ]
$ lncli wtclient add 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@1.2.3.4:9911
- Ouvrir le port 9911 (ou un port défini via
watchtower.listen). - Utiliser un proxy pour rediriger le trafic d’un port ouvert vers l’adresse d’écoute de la watchtower.
Services cachés Tor
$ lnd --tor.active --tor.v3 --watchtower.active
"uris" lors d’une requête lncli tower info :$ lncli tower info ... "uris": [ "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@bn2kxggzjysvsd5o3uqe4h7655u7v2ydhxzy7ea2fx26duaixlwuguad.onion:9911" ]
lnd. Pour l’instant, elle fait office de « liste blanche souple », car les clients doivent connaître la clé publique de la watchtower pour l’utiliser comme sauvegarde, en attendant des mécanismes de liste blanche plus avancés. Nous recommandons de NE PAS divulguer cette clé publique ouvertement, à moins d’être prêt à exposer votre watchtower à l’Internet entier.Répertoire de la base de données de la watchtower
watchtower.towerdir=. Remarquez qu’un suffixe /bitcoin/mainnet/watchtower.db sera ajouté au chemin choisi afin d’isoler les bases de données selon les chaînes. Ainsi, définir watchtower.towerdir=/path/to/towerdir produira une base à /path/to/towerdir/bitcoin/mainnet/watchtower.db./home/$USER/.lnd/data/watchtower/bitcoin/mainnet/watchtower.dbConfigurer un client de watchtower
- Activer le client de watchtower avec l’option
--wtclient.active.
$ lnd --wtclient.active
- L’URI d’une watchtower active.
$ lncli wtclient add 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@1.2.3.4:9911
Taux de frais des transactions de justice
wtclient.sweep-fee-rate, qui accepte des valeurs en sat/octet. La valeur par défaut est 10 sat/octet, mais il est possible de viser des taux plus élevés pour obtenir une priorité accrue lors des pics de frais. La modification de sweep-fee-rate s’applique à toutes les nouvelles mises à jour après redémarrage du démon.Supervision
lncli wtclient, les utilisateurs peuvent désormais communiquer directement avec le client de watchtower pour obtenir ou modifier des informations sur l’ensemble des watchtowers enregistrées.lncli wtclient tower, vous pouvez connaître le nombre de sessions actuellement négociées avec la watchtower ajoutée ci-dessus et déterminer si elle est utilisée pour les sauvegardes grâce au champ active_session_candidate.$ lncli wtclient tower 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63 { "pubkey": "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63", "addresses": [ "1.2.3.4:9911" ], "active_session_candidate": true, "num_sessions": 1, "sessions": [] }
--include_sessions.$ lncli wtclient tower --include_sessions 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63 { "pubkey": "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63", "addresses": [ "1.2.3.4:9911" ], "active_session_candidate": true, "num_sessions": 1, "sessions": [ { "num_backups": 0, "num_pending_backups": 0, "max_backups": 1024, "sweep_sat_per_vbyte": 10 } ] }
lncli wtclient -h :$ lncli wtclient -h NAME: lncli wtclient - Interact with the watchtower client. USAGE: lncli wtclient command [command options] [arguments...] COMMANDS: add Register a watchtower to use for future sessions/backups. remove Remove a watchtower to prevent its use for future sessions/backups. towers Display information about all registered watchtowers. tower Display information about a specific registered watchtower. stats Display the session stats of the watchtower client. policy Display the active watchtower client policy configuration. OPTIONS: --help, -h show help
2 - Installer votre propre Eye of Satoshi
-
teos : regroupe une interface en ligne de commande (CLI) et les fonctionnalités serveur essentielles de la watchtower. Deux binaires — teosd et teos-cli — sont produits lors de la compilation de ce crate.
-
teos-common : regroupe des fonctionnalités partagées côté serveur et côté client (utile pour créer un client).
-
Installez Bitcoin Core depuis les sources ou téléchargez-le. Après le téléchargement, placez le fichier bitcoin.conf dans le répertoire utilisateur de Bitcoin Core. Consultez ce lien pour plus d’informations sur l’emplacement où placer le fichier, car cela dépend du système d’exploitation utilisé.
-
Une fois l’emplacement identifié, ajoutez les options suivantes :
# RPC server=1 rpcuser=<your-user> rpcpassword=<your-password> # chaîne regtest=1
-
server : pour les requêtes RPC
-
rpcuser et rpcpassword : authentification des clients RPC auprès du serveur
-
regtest : non requis, mais utile si vous prévoyez du développement.
rpcuser=aniketh rpcpassword=strongpassword
-
Pour la partie watchtower, vous devez d’abord installer teos depuis les sources. Suivez les instructions données dans ce lien.
-
Après avoir installé teos avec succès sur votre système et exécuté les tests, vous pouvez passer à la dernière étape : configurer le fichier teos.toml dans le répertoire utilisateur de teos. Le fichier doit être placé dans un dossier nommé .teos (notez le point) sous votre répertoire personnel. Par exemple, /home//.teos sous Linux. Une fois l’emplacement trouvé, créez un fichier teos.toml et définissez ces options en cohérence avec les changements effectués sur bitcoind :
# bitcoind btc_network = "regtest" btc_rpc_user = <your-user> btc_rpc_password = <your-password>
btc_rpc_user = "aniketh" btc_rpc_password = "strongpassword"
ERROR [teosd] Not enough blocks to start the tower (required: 100). Mine at least 100 more
3 - Configurer une Watchtower sur Umbrel
-
Watchtower Service : cette option permet d’héberger une watchtower, c’est-à-dire un service qui surveille les canaux d’autres nœuds afin de détecter toute tentative de fraude. En cas de violation, votre watchtower publie une transaction sur la blockchain afin de permettre aux utilisateurs qui l’emploient de récupérer leurs fonds verrouillés. Une fois activée, l’URI de votre watchtower apparaît et peut être communiqué à d’autres nœuds pour qu’ils l’ajoutent à leur client watchtower ;
-
Watchtower Client : cette option permet de se connecter à des watchtowers externes afin de protéger vos propres canaux. Une fois activée, vous pouvez ajouterun ou plusieurs services de watchtower auxquels votre nœud transmettra les informations nécessaires sur ses canaux. Ces watchtowers surveilleront alors leur état et interviendront en cas de tentative de fraude.
023bad37e5795654cecc69b43599da8bd5789ac633c098253f60494bde602b60bf@iiu4epqzm6cydqhezueenccjlyzrqeruntlzbx47mlmdgfwgtrll66qd.onion:9911
Auteur
Ce tutoriel a été écrit par Loïc Morel
Vous pouvez dire merci en donnant un pourboire au professeur.
Crédits
Ce tutoriel a été relu par LoicPandul & JosephQuaye
Même si cette page est dans sa langue d'origine, une relecture humaine est toujours nécessaire pour garantir son exactitude.
LoicPandulJosephQuaye0 satsChaque élément de contenu sur la plateforme est le produit d'un effort collaboratif : chaque leçon, traduction et révision est rendue possible grâce au travail des contributeurs. C'est pour cette raison que nous sommes toujours à la recherche de correcteurs qui peuvent examiner notre contenu dans un grand nombre de langues. Si vous souhaitez participer au processus de relecture, veuillez nous rejoindre dans notre groupe Telegram et consulter notre tutoriel. Nous vous rappelons que ce contenu est open-source - sous licence CC BY-SA - et peut donc être partagé et utilisé librement, à condition que la source originale soit reconnue.
