¡Bienvenido! ¿Eres nuevo en Zcash?
La red de Zcash es joven, ¡pero evoluciona rápidamente! ¡Regístrate y nos pondremos en contacto con más información sobre cómo puedes comenzar con Zcash!

Idioma

La Metamorfosis de las Transacciones Maleables

Simon Liu | Aug 31, 2016

La maleabilidad de las transacciones ha sido un tema de debate de larga data para las criptomonedas derivadas de Bitcoin y es un tema que el equipo de Zcash ha decidido abordar con entusiasmo. Los invito a explorar este problema y por qué es importante resolverlo a largo plazo.

En pocas palabras, la maleabilidad de las transacciones es allí donde una transacción válida puede ser modificada en pleno vuelo a medida que se propaga por la red. Los detalles pueden encontrarse aquí. Mientras que quien modifica no tiene acceso a las claves privadas de quien envía y por lo tanto se encuentra imposibilitado de robar fondos para beneficio propio, la transacción modificada sí presenta un problema porque puede ser considerada como válida por la red. Esto significa que podría haber dos transacciones intentando gastar las mismas monedas pero con diferentes ID de transacciones.

A pesar de que tales modificaciones son muchas veces consideradas como una simple molestia, la maleabilidad de las transacciones tiene un impacto real. Primero, el software de las billeteras no puede depender de un ID de transacción para rastrear un movimiento de fondos. Segundo, los negocios basados en transacciones encadenadas, en las que el cambio de una transacción a otra es gastado inmediatamente en una nueva transacción, encontrarán que la cadena puede romperse. Tercero, las soluciones por fuera de la cadena, diseñadas para mejorar el rendimiento de las transacciones, como Lightning y BOLT, serían más prácticas si la maleabilidad de las transacciones fuese resuelta previamente.

Entonces, ¿cómo corregir la maleabilidad? Una de las soluciones propuestas consistiría en corregir retroactivamente al Segregated Witness (segwit) lo cual solucionaría un rango de problemas incluyendo la maleabilidad. Sin embargo, se decidió unos meses atrás que no sería posible hacerlo dentro de los tiempos del proyecto Zcash, especialmente porque segwit era un trabajo en curso en ese momento. Hoy el desarrollo de segwit está casi completo, pero todavía debe ser implementado y activado en la red Bitcoin.

Nuestro propio intento por dar una solución más pequeña y más enfocada fue incluida un par de semanas atrás como parte del lanzamiento alpha z8 e implementada en la red de prueba. Más allá de que no se hallaron problemas durante el uso diario, siempre fuimos conscientes de que podría haber casos aislados y problemas de seguridad que todavía no habíamos podido detectar. De hecho, exisitó un bug que hacía que un bloque recién minado pudiese ser modificado creando un riesgo de denegación de servicio, el cual afortunadamente fue encontrado por nuestros auditores como parte de la auditoría de seguridad de Zcash. Mientras que esta corrección fue relativamente simple, el subsiguiente debate levantó una cantidad de temas a evaluar dentro el equipo con el objetivo de producir una solución comprensiva y robusta.

Después de considerarlo, dados los recursos disponibles y el cronograma del proyecto, el equipo ha decidido retroceder en los cambios realizados. Sentimos que es más prudente lanzar con viejos conocidos antes que introducir nuevos desconocidos. Nuestra exploración de la maleabilidad de las transacciones destaca la importancia del análisis de terceros en el proceso de desarrollo, especialmente alrededor del protocolo de consenso donde aún el mínimo ajuste puede desencadenar impredecibles efectos colaterales de proporciones kafkianas. ¡Gracias a nuestros auditores Coinspect por habernos ayudado a atrapar algunas mariposas!

Por favor ayúdanos corriendo el último lanzamiento alpha z9 de Zcash y advirtiéndonos acerca de cualquier bug, conflicto o problema de usabilidad. Puedes contactarte con el equipo reportando un conflicto en GitHub o visitando el canal de Slack de la comunidad Zcash . Gracias.