La evolución del Bitcoin ha de probarse y el mejor lugar para ello es la testnet o red de pruebas. En este nuevo articulo conocerás todo lo relacionada sobre la evolución y los usos que tiene la red de pruebas en la criptomoneda más grande de todas.
La red Testnet sin duda alguna es una creación muy útil para los desarrolladores de criptomonedas como Bitcoin. Esto gracias a que es un espacio en el que puedes hacer cualquier tipo de modificación sin correr el riesgo de que todo falle.
En Bitcoin la red testnet es muy útil pero seguramente te preguntarás: ¿Cómo empezó? ¿Qué otros usos tiene?. Pues bien todo eso y mucho más lo responderemos a continuación.
Los inicios de la Bitcoin Testnet
Los inicios de la red testnet en Bitcoin se remontan al año 2010, para ser más exacto al 19 de octubre de 2010. En ese momento, Gavin Andresen envía un parche para habilitar esta funcionalidad que fue aceptado por Satoshi Nakamoto. El parche en cuestión podemos verlo aquí, y con ello da inicio a la primera testnet de Bitcoin.
Con la creación de la primera red de pruebas, se habilitaba la capacidad de que los desarrolladores probaron los cambios del software sin tocar la red principal. Las ventajas de esto eran inmensas, empezando porque se podía acelerar el desarrollo del software y ampliar su base de pruebas.
Sin embargo, el 3 de febrero la red Testnet1 sería reiniciada. Esto a petición del desarrollador David François quien elevaría un parche al código de Bitcoin Core. Esta nueva testnet fue conocida como Testnet2. La Testnet2 por otro lado presentó dos graves problemas:
- La red comenzó a tener una alta dificultad.
- Debido a la alta dificultad, muchos usuarios se aprovecharon para vender las monedas Testnet como bitcoins reales.
Ante esta situación, el 12 de abril de 2012, Andresen reiniciaría la red e iniciaría la nueva testnet de Bitcoin, la actual Testnet3. Con este cambio, los desarrolladores de Bitcoin se asegurarían de que fallaran como los de Testnet1 y Testnet2 no volvieran a ocurrir. Algo que de hecho han logrado, puesto que Testnet3 aún sigue activo bajo sus reglas de consenso propias.
Mainnet y Testent ¿Cuáles son sus diferencias?
A Bitcoin se le asocian dos redes, aunque son redes totalmente separadas:
- Red principal: red principal
- Testnet (o Testnet3): Red de pruebas
Mientras que en la red Mainnet viven los bitcoins que conocemos, en la red Testnet “vive” una criptomoneda idéntica al bitcoin pero con su propio tipo de direcciones y su propio registro de contabilidad o blockchain. Ponemos la palabra vive entre comillas, pues lo único que existe es una contabilidad. Para que tengas una mejor idea mira el siguiente ejemplo:
En Testnet las direcciones no empiezan por “1” o “3” como en Bitcoin, sino por “m” o “2“. Ejemplos:
mvN7z3C3GNwTkeEY2tvAQzragtDoiQZ5CF
2NEPMeQcRF7j3uZvQYqsEQxxdCqEnNgDyXd
Esta diferencia parece pequeña, pero con ello se garantiza que sea imposible enviar bitcoins desde mainnet a la testnet. Esto debido a que las monedas de testent carecen de valor alguno. La razón de esto es muy sencilla, minar monedas en testnet es muy sencillo, tan sencillo que un computador puede hacerlo. Esto obviamente no se compara con la dificultad y la inversión que debe hacerse para lograr el mismo cometido en la red Mainnet. Pero si deseas saber más sobre como toma su valor el Bitcoin te recomendamos leer este otro articulo.
Otras diferencias entre mainnet y testnet son las siguientes:
- Testnet usa un valor diferente en el parámetro ADDRESSVERSION. Este parámetro es el que acaba creando direcciones diferentes y por eso ninguna dirección de Testnet funciona en Bitcoin. Mientras que Bitcoin usa 0x00 en Testnet se usa 0x6F. Es algo clave para que se puedan identificar visualmente.
- La red Testnet utiliza un bloque Génesis diferente al de la red Bitcoin principal. El bloque Génesis es la semilla del cual empieza a crearse el libro de contabilidad, el blockchain. Solo cambiando el bloque Génesis se empieza una nueva criptomoneda, pues empiezas un nuevo libro de contabilidad.
- La comprobación IsStandard() escrita en el código de Bitcoin se desactiva en Testnet, lo que permite un escenario perfecto para experimentar con transacciones y nuevas ideas.
- En el arranque de Testnet usa diferentes semillas de DNS.
- La cabecera de los mensajes del protocolo es 0x0B110907 en vez de 0xF9BEB4D9 que se usa en Bitcoin.
- El programa de Bitcoin es un nodo de una red P2P y necesita comunicarse con otros nodos de la red. Normalmente usa el puerto 8333 del ordenador, pero en modo Testnet usa el puerto 18333 para poder operar ambos modos al mismo tiempo en un mismo ordenador. Un puerto son puntos de entrada y salida de información que todos los ordenadores tienen.
- El programa de Bitcoin también permite comunicarse con otros programas, por ejemplo los que como desarrollador puedes crear tu. Este es el puerto usado para el protocolo RPC. Testnet usa 18332 mientras que Bitcoin usa 8332.
- Si un bloque no ha sido encontrado en 20 minutos, la dificultad se reinicia automáticamente.
¿Por qué se ha creado y está tan integrado?
Seguro que el nombre de “Testnet” te da pistas de por qué se ha creado, si no a continuación te dejamos las dos claves para entenderlo:
Para mejorar Bitcoin: Es el escenario perfecto donde analizar el funcionamiento de nuevas mejoras. Ofrece una red muy similar a Bitcoin, con las mismas reglas y misma forma de operar. Antes de desplegar un cambio en la versión Mainet se implementa en esta red y se observa el resultado sin grandes consecuencias.
Para integrar Bitcoin: Si quieres crear cualquier herramienta que use Bitcoin necesitas poder hacer pruebas de sus transacciones y capacidades trabajando con tu código, pero ese código debe ser totalmente funcional a la hora de trabajar con bitcoins.
Y es que la diferencia principal de la red de testeo de Bitcoin con la red principal es que sus monedas no tienen valor, puesto que minarlas no conlleva ningún coste considerable.
Imaginemos que alguien propone una mejora para Bitcoin. Una vez se desarrolla esta mejora debe probarse, pues podría romper Bitcoin, pero no puede probarse en un sitio que funcione bajo otra lógica diferente. Esta mejora puede ejecutarse en la red Testnet o incluso en una nueva “Testnet”.
Un caso de uso de la red Testnet lo vemos en SegWit. Sin testnet, las pruebas de SegWit hubieran resultado prácticamente imposible dentro de la red principal sin causar caos debido a los cambios que dicha implementación necesitaba realizar.
Las monedas de Testnet no tienen valor
Pese a ser una criptomoneda casi idéntica a Bitcoin, como te hemos explicado arriba (tiene 21 millones, se mina el bloque cada 10 minutos,…), esta moneda no tiene valor. No importa que tengas miles.
Esto es así porque esta moneda es muy fácil de conseguir, se ha creado para que desarrolladores tengan un entorno donde probar cosas sin perjuicios económicos.
Consejo: ¡Cuidado con las estafas! Podrían intentar venderte monedas de la red de Testnet. Deberías estar muy despistado y ser muy novato para caer en algo así, pero puede ocurrir. Recuerda cómo empiezan las direcciones de la red Testnet. Ahí no se pueden recibir nunca bitcoins.
Testnet para aprender a usar Bitcoin
Testnet es el Bitcoin de los novatos. ¿Por qué razón?. Pues bien, en ella se mueve una criptomoneda que no cuesta nada de dinero y que la dan gratis pero que funciona con las mismas reglas de Bitcoin. Esto lo hace perfecta para el novato que quiere probar cómo funciona Bitcoin sin necesidad de comprar bitcoins. En ella, los monederos, mandar y recibir transacciones, toda la operativa es la misma. Visualmente solo verás que cambia la dirección.
Muchos monederos Bitcoin pueden operar con esta red simplemente apretando un botón y existen webs (llamadas comúnmente faucets) que regalan las monedas.
Imagina que eres profesor y quieres que tus alumnos experimenten o que quieres hacer tu primera experiencia. Aunque podrías tirarte al barro y hacerlo con dinero real, también puedes hacerlo en Testnet.
Mineria
Como hemos dicho, las monedas de la red de pruebas se regalan, es decir: la complejidad de minar en la red de pruebas de Bitcoin es ridícula. Con un ordenador viejo puedes minar por CPU sin parar, con un coste extra de luz casi cero.
Testnet está pensada para tener una complejidad muy baja no obstante, en cada bloque y como ocurre en Bitcoin, esta va aumentando.
Esto quiere decir que la complejidad podría elevarse tanto que nadie minase, pues son monedas que no tienen valor. Para resolver esto, y es una diferencia de Bitcoin que con Testnet3 se agregó complejidad, Testnet está diseñado para que cuando no pueda minarse un bloque debido a su complejidad, este pase automáticamente a niveles muy bajos: se “reinicia” la.
Tamaño del Blockchain
Como hemos indicado, Testnet tiene su propio registro de contabilidad, blockchain. Pero este registro no tiene la actividad frenética del Bitcoin. Mientras que el Blockchain de Bitcoin superó ya los 260 GB, el de Testnet apenas supera a los 23 GB.
Y, ¿qué pasa cuando la cadena ocupa mucho?. Pues una cadena de bloques de muchos gigas también podría hacer inmantenible su mantenimiento si no hay incentivos. Lo curioso es que antes de tomar un tamaño relevante se terminan las monedas a emitir. Como puedes observar ya están a punto de emitirse los 21 millones límite, algo que en Bitcoin se espera para el año 2140.
¿Casi 21 millones de monedas emitidas en solo 4 o 5 años?. Parece algo extraño, porque si por cada bloque se liberan una cantidad de monedas bajo las mismas reglas de Bitcoin y decíamos que la red de pruebas de Bitcoin tiene la misma lógica de minado que la red principal, deberían tardar también unos 120 años, 10 minutos de media por bloque.
El motivo de esto es debido a la funcionalidad comentada anteriormente de Testnet3: Cuando la complejidad aumenta se reinicia, y permite que muchos bloques puedan minarse en menos tiempo, reduciendo la media de tiempo por bloque en mucho.
Es decir, mientras que en Bitcoin se puede tardar alrededor de 1000 minutos para minar 100 bloques, Testnet tarda mucho menos, tal vez entre 100 y 200 minutos (es solo una estimación viendo los gráficos)
¿Y qué pasa si se emiten los 21 millones?. Posiblemente se acuerde una nueva Testnet, la 4. El objetivo es no tener valor para que constantemente estén generándose monedas que permitan hacer pruebas que mejoren Bitcoin y su ecosistema.
RegTest, probando regresiones en Bitcoin
El software Bitcoin Core cuenta también con la configuración de una red aún más desconocida (pese a estar definida en su documentación), la llamada RegTest (prueba de regresión), que también puede arrancarse con un parámetro en la línea de comando.
> bitcoind -regtest -daemon Bitcoin server starting
Fue añadida a la versión Bitcoin Core 0.9.0, que se lanzó en marzo 2014, y se creó como un modo de pruebas alternativo.
Esta red puede ser utilizada para crear Blockchains con las mismas características que Testnet pero solo entre nodos que nosotros deseemos. Es decir, con este modo podemos crear blockchains privadas que operan bajo nuestro control.
Algunos desarrolladores opinan que es una de las vías perfectas para empezar a crear nuevas funcionalidades y hacer investigaciones con la tecnología Blockchain, todo ello bajo un entorno 100% controlado.