Vamos a revisar otra alternativa de red para Bitcoin y cómo configurarla en Bitcoin Core
Para conectar con otros pares o nodos, Bitcoin trata de utilizar diferentes redes para protegerse de ataques y/o de la censura.
Las conexiones a Internet más comúnmente usadas son usando IPv4 y más recientemente IPv6 (versiones del protocolo IP), sin embargo tienen la desventaja de estar expuestas a ciertos ataques. Es por ello que en Bitcoin se busca usar otro tipo de redes que pueden ayudar a diversificar las conexiones, a dar mayor privacidad y además a evitar la censura.
No es objeto de este artículo analizar técnicamente ni detallar pros o contras. El objetivo es comentar brevemente otro tipo de red, y además ver como podemos configurarla en Bitcoin Core, para así poder habilitarla y usarla; esta red se llama I2P.
I2P son las siglas que usa el proyecto The Invisible Internet Project, el cual busca ofrecer una capa de conexión totalmente cifrada que permita anonimizar las conexiones entre equipos, protegiendo su actividad y su ubicación.
I2P es software libre lo que significa que su código es de libre distribución y puede ser revisado y usado de igual forma, libremente.
Como indican en su web, la red I2P se basa en el establecimiento de conexiones tipo túnel (entrantes y salientes). I2P Utiliza estos túneles entre el usuario y sus pares, por lo que ocultan la procedencia del tráfico, hacía dónde se dirige o cuál es el contenido (la comunicación es encriptada).
Una cosa interesante que proclama I2P es que el reconocimiento de patrones de envío de paquetes es prácticamente imposible. También indican que la red es altamente resistentes a la censura y al bloqueo por geolocalización. Si te interesa profundizar más en el tema, puedes consultar más información en la web del proyecto: I2P.
¿Cómo llega esto a Bitcoin?.
Desde 2012, se empezó a comentar entre los usuarios y desarrolladores de Bitcoin que era necesario tener alternativas a las redes usadas, entre ellas Tor, que permitieran la resistencia a los ataques que la red pudiera tener, con el objetivo de no tener solo como alternativa la red Tor.
En 2013 se crea un fork de Bitcoin Core que permiten conectar a la red I2P pero no tienen demasiado éxito entre los usuarios.
Bitcoin Core que ha sido durante mucho tiempo el cliente de mayor uso en la red, incorporó en la versión 22 (2021) el soporte que permite que Bitcoin Core se conecte a I2P.
Como he comentado no es el objetivo de este artículo detallar técnicamente el funcionamiento de las redes sobre las que Bitcoin puede conectarse, sin embargo un poco de contexto creo que era necesario.
Pero a pesar a que desde el 2021, con la versión 22, ya tenemos posibilidad de conectar a la red I2P, su adopción esta aún muy lejos de los niveles que tiene por ejemplo Tor.
Por ello espero que los siguientes pasos te animen a usar I2P. Además, es importante recalcar que es un complemento a otras redes, no excluyente, es decir, puedes tener tú nodo conectado a la Red de Tor y a I2P a la vez, sin ningún problema, y obviamente, si una red tuviera problemas, estarías usando la otra red.
Lo primero que tenemos que hacer, y aquí me voy a centrar en linux Ubuntu, es instalar el cliente I2P correspondiente al cliente desarrollado en lenguaje de programación C, existen otros clientes, como el desarrollado bajo Java, pero como el objetivo de este artículo no es explicar el uso de todas las funcionalidades de Ip2, sino solamente como conectar Bitcoin Core, el cliente C es el más fácil y sencillo de configurar.
Si quieres saber como instalarlo en otros sistemas, en este link podrás ver las instrucciones y la configuración de Bitcoin Core será la misma para todos los sistemas (en teoría, no lo he probado)
Entonces lo primero que hay que hacer es instalar el repositorio, para ello ejecutamos la instrucción
sudo add-apt-repository ppa:purplei2p/i2pd
Posteriormente actualizamos para que lea el nuevo repositorio:
sudo apt update
Instalamos nuestro software
sudo apt install i2pd
Una vez instalado, tenemos que habilitar el servicio i2pd, iniciarlo y revisar su estatus
sudo systemctl enable i2pd.service
sudo systemctl start i2pd.service
sudo systemctl status i2pd.service
Si todo está bien, veremos una imagen como ésta, indicando que el servicio está «up and running».
Ahora, en nuestro archivo de configuraciones de Bitcoin Core, llamado bitcoin.conf, vamos a incluir la siguiente configuración que es la que nos va a permitir habilitar y conectar con la red I2P
debug=i2p # nos permitirá ver en el archivo debug.log información referente a este tipo de conexiones
onlynet=i2p # nos permite indicar que se conecte solamente con pares desde la red i2p, recuerda que no es excluyente, podrías tener además la línea onlynet=onion y estarias conectando a ambas redes
i2psam=127.0.0.1:7656 # indica a Bitcoin Core cual es el proxy y puerto a usar y es el por defecto en la instalación de i2pd
i2pacceptincoming=1 # nos permite habilitar las conexiones entrantes vía i2p
Adicional a ello, si quisieras reducir el tiempo que la red requiere para descubrir a otros pares bajo esta red y conectarlo, puedes añadir algunos nodos manualmente, esto en realidad no es tan necesario (salvo por ahorrar tiempo) ya que Bitcoin Core tienen configurados algunos nodos semilla de esta red, por lo que los consultará para ir obteniendo pares a conectar. Por lo que si quieres puede añadir además estas líneas
Nota: son nodos conocidos en MAINNET, no valen para testing u otras redes internas de Bitcoin
# manually added 2021-08 for minimal i2p bootstrap support
addnode=xzoyoujmunmbf53zlruufdkcq7lvm35zf22zqpgfwjt3gl5hexrq.b32.i2p:0
addnode=dbm4jht7uyxgy5h4kpp4t65dwqjykv5kltitbzuhtjm4ccqnrpha.b32.i2p:0
addnode=bitcornrd36coazsbzsz4pdebyzvaplmsalq4kpoljmn6cg6x5zq.b32.i2p:0
addnode=mjpulaafdyuanouslfpjcsvumi4edtckfu3ffn3ipabkxj4sn35q.b32.i2p:0
addnode=c4gfnttsuwqomiygupdqqqyy5y5emnk5c73hrfvatri67prd7vyq.b32.i2p:0
Una vez realizado esto, salvas tu archivo, y arrancas nuevamente bitcoind (o bitcoin-qt si estas usando la interfaz gráfica).
Con esto ya estaría, para validar que tu nodo esta preparado para conectar y recibir conexiones de esta red, podrías revisar en el archivo debug.log que no haya ningún error referente a i2p y que además te ha asignado una dirección tipo i2p, algo como lo que se ve en este vídeo.
Por favor, si te ha parecido útil este contenido, por favor ayúdame a mantener el sitio en funcionamiento, déjame una propina aquí o ayúdame compartiendo el contenido para que llegue a más gente y tal vez algunos más puedan contribuir. El objetivo es poder costear el hosting del sitio pero no es con ánimo de lucro. Te agradezco desde ya, el apoyo!!
Puedes dejar una propina con el botón «Invítame un café».
O mediante Lightning network:
También puedes hacerlo onchain, vía Paynyms de Samourai Wallet:
PayNym: +decentralized