Redes de pruebas en Bitcoin

Redes&Bitcoin

¿Sabías qué existe más de una red en la que puedes realizar diferentes pruebas con Bitcoin?.

 

Una gran mayoría de personas considera que Bitcoin esta estancado y que es muy complicado que evolucione.

 

Sin embargo, la realidad es que el desarrollo y evolución de Bitcoin está más vivo que nunca y no hablo sólo de los desarrollos que se realizan en Lightning Network, sino a los propios de Bitcoin, hay una gran comunidad trabajando en ello, desarrollando nuevas formas de asegurar las transacciones, de mejorar la privacidad, la seguridad, las herramientas que permitan hacer crecer el ecosistema y de potenciar el uso de Bitcoin.

 

Para ello los desarrolladores de Bitcoin han ido elaborando herramientas que permitan realizar esas tareas, así como dotar de una red que lo acompañe. Por ello es de entender que al ser Bitcoin una red descentralizada, resistente a la censura y no permisionada, conseguir esto, es en si mismo una tarea digna de admiración y de reconocimiento.

 

En este artículo vamos a conocer parte de esas herramientas con las que Bitcoin cuenta para el desarrollo y crecimiento, estoy hablando de las redes de Bitcoin. Estas redes permiten realizar diferentes tareas en diferentes entornos que a su vez tienen diferentes características y que son extremadamente útiles dependiendo de las necesidades de los casos de uso que se quieran probar, testear o estresar. Incluso estas redes o entornos como las voy a llamar, nos sirven de herramientas de educación.

 

No es menester de este artículo dar todo el detalle acerca del funcionamiento de las redes ya que es muy extenso y dependiendo del entorno las casuísticas cambian, el objetivo del artículo es darlas a conocer y brevemente comentar como podrías configurarlas para que puedas aprender con ellas.

 

mainnet

Como su nombre lo indica es la red principal de Bitcoin, es dónde se realizan las transacciones de intercambio de Bitcoin real, el bitcoin que se intercambia en esta red es el que tiene valor y esta sustentado por la minería, la PoW, los Nodos validadores y las reglas de consenso entre otras cosas que sustentan a Bitcoin.

 

Para iniciar tu Nodo y ayudar en la red principal, debes instalar el software de un cliente de Bitcoin, en este caso el que más se usa es el de Bitcoin Core, aunque no es el único y configurarlo para que al iniciar lo haga con los parámetros correctos para trabajar en esta red. Aquí te dejo un enlace a algunos de los parámetros de configuración que se pueden usar. De las cosas más importantes a tener en consideración, es que la red principal se ejecuta «escuchando» por el puerto 8333 y para los mensajes RPC por el puerto 8332. No me explayo mucho más pero las características y potencial de esta red son, como es de suponer las mejores.

Ejemplo_mainnet_bitcoin.conf

 

testnet

Es una red de pruebas, para ejecutar en esta modalidad basta con arrancar el cliente bincoind o bitcoin-qt con el parámtero -testnet o bien en el archivo de configuración (bitcoin.conf) indicar el valor testenet=1.

Esta diseñada para funcionar de forma bastante parecida a la red principal aunque tiene su variaciones, por ejemplo el bloque génesis no es el mismo que el de la cadena principal de la red principal, la dificultad es más baja que la de la red principal . Igualmente los bitcoins generados en esta red solo son validos aquí y no tienen ningún valor. El puerto principal por el que la red transmite es el 18333 en lugar del 8333 de la red principal y el puerto para las transmisiones RPC es el 18332.

 

Una característica importante de esta red es que si haces conexión con otros nodos, así como también hay transmisión de bloques, maneja una versión diferentes de las direcciones que se generan por lo cual las direcciones de esta red no son validas para enviar o recibir bitcoin de la red real.

 

Si no se encuentra ningún bloque en 20 minutos, la dificultad se restablece automáticamente al mínimo para un solo bloque, tras lo cual vuelve a su valor anterior. Aunque recibe mucho menos bloques que la red principal, es necesario contar conque se requiere un tamaño medio de almacenamiento, más de 15GB seguramente.

 

regtest

O regression test mode, es una red diseñada para ser privada y sólo para pruebas. Es decir puedes crear una red privada y hacer pruebas y experimentos con ella, la red puede ser incluso de un solo nodo. Para ejecutar en esta modalidad basta con arrancar el cliente bincoind o bitcoin-qt con el parámtero -regtest o bien en el archivo de configuración (bitcoin.conf) indicar el valor regtest=1.

 

Como decía no es una red pública, por lo cual no hay pares externos a tu red a los que conectar. Puedes añadir nodos con la opción addnode=»», en regtest, la topología de la red es completamente manual. Tienes el control sobre qué bloques se extraen y cuándo. Esta es mi opción favorita para realizar pruebas y entender el funcionamiento de Bitcoin, porque las reglas son bastante similares a la red principal, pero tu tienes el control además de que te avitas el problema del almacenamiento ya que no tienes que descargar la blockchain y tampoco tienes que esperar por el minado de bloques, tu controlas cuando y como los generas. Tiene el inconveniente y es artificial si deseas usarla para probar los efectos reales de la red a gran escala.

 

Al ser regtest una red interna, puedes configurarla para que transmita por el puerto que tu consideres, es decir puedes usar el puerto 8333 o el 18333 para transmisión de transacciones y puedes usar el puerto 18332 o el 8332 para las comunicaciones RPC (o el que consideres). Te dejo aquí un archivo que puedes descargar para ver cómo de siemple es una configuración para usar esta modalidad, que como ya te decía me es mi favorita para aprender, es para efectos didacticos la mejor alternativa desde mi punto de vista.

 

Ejemplo_regtest_bitcoin.conf

 

 

signet

Signet es una red relativamente nueva, se definició en el BIP325 y según el repositorio de BIP de Bitcoin aún esta en draft, es decir no ha sido aprobado y liberado el BIP, aunque la red ya esta en uso. Añade un requisito de firma adicional para la validación de bloques. Signet es similar en naturaleza a la regtest, aunque la principal diferencia entre signet y regtest es que signet es una red real, a diferencia de regtest, en signet, hay una red real, con nodos públicos.

Para ejecutar en esta modalidad basta con arrancar el cliente bincoind o bitcoin-qt con el parámtero -signet o bien en el archivo de configuración (bitcoin.conf) indicar el valor signet=1.

 

Signet es más similar a testnet ya que al igual que testnet permite la lógica del consenso, la búsqueda de pares, la propagación de transacciones y bloques, cómo se seleccionan las transacciones, etc.

Pero la principal diferencia entre signet y testnet es que signet tiene bloques que se producen uniformemente distribuidos (como los que están en la red principal), e incluso tiene reorgs planificados para permitir probar software bajo estas condiciones,  ya que el principal problema de testnet es que los bloques se extraen muy rápido y a menudo se agrupan. Eso ocasiona que haya momentos en los que no hay bloques minados o enseguida haya muchísimos bloques en un corto período de tiempo. Con signet se pretende evitar este problema.

 

Signet escuha por el 38333, en lugar del 8333 de la red principal, y el puerto de transmisión de RPC es el 38332, en lugar del 8332. Las direcciones que se generan también son diferentes por lo que no pueden usarse en la red principal (al igual que los de la red principal no pueden usarse en esta red). El bloque genésis es diferente y la dificultad también. Otra diferencia es que Segwit siempre está activo. Para mayor información te recomiendo pases por la definción del propio BIP325.

 

Espero que esta información te haya sido útil e interesante para conocer más del mundo Bitcoin y entender como Bitcoin no es un ecosistema estancado o parado, Bitcoin esta continuamente en evolución y tiene y está generando las herramientas para no pararse nunca!

 

Te agradezco como siempre el tiempo que has dedicado en leerme. Si te ha gustado este artículo o si lo consideras últil para otras personas te agradecería lo compartieras, es la mejor forma de divulgar el conocimiento.

Puedes dejar una propina con el botón «Invítame un café».

O mediante Lightning network:

⚡[email protected]

También puedes hacerlo onchain, vía Paynyms de Samourai Wallet:

PayNym: +decentralized

5/5