Bitcoin à travers le mixnet

Photo by GuerrillaBuzz Blockchain PR Agency on Unsplash
La mise en place de cela demande d’être à l’aise en ligne de commande et le tutoriel se déroule sur GNU/Linux. Les performances actuelles ne sont pas très bonnes, nous proposons ce tutoriel à but éducatif et uniquement comme “Proof of Concept”
3 programmes sont nécessaires afin que Bitcoin Core utilise le mixnet pour se connecter aux autres nodes. Il n’y a aucune magie ici, le fullnode va juste utiliser un proxy socks5 connecté au réseau Nym, comme il le ferait pour Tor ou i2p.
nym-client: https://github.com/nymtech/nym/releases/download/nym-binaries-v1.1.8/nym-client
nym-network-requester https://github.com/nymtech/nym/releases/download/nym-binaries-v1.1.8/nym-network-requester
nym-socks5-client https://github.com/nymtech/nym/releases/download/nym-binaries-v1.1.8/nym-socks5-client
Pour terminer Bitcoin Core qui va s’occuper de se synchroniser avec les pairs: https://bitcoin.org/en/download
Le nym-client va permettre de se connecter à une gateway qui elle va transmettre les paquets au sein du mixnet
Le nym-network-requester est l’élément qui va permettre d’envoyer et recevoir des requêtes vers des services en dehors du mixnet, dans ce cas les autres fullnodes sur Internet
Le nym-socks5-client va mettre à disposition un proxy socks5 où le fullnode enverra ses requêtes
Néamoins avec la configuration ci-dessous, votre adresse IP ne sera pas “cachée”. Pour bien faire il faudrait utiliser un service externe qui vous mixe avec d’autres personnes dans le but de vous offrir le plus grand anonymat pour protéger votre adresse notamment.
Connexion au Mixnet
Il faut tout d’abord télécharger et initialiser le nym-client
# Download the nym-client
wget https://github.com/nymtech/nym/releases/download/nym-binaries-v1.1.8/nym-client
# Init the nym-client
./nym-client init --id bitcoin
Si tout se passe bien vous devriez avoir quelque chose comme dans l’image ci-dessous

La valeur de la dernière ligne “The address of this client is…” doit être stockée, elle sera réutilisée plus tard, dans ce cas 45pyzdKwsADCTzWqDxrnaa5XYgncPWD445yPvphtJ22N.BQiWhAjGNdLzh3JR4sCqULSDo9fZ3SVLP6tYHWYj9tfv@5vC8spDvw5VDQ8Zvd9fVvBhbUDv9jABR4cXzd4Kh5vz. Ensuite le nym-client peut être démarré
./nym-client run --id bitcoin
Voilà ce que vous devriez avoir

Gardez cette fenêtre ouverte et il faut maintenant activer le nym-network-requester dans une autre fenêtre
# Download the network-requester
https://github.com/nymtech/nym/releases/download/nym-binaries-v1.1.8/nym-network-requester
# Start the network requester
./nym-network-requester run --open-proxy
Le paramètre open-proxy est important car il va permettre de laisser toutes les requêtes passer. La fenêtre doit rester ouverte
A nouveau voilà ce que vous devriez voir si tout s’est bien passé

Et pour terminer, le nym-socks5-client doit être téléchargé, initialisé et démarré. Dans l’option “Provider” l’adresse récupérée plus tard doit être utilisé, dans ce cas 45pyzdKwsADCTzWqDxrnaa5XYgncPWD445yPvphtJ22N.BQiWh…@5vC8sp…
# Download the nym-socks-5-client
https://github.com/nymtech/nym/releases/download/nym-binaries-v1.1.8/nym-socks5-client
# Init with nym-client value. Replace the value after the --provider by the nym-client address
./nym-socks5-client init --id btc --provider 45pyzdKwsADCTzWqDxrnaa5XYgncPWD445yPvphtJ22N.BQiWhAjGNdLzh3JR4sCqULSDo9fZ3SVLP6tYHWYj9tfv@5vC8spDvw5VDQ8Zvd9fVvBhbUDv9jABR4cXzd4Kh5vz
# Start the nym-socks5-client
./nym-socks5-client run --id btc
Si tout s’est bien passé voilà ce que vous devriez avoir. Bien sûr certains éléments seront différent

Démarrer Bitcoin Core
Rien de plus simple, il suffit juste d’exécuter la commande ci-dessous
./bin/bitcoind -proxy=127.0.0.1:1080 -onion=0
Si le noeud a bien démarré vous devriez voir le téléchargement des blocs

Maintenant des informations devraient dérouler sur les 4 fenêtres de terminal
Conclusion
2 choses sont à noter ici, dans une installation idéale il faudrait utiliser un provider externe afin de protéger son adresse IP mais c’est suffisant dans le cadre de cette démonstration. Ensuite pour offrir une vrai résilience et fonctionner réellement en pairs à pairs, Bitcoin Core dans ce cas devrait intégrer directement Nym dans son code, ceci permettrait de se connecter directement à d’autres clients tout en restant sur le mixnet et de profiter des SURB par exemple qui permettent d’avoir une communication anonyme




