Mastering Bitcoin

Mastering Bitcoin


7. Transacciones » Encadenamiento de Transacciones y Transacciones Huérfanas

Página 45 de 98

Encadenamiento de Transacciones y Transacciones Huérfanas

Como hemos visto, las transacciones forman una cadena en la cual una transacción gasta las salidas de la transacción previa (conocida como madre) y crea salidas para una transacción subsecuente (conocida como hija). A veces una cadena entera de transacciones dependientes unas de otras —digamos una transacción madre, hija y nieta— son creadas al mismo tiempo para cumplir con un flujo de trabajo transaccional complejo que requiere que transacciones hijas válidas sean firmadas antes de que la transacción madre sea firmada. Por ejemplo, esta es una técnica usada en transacciones CoinJoin donde varios participantes unen transacciones para proteger su privacidad.

Cuando una cadena de transacciones es transmitida a través de la red, no siempre llegan en el mismo orden. A veces la transacción hija puede llegar antes que la madre. En ese caso, los nodos que ven la transacción hija primero pueden ver que se refiere a una transacción madre aun desconocida. En vez de rechazar a la hija, la colocan en una reserva temporaria para esperar el arribo de su transacción madre y propagarla a todos los demás nodos. La reserva de transacciones sin madres es conocida como la reserva de transacciones huérfanas (orphan transaction pool). Una vez que la transacción madre llega, cualquier huérfana que haga referencia a la UTXO creada por la madre será liberada de la reserva, revalidada recursivamente, y luego la cadena de transacciones entera puede ser incluida en la reserva de transacciones, lista para ser minada en un bloque. Las cadenas de transacciones pueden ser arbitrariamente largas, con cualquier número de generaciones transmitidas simultáneamente. El mecanismo de conservar huérfanas en la reserva de huérfanas asegura que transacciones que serían válidas de otra forma no sean rechazadas simplemente porque su madre ha sido demorada y que finalmente la cadena a la que pertenecen sea reconstruida en el orden correcto, independientemente del orden de llegada.

Existe un límite al número de transacciones huérfanas almacenadas en memoria para prevenir ataques de denegación de servicio (denial of service) contra los nodos bitcoin. El límite está definido como MAX_ORPHAN_TRANSACTIONS en el código fuente del cliente de referencia bitcoin. Si el número de transacciones huérfanas en la reserva excede MAX_ORPHAN_TRANSACTIONS, uno o más transacciones huérfanas seleccionadas aleatoriamente serán removidas de la reserva hasta que el tamaño de la reserva regrese a los límites permitidos.

Ir a la siguiente página

Report Page