-
El protocolo de pago BIP 70 ha sido eliminado de la Interfaz Gráfica de Usuario (GUI).
-
El formato de dirección Bech32 ha sido establecido como la opción predeterminada para Bitcoin Core.
Este 24 de noviembre de 2019 marcó el lanzamiento oficial de Bitcoin Core 0.19.0, la decimonovena versión del cliente de software original de Bitcoin lanzado por Satoshi Nakamoto hace casi 11 años y que sigue siendo la implementación dominante de Bitcoin en la red.
No obstante, debido a un problema que salió a la luz en una fase avanzada del proceso de lanzamiento de Bitcoin Core 0.19.0, la versión publicada para su descarga es en realidad 0.19.0.1.
Supervisado por el encargado principal de Bitcoin Core, Wladimir van der Laan, esta última versión fue desarrollada por más de 100 colaboradores en un período de seis meses. Bitcoin Core 0.19.0 incluye una serie de mejoras de rendimiento, modernizaciones y correcciones de errores, así como otros cambios.
Direcciones Bech32 predeterminadas
El formato de dirección Bech32 (BIP 173) ya había sido introducido en Bitcoin Core 0.16.0, lanzado a principios de 2018, pero ahora es por primera vez establecido como la opción predeterminada en la Interfaz Gráfica de Usuario (GUI) de la cartera Bitcoin Core.
Las direcciones de Bech32 son las direcciones que empiezan por «bc1» (a diferencia de las direcciones que empiezan con 1 o 3). Estas direcciones también son un poco más largas, pero utilizan menos caracteres diferentes que el formato de dirección actual, ya que no hay distinción entre mayúsculas y minúsculas.
Adicionalmente, Bech32 ofrece beneficios en el contexto de SegWit. Algunas carteras que ofrecen SegWit, incluyendo la cartera Bitcoin Core por defecto, hasta ahora lo hacen «envolviéndola» en salidas P2SH, con direcciones que empiezan con «3». Para gastar bitcoin desde este tipo de direcciones, los usuarios deben revelar una parte del código para mostrar que los bitcoins estaban realmente bloqueados en una salida SegWit.
Con las nuevas direcciones Bech32 este paso puede ser omitido, lo que significa que gastar desde una salida SegWit requerirá menos datos para ser transmitidos a través de la red e incluidos en la blockchain. Esto hace que las transacciones de una salida Bech32 sean aún más baratas que las transacciones SegWit de una salida P2SH.
Dado que aún no todas las carteras de bitcoin soportan el envío a direcciones Bech32, los usuarios de Bitcoin Core 0.19.0 todavía tendrán la opción de generar direcciones de recepción P2SH, a través de un cambio en la GUI.
Solo dos bloques de conexiones salientes
Los nodos de Bitcoin se conectan a otros nodos formando la red entre pares. A través de esta red, los nodos comparten bloques, transacciones y algunos datos de transacciones adicionales.
Pero la red entre pares puede ser objeto de ataques. Si un atacante controla el número suficiente de nodos, puede potencialmente cortar ciertas partes de la red Bitcoin, o incluso nodos específicos, al interceptar todo el tráfico hacia ella. La parte dividida de la red podría entonces, por ejemplo, ser engañada a aceptar una cadena minoritaria como válida, lo que podría también permitir ataques de doble gasto.
Un ataque de este tipo se contrarresta si un nodo en la parte dividida de la red tiene al menos una conexión a un nodo honesto en la red principal. Entonces recibiría y transmitiría todas las transacciones y bloques y rechazaría la cadena minoritaria en favor de la cadena mayoritaria. Una forma de darse cuenta de esto es hacer que los nodos establezcan más conexiones entre sí. Sin embargo, más conexiones vienen con más requisitos de memoria y banda ancha.
Bitcoin Core 0.19.0 aumenta el estándar de las conexiones salientes en dos, pero, ingeniosamente, estas dos conexiones adicionales solo se utilizan para la transmisión de bloques, no transmiten transacciones o datos de transacciones adicionales.
Por otra parte, Bitcoin Core es una implementación de nodos completa, lo que significa que descarga y verifica todos los bloques de Bitcoin. Aunque es óptimamente seguro, esto no es muy adecuado para dispositivos informáticos de bajos recursos, como los teléfonos móviles. Las carteras móviles, así como los monederos de escritorio, son usualmente «clientes ligeros» porque solo descargan transacciones y partes de los bloques que les corresponden específicamente.
Una manera de hacer esto es con los filtros Bloom, usados por unas cuantas carteras hoy en día. Se trata de un truco utilizado por clientes ligeros para solicitar datos relevantes de nodos completos, más o menos aleatorios de la red. Desafortunadamente, estos filtros no son buenos con la privacidad: esencialmente revelan todas sus direcciones al nodo completo. Además, apoyar las peticiones de filtro Bloom tiene un costo para el CPU y el espacio en el disco para los nodos completos, sin beneficio directo para el nodo completo en sí.
Por las razones antes expuestas, Bitcoin Core 0.19.0 ya no apoya las peticiones de filtros Bloom, aunque la red en general seguirá siendo compatible con ellos durante muchos años. Esto porque los nodos viejos de Bitcoin Core suelen seguir utilizándose durante años después del lanzamiento de nuevas versiones.
Una alternativa a los filtros Bloom es una nueva solución llamada «filtros de bloques laterales» (BIP 158). Así, en lugar de carteras ligeras que creen filtros para enviar a los nodos completos, los nodos completos crean filtros para cada bloque. Los clientes ligeros pueden utilizar estos filtros para averiguar si las transacciones relevantes para ellos pueden haber ocurrido en un bloque. Si es así, la cartera ligera sacará todo el bloque y elegirá todos los datos relevantes de las transacciones.
Desactivan soporte para protocolo de pagos
El protocolo de pago (BIP 70) fue diseñado hace varios años para mejorar la experiencia de pago de Bitcoin. Además del pago regular transmitido a la red, un usuario y un comerciante comunicarían los detalles adiciones sobre un pago, como una dirección de destino legible para el ser humano, el nombre del comerciante y una dirección de reembolso en caso de que algo saliera mal con la transacción.
Aunque Bitcoin Core integró el protocolo de pago en GUI, el estándar nunca fue ampliamente adoptado. En cambio, la mayoría de las carteras siguen usando esquemas más básicos para recibir pagos: el enlace o el código QR, por ejemplo, comunica la dirección de pago y la cantidad.
Quizás más importante que la falta de adopción, el protocolo de pago BIP 70 ha sufrido un número de vulnerabilidades de seguridad y privacidad a lo largo de los años. De esta manera, algunas carteras han rechazado activamente su aplicación. En Bitcoin Core 0.19.0, el BIP 70 ha sido eliminado de la GUI. Los usuarios tendrían que compilar su nodo con una configuración especial para poder seguir usando esta opción.
Otros cambios
Además de los cambios ya mencionados, Bitcoin Core 0.19.0 tiene una larga lista de pequeñas mejoras y modernizaciones. Ahora es posible iniciar un nodo «podado» o recortado inmediatamente desde la configuración inicial, lo que permite a los usuarios con poco espacio en el disco iniciar fácilmente un nuevo nodo. También incluye nuevas características para el protocolo de transacciones parcialmente firmado (PSBT), que es útil para transacciones de múltiples firmas y CoinJoin.
Asimismo, hay varias mejoras en el dominio de los descriptores de carteras, útiles para los programadores que trabajan en aplicaciones de Bitcoin. Los nodos de Bitcoin Core 0.19.0 también aceptarán y transmitirán transacciones que utilicen una nueva versión de SegWit, a fin de garantizar la realización sin problemas de próximas actualizaciones.
Versión traducida del artículo de Aaron van Wirdum publicado en Bitcoin Magazine