Proponen cambios para evitar transacciones huérfanas

La desarrolladora Gloria Zhao elaboró la propuesta Package Relay, formalmente en la lista de correos de desarrolladores de Bitcoin el pasado 17 de mayo de 2022.


En algunas circunstancias se crean transacciones de Bitcoin que dependen unas de las otras, y por varias razones algunas no llegan a ser confirmadas por los mineros o ni siquiera ser transmitidas por la red de nodos. 

La desarrolladora Gloria Zhao elaboró la propuesta Package Relay, formalmente en la lista de correos de desarrolladores de Bitcoin el pasado 17 de mayo de 2022, para reducir la tasa de transacciones no confirmadas en Bitcoin y, además, atenuar los riesgos de seguridad en soluciones de segunda capa como Lightning.

La «transmisión de paquetes» es el concepto base de esta propuesta, y como su nombre lo dice, busca lograr que los nodos de la red Bitcoin puedan manipular y transmitir grupos de transacciones que están relacionadas entre sí.  

Esto puede evitar que algunas transacciones individuales queden sin ser confirmadas, o que no sean confirmadas a tiempo por no haber pagado una comisión acorde al mínimo requerido en determinado momento. 

Específicamente, estas transacciones pueden quedar en el aire en el denominado Child Pays For Parents (CPFP, Los hijos pagan por los padres), un tipo de transacción que gasta las monedas enviadas por una transacción anterior, pero pagando una mayor comisión para que existan incentivos entre los mineros para confirmar ambas. 

Se viene hablando del concepto de «Package Relay» al menos desde hace 7 o 9 años, y es el concepto de solicitar, anunciar y descargar grupos de transacciones juntas, transacciones relacionadas entre sí. Un «package» [paquete] es un término utilizado ampliamente para referirse a un grupo de transacciones que tienen una relación de dependencia, donde existe una conexión entre una transacción que está gastando el output de otra transacción, ya sea un hijo y un padre, un padre con muchos hijos, un abuelo, un padre y un hijo, etc.

Gloria Zhao, desarrolladora de Bitcoin.

¿Por qué una transacción de Bitcoin puede quedarse sin confirmar? 

En ocasiones, una transacción que no cumple los requisitos del pago de comisiones puede ser ignorada por la mempool de los nodos de Bitcoin, pero si una transacción «hija» con una comisión lo suficientemente alta llega a entrar a la mempool, quedaría huérfana ya que los nodos no tienen conocimiento de su transacción «padre». 

Considerar el ingreso de las transacciones a la mempool de manera individual crea una limitación en la capacidad del nodo en determinar cuáles transacciones tienen las comisiones más altas, puesto que no están tomando en cuenta a los descendientes hasta que estas llegan a la mempool […] 

Cuando la transacción de un usuario no cumple la comisión mínima aceptada por la mempool y no pueden crear una transacción de reemplazo directamente, su transacción será rechazada por la mempool. Tampoco podrán añadir una transacción descendiente para pagar las comisiones de la transacción en conflicto. Esta limitación afecta la habilidad de los usuarios de subir las comisiones de sus transacciones.

Gloria Zhao, desarrolladora de Bitcoin.

Gloria Zhao explica en una entrevista en el podcast Chaincode Labs, organización que brinda soporte educativo y financiero a desarrolladores de Bitcoin, cuáles son los dos casos de uso principales de Package Relay. 

Existen dos casos de uso principales de los que más se habla. Uno es el de aumentar las comisiones de un padre o de una transacción que no cumple con las tarifas mínimas por sí misma, pero tiene un hijo o descendiente que incentiva a los mineros a incluir al padre en un bloque, porque eso significa que pueden minar también a sus descendientes 

El otro caso de uso del que más se habla es el de la búsqueda de transacciones huérfanas (orphan fetching). Un húerfano es una transacción que gasta entradas [inputs] de las que un nodo en específico no está al tanto. A veces se trata de un input que no existe, pero más a menudo ocurre que esta transacción está gastando un output de una transacción no confirmada que fue transmitida hace unas horas, solo que este nodo no estaba al tanto.

Gloria Zhao.

¿Qué cambios trae Package Relay a Bitcoin? 

La propuesta Package Relay introduce, entre otros cambios, un conjunto de mensajes que pueden utilizar los nodos de Bitcoin, según se explica en el boletín de Bitcoin Optech. 

El primer mensaje es «sendpackages», que permite a dos nodos negociar las características de los paquetes de transacciones que están dispuestos a recibir. 

El segundo mensaje es «getpckgtxns», por «get package transactions» (obtener transacciones del paquete), que solicita a otro nodo las transacciones anunciadas en un paquete. 

Luego, el tercer mensaje es el que entrega las transacciones que forman parte del paquete, y lleva por nombre «pckgtxns». 

En cuarto lugar, está «pckginfo1», que como indica su nombre, brinda información sobre el paquete, en específico cuántas transacciones incluye, cuál es el serial de cada transacción (txid), el peso o tamaño de las transacciones y el total de comisiones. «De ese modo la tasa de comisiones del paquete se puede calcular dividiendo las comisiones de cada por el peso de las mismas», explican. 

Llegar a tiempo es importante para Lightning 

Las soluciones de segunda capa como Lightning dependen de la transmisión y confirmación de transacciones en la cadena (on-chain) a tiempo. Por ejemplo, al momento de cerrar un canal de Lightning entre dos nodos, un usuario podría perder sus fondos si su transacción de cierre no se confirma a tiempo, dando oportunidad al otro usuario de enviar una transacción con una mejor comisión y que logre confirmarse a tiempo, y que deje el canal balanceado con más bitcoins a su favor. 

Este escenario es básicamente factible mediante lo que se conoce como pinning attack, o ataque de colgado (según su traducción aproximada), pues toma ventaja de una transacción congelada o colgada. 

Pinning attack que es un tipo de ataque de censura sobre transacciones no confirmadas donde se aprovecha el hecho de que no hay garantías de que esta transacción se propague y algunas políticas de la mempool, para evitar que la transacción llegue a la mempool o que sea puesta en espera de ser confirmada.

Gloria Zhao, desarrolladora de Bitcoin.

La desarrolladora establece también en la entrevista que este ataque es mayoritariamente posible cuando al momento de firmar una transacción se configura una comisión baja, pero si al momento de cerrar el canal la comisión promedio de la mempool es superior, la transacción podría presentar un retraso contraproducente. 

Package Relay tiene otras facetas que exploraremos en CriptoNoticias más adelante, pero que ya están siendo revisadas y discutidas por otros desarrolladores de Bitcoin. 

Recientemente Gloria Zhao recibió una beca por un valor de USD 150.000, reportamos en este medio, y se espera que su trabajo en torno a mejorar la mempool de Bitcoin continúe más allá de Package Relay.