Los avances en el software de Bitcoin incluyen mejoras en la velocidad de operaciones y comunicación de nodos, aplicando sistemas como CPFP y bloques compactos. También los temas de seguridad y almacenamiento de información se presentan con mayor facilidad de uso para los usuarios
Bitcoin Core 0.13.0, la decimotercera generación de Bitcoin, lanzado por primera vez por Satoshi Nakamoto hace casi ocho años, ahora se encuentra presta para su lanzamiento. Este es uno de los pasos finales en el proceso de liberación de software e inicia el proceso de construcción Gitian.
Bitcoin Core 0.13.0 fue desarrollado por aproximadamente 100 colaboradores en un período de unos cinco meses. Y si bien gran parte del esfuerzo de desarrollo durante este tiempo se ha centrado en Segregated Witness, que se activará en una futura versión menor del software, Bitcoin Core 0.13.0 incluye una docena de mejoras notables en comparación con su antecedente.
Estos son los cambios más importantes.
Transacciones hijas pagan por transacciones padre.
El número de transacciones en la red Bitcoin ha estado creciendo constantemente a través del tiempo. Como resultado, más bloques se han estado llenando, y los mineros suelen cobrar tarifas más altas por incluir las transacciones en los bloques. Las transacciones que no incluyen los honorarios suficientes por lo general tardan más tiempo en confirmar, o incluso nunca se confirman en absoluto. Esto ha demostrado ser algo problemático, especialmente en los períodos en que se realizaron las llamadas “pruebas de stress” en la red, con picos en el número total de transacciones en la red y retrasos sustanciales en las operaciones.
Los usuarios pueden resolver este problema mediante la inclusión de una tasa más elevada en sus transacciones, incentivar a los mineros a dar prioridad a estas y no a otras. Esto es posible incluso después de que se haya realizado una operación, utilizando un Opt-in de reemplazar por tarifa (RBF por sus siglas en inglés); sin embargo, no muchas carteras incluyen esta opción todavía. Además, el RBF es sólo una opción del emisor de una transacción. Hasta ahora, el receptor no tenía forma de acceder a una posibilidad similar e incrementar la tarifa para aumentar la velocidad de la operación.
Este problema se resuelve eficazmente con un truco llamado “Child Pays for Parent“, “Hijos que pagan por sus padres“, (CPFP, por sus siglas en inglés). El CPFP es una política utilizada por los mineros para seleccionar las transacciones que incluirán en los bloques. Con CPFP, los mineros no necesariamente recogen las transacciones que más pagan, sino que recogen el conjunto más rentable de transacciones. En otras palabras: se selecciona una transacción de baja cuota si una operación posterior, que se basa en esta transacción de baja tarifa, ofrece una tasa lo suficientemente alta como para compensar al minero. Así, el minero incluirá ambas al mismo tiempo.
En la práctica, esto significa que el receptor de una transacción de baja tasa puede “conectarla” a una transacción de cuota alta, sin que eso cambie sus gastos. Así, el receptor no tendrá que esperar tanto tiempo para una confirmación mientras que el minero puede aumentar sus ingresos.
Soporte de Bloques Compactos
El protocolo peer-to-peer de Bitcoin actualmente es algo ineficiente. Los nodos se envían entre sí los datos de la mayoría de transacción dos veces: una como una transacción no confirmada a modo broadcast en tiempo real cada vez que se hace una transacción, que se envía desde la fuente través de la red, y otra como parte de un bloque cuando se confirma la operación por el minero que guardó la transacción en el último bloque.
Esto tiene algunas desventajas. Por un lado, el envío de datos de transacción requiere dos veces más ancho de banda de lo que realmente debería, lo que se suma a los gastos de funcionamiento de Bitcoin Core. En segundo lugar, y quizás más importante, el reenvío de nuevos bloques a varios compañeros al mismo tiempo puede causar picos significativos de ancho de banda.
Esto puede interrumpir el uso de Internet cada vez que se encuentra un nuevo bloque, lo cual puede ser molesto para los usuarios. Y, tal vez más importante aún, puede reducir la velocidad de propagación de bloques través de la red. Esto puede, a su vez, favorecer a las piscinas más grandes, incentivando de esta manera un paisaje minero más centralizado.
Los bloques compactos (BIP 152), creados por el desarrollador de Bitcoin Core y Blockstream, Matt Corallo, están diseñados para disminuir el exceso de datos en la transmisión. Cuando se encuentra un nuevo bloque, los nodos se comunican inicialmente sólo mediante hashes de datos de la transacción muy compactos. Como los nodos ya han recibido los datos de transacción completa cuando fue enviada originalmente por la red, pueden utilizar estos hashes para averiguar qué transacciones del bloque ya están incluidas en el mempool local y reconstruir el bloque a partir de la información que ya había recibido anteriormente.
Este truco no siempre funciona a la perfección. Si un nodo no ha recibido la transacción inicial antes de recibir los valores de hash, ese nodo, por supuesto, no puede seleccionar la transacción. Además, en raros casos raros, una operación incorrecta puede, mediante el hash, engañar al nodo haciéndole creer que recibió la transacción correctamente hasta que intenta reconstruir el bloque y lo que encuentra no suma.
En estos dos casos de fallo, el nodo simplemente pide los datos de transacciones específicas a los pares que ya conoce. Incluso con sólo algunas transacciones completas en ellos, los bloques compactos se transmiten por la red mucho más rápido, y requieren mucho menos ancho de banda.
Generación jerárquica determinística de claves
Hasta ahora, Bitcoin Core genera una par de nuevas claves, completamente al azar, una pública y otra privada, para cada nueva dirección Bitcoin. Si bien esto es importante por razones de seguridad y privacidad, también puede ser una carga para los usuarios. Con el fin de asegurar todas las claves privadas contra pérdidas, se necesitan hacer copias de seguridad periódicamente.
La Generación de Claves (BIP 32) Jerárquica Determinística (HD), un truco criptográfico desarrollado a lo largo de 2012 y 2013 por los desarrolladores de Bitcoin Core, Gregory Maxwell y el Dr. Pieter Wuille, y el desarrollador de Armory, Alan Reiner, resuelve este problema. Con la generación de claves de Jerarquía Determinista, Bitcoin Core crea un nuevo par de claves para cada nueva dirección, pero todas estas claves se derivan de una sola semilla de 12 palabras. Mientras los usuarios recuerden estas 12 palabras, pueden volver a generar todas las claves privadas y acceder a todos sus fondos.
Cabe señalar que el sistema HD de generación de claves no es una nueva característica en el mundo Bitcoin. Muchas carteras ya incluyen la opción desde hace varios años. Simplemente nunca existió en cliente Bitcoin de referencia, hasta ahora.
Rendimiento y seguridad
La memoria caché de la base de datos se ha incrementado, lo que permite que los nodos aceleren la validación de transacciones y otros procesos. La herramienta de línea de comandos Bitcoin ahora permite a los usuarios escribir frases y otra información confidencial de seguridad de forma interactiva, mejorando que esta información no se pueda almacenar en un texto plano.
El software está actualizado para utilizar C++ y Python 3.11, las nuevas versiones de los lenguajes de programación, que permiten funciones más potentes. También, ARM (una arquitectura específica de microprocesador) para Linux ahora es parte del lanzamiento, por lo que los usuarios no tienen que compilar esto por sí mismos.
Los datos relativos a las operaciones que en un mempool dependen unos de otros (como los utilizados con CPFP) pueden ser comunicados a programas externos. Asimismo, los nodos de la red pueden solicitar recibir sólo las transacciones que cumplan un determinado umbral de tarifa para prevenir los ataques de denegación de servicio. Y, por último, ha habido una gran cantidad de mejoras de bajo nivel a los protocolos peer-to-peer.
Articulo Original en DiarioBitcoin.com
Angel Leon, fundador de DiarioBitcoin.com