Fuente: Bitcoin Magazine; Compilado por: Wuzhu, Golden Finance
Los rollups se han convertido recientemente en el foco del escalado de BTC, convirtiéndose en lo primero que realmente “roba el espectáculo” de Lighting Network, en términos de una atención más amplia. Los rollups están diseñados para ser una capa 2 fuera de la cadena que no está restringida ni restringida por las restricciones centrales de Liquidez de Lighting Network, es decir, el usuario final necesita que alguien asigne (o “preste”) los fondos por adelantado para recibir el dinero, o el enrutamiento intermedio Nodo necesita el saldo del canal para facilitar el flujo del monto del pago desde el remitente hasta el receptor.
Estos sistemas se desarrollaron originalmente para funcionar en Ethereum y otros sistemas Turing completo, pero recientemente se ha centrado en su adaptación a cadenas de bloques basadas en UTXO, como BTC. Este artículo no tiene la intención de discutir el estado actual de implementación en BTC, sino más bien las capacidades ideales de Rollup que se han buscado durante mucho tiempo, que dependen de la capacidad de verificar directamente Prueba de conocimiento cero (ZKP) en BTC, lo cual actualmente no se admite.
La estructura básica de Roll es la siguiente: una sola cuenta (UTXO en BTC) que almacena el saldo de todos los usuarios en Rollup. Esta UTXO contiene un compromiso que existe en forma de raíz de Merkle del árbol de Merkle, que compromete todos los saldos actuales de las cuentas en Rollup. Todas estas cuentas están autorizadas con una Llave pública/ Llave privada, por lo que los usuarios aún deben firmar ciertos contenidos con una Llave secreta para realizar gastos fuera de la cadena. Esta parte de la estructura permite a los usuarios salir en cualquier momento sin permiso, simplemente presentando una prueba de transacción que su cuenta es parte del árbol de Merkle, pueden salir de Rollup unilateralmente sin permiso del operador.
Los operadores de Rollup deben incluir una prueba de conocimiento nula (ZKP) en las transacciones para actualizar la raíz de Merkle del saldo de la cuenta en la cadena de bloques en el proceso de completar transacciones fuera de la cadena. Sin esta ZKP, la transacción sería inválida y no se puede incluir en la cadena de bloques. Esta prueba permite a las personas verificar si todos los cambios en la cuenta fuera de la cadena están debidamente autorizados por el titular de la cuenta y si el operador no actualiza maliciosamente el saldo para robar fondos de los usuarios o redistribuirlos deshonestamente a otros usuarios.
El problema es que si solo se publica la raíz del árbol de Merkle en la cadena, los usuarios pueden ver y acceder a ella, ¿cómo pueden colocar sus ramas en el árbol para poder salir sin permiso cuando lo deseen?
En el Rollup adecuado, cada vez que se confirma una nueva transacción off-chain y cambia el estado de la cuenta Rollup, la información se coloca directamente en la cadena de bloques. No es el árbol completo, eso sería absurdo, sino la información necesaria para reconstruir el árbol. En una implementación simple, el resumen de todas las cuentas existentes en el Rollup contendrá el saldo, y las cuentas solo se agregarán en las transacciones de actualización del Rollup.
En implementaciones más avanzadas, utiliza diferencias de saldo. Básicamente, esto resume qué cuentas han aumentado o disminuido los fondos durante el proceso de actualización. Esto hace que cada actualización de Rollup solo contenga cambios en el saldo de la cuenta que han ocurrido. Luego, los usuarios pueden simplemente escanear la cadena y ‘calcular’ desde el comienzo del Rollup para obtener el estado actual del saldo de la cuenta, lo que les permite reconstruir el árbol de Merkle del saldo actual.
Esto permite ahorrar una gran cantidad de gastos y espacio de Bloquear (ahorrando así fondos), al mismo tiempo que permite a los usuarios asegurar el acceso a la información necesaria para una salida unilateral. Las reglas de rollup requieren que estos datos se incluyan en el rollup formal proporcionado a los usuarios mediante la cadena Bloquear, por lo que las transacciones que no incluyen un resumen de cuenta o una diferencia de cuenta se consideran inválidas.
Otra forma de abordar el problema de la disponibilidad de datos de retiro de usuarios es colocar los datos en otro lugar fuera de la cadena Bloquear. Esto plantea sutiles problemas, rollup aún necesita asegurarse de manera efectiva de que los datos estén disponibles en otro lugar. Tradicionalmente, otras cadenas Bloquear se utilizan para este propósito, diseñadas específicamente como capas de disponibilidad de datos para sistemas como rollup.
Esto ha creado un dilema de seguridad igualmente poderoso. Cuando los datos se publican directamente en la cadena de bloques de Bitcoin, las reglas de consenso pueden garantizar que sean absolutamente correctos. Sin embargo, cuando se publican en un sistema externo, lo mejor que pueden hacer es verificar la prueba de SPV, es decir, que los datos se han publicado en otro sistema.
Esto requiere verificar que los datos existen en otras cadenas, lo que en última instancia es un problema de Máquina de oráculo. La cadena Bloquear de BTC no puede verificar completamente nada más que lo que le sucede a su propia cadena Bloquear, y lo mejor que puede hacer es validar ZKP. Sin embargo, ZKP no tiene forma de verificar que un bloqueador que contiene datos acumulativos se difunda públicamente después de que se genere. No puede verificar que la información externa esté realmente abierta a todo el mundo.
Esto abrió la puerta a los ataques de retención de datos, es decir, crear compromisos sobre los datos publicados y utilizarlos para avanzar en rollup, pero los datos en realidad no están disponibles. Esto hace que los usuarios no puedan retirar fondos. La única solución real es depender completamente del valor y la estructura de incentivos de sistemas que no sean BTC.
Esto plantea un dilema para rollup. Cuando se trata de problemas de disponibilidad de datos, básicamente hay una elección binaria de si publicar los datos en la cadena de bloques de BTC o en otro lugar. Esta elección tiene un gran impacto en la seguridad, soberanía y escalabilidad de rollup.
Por un lado, el uso de la cadena BTC como capa de disponibilidad de datos establece un límite máximo para la escalabilidad de rollup. El espacio en bloque es limitado, lo que establece un límite para la cantidad de rollups que pueden existir al mismo tiempo y la cantidad total de transacciones que se pueden procesar fuera de la cadena. Cada actualización de rollup requiere un espacio en bloque proporcional a la cantidad de cuentas cuyo saldo ha cambiado desde la última actualización. La teoría de la información solo permite comprimir los datos hasta cierto punto, y en este sentido, no hay más potencial de escalabilidad.
Por otro lado, el uso de diferentes capas para lograr la disponibilidad de datos eliminará el límite duro de ganancia de escalabilidad, pero también traerá nuevos problemas de seguridad y soberanía. En Rollup que utiliza BTC para lograr la disponibilidad de datos, si los datos que los usuarios necesitan extraer no se publican automáticamente en la cadena de bloques, el estado de Rollup no puede cambiar. Con Validiums, esta garantía depende completamente de la capacidad del sistema externo utilizado para resistir el engaño y ocultar datos.
Ahora, cualquier productor de Bloquear en el sistema de disponibilidad de datos externos puede secuestrar los fondos de los usuarios de BTCRollup al producir Bloquear en lugar de difundir realmente ese Bloquear, lo que hace que los datos estén disponibles.
Entonces, ¿cómo sería si realmente logramos una implementación ideal de Rollup en BTC, logrando verdaderamente retiros unilaterales de usuarios?