El fin de semana, en la cafetería de abajo me colé para aprovechar el aire acondicionado y me quedé allí probando la red de pruebas de Dusk. Intenté tres veces seguidas con contraseñas mal antes de terminar la transacción 21 después de pelearme con todo durante media hora. Me quedé mirando durante mucho tiempo los registros de ejecución de la máquina virtual Rusk—antes había jugado con varias cadenas antiguas de privacidad: o se quedaban colgadas durante media hora sin producir bloques, o hacían el anonimato “completo” de forma que, por motivos de cumplimiento, simplemente no era posible abrir permisos de auditoría. En un principio no tenía ya ninguna expectativa sobre eso de las “blockchains de privacidad”, pero al meter la mano y caer en la trampa entendí que esto no es simplemente una carcasa para vender una idea.
Al principio pensé que, como SBA consenso, era un PoS con piel nueva. Después de revisar las reglas de nodos y simular diez mil veces el doble gasto, me quedó claro: SBA (Segregated Byzantine Agreement, Acuerdo Bizantino Aislado) divide los nodos en dos capas. Una capa es el comité que produce bloques y se encarga de empaquetar transacciones; la otra es un conjunto de validadores que realizan verificaciones aleatorias para auditar al azar. La semilla de los sorteos se genera con VDF (función de retardo verificable), y nadie puede predecir a quién van a revisar después. El explorador de la red de pruebas mostró que 3 nodos fueron sancionados con confiscación de la fianza por enviar bloques inválidos: dos recibieron una sanción “suave”—se les escaparon algunos bloques y temporalmente quedaron fuera de la cola de consenso; la cantidad de garantía efectiva se recortó. El otro recibió una sanción “dura”: lo pillaron con doble firma, y el token de la participación se le descontó directamente en un 20% y se destruyó. Este tipo de mecanismos de penalización eleva mucho el costo de hacer mal, y el precio de probar es enorme.
Al probar transacciones, me resbaló el dedo y añadí un 0 de más: el monto se salió del rango permitido por el Range Proof. La transacción fue rechazada al instante y ni siquiera quedó rastro de una transacción inútil en la cadena. El Range Proof del protocolo Phoenix bloquea estrictamente el rango del monto de las transacciones; junto con los compromisos de Pedersen que fijan el total de activos de cada operación, no puede aparecer emisión “por la nada”. Además, con una Stealth Address de un solo uso que cambia automáticamente la dirección en cada transacción, envié 5 veces monedas de prueba seguidas: en la cadena, no hay forma de asociar estas operaciones a una misma cuenta. Las pruebas PLONK agregadas recursivamente se comprimen a 287 bytes; la verificación por transacción tarda solo 1.8 milisegundos. Corrió muy fluido, y ni siquiera en el pico de la red de pruebas se notó congestión.
La máquina virtual Rusk está escrita íntegramente en Rust desde cero. Soporta nativamente el estándar de activos confidenciales. Desplegué mi Token de pruebas y ni siquiera tuve que escribir más de 200 líneas de código de privacidad; el Gas de los contratos al ejecutarse es 63% más bajo que cuando metes una capa ZK sobre EVM. Además, deja un acceso para auditoría reservado para los equipos de cumplimiento—privacidad y cumplimiento no tienen que ser una elección excluyente; se pueden cubrir a la vez. La noche en que terminó la red de pruebas, me sentí mucho más tranquilo que con cualquier proyecto en el que antes hubiera invertido.
#dusk $DUSK @Dusk
Al principio pensé que, como SBA consenso, era un PoS con piel nueva. Después de revisar las reglas de nodos y simular diez mil veces el doble gasto, me quedó claro: SBA (Segregated Byzantine Agreement, Acuerdo Bizantino Aislado) divide los nodos en dos capas. Una capa es el comité que produce bloques y se encarga de empaquetar transacciones; la otra es un conjunto de validadores que realizan verificaciones aleatorias para auditar al azar. La semilla de los sorteos se genera con VDF (función de retardo verificable), y nadie puede predecir a quién van a revisar después. El explorador de la red de pruebas mostró que 3 nodos fueron sancionados con confiscación de la fianza por enviar bloques inválidos: dos recibieron una sanción “suave”—se les escaparon algunos bloques y temporalmente quedaron fuera de la cola de consenso; la cantidad de garantía efectiva se recortó. El otro recibió una sanción “dura”: lo pillaron con doble firma, y el token de la participación se le descontó directamente en un 20% y se destruyó. Este tipo de mecanismos de penalización eleva mucho el costo de hacer mal, y el precio de probar es enorme.
Al probar transacciones, me resbaló el dedo y añadí un 0 de más: el monto se salió del rango permitido por el Range Proof. La transacción fue rechazada al instante y ni siquiera quedó rastro de una transacción inútil en la cadena. El Range Proof del protocolo Phoenix bloquea estrictamente el rango del monto de las transacciones; junto con los compromisos de Pedersen que fijan el total de activos de cada operación, no puede aparecer emisión “por la nada”. Además, con una Stealth Address de un solo uso que cambia automáticamente la dirección en cada transacción, envié 5 veces monedas de prueba seguidas: en la cadena, no hay forma de asociar estas operaciones a una misma cuenta. Las pruebas PLONK agregadas recursivamente se comprimen a 287 bytes; la verificación por transacción tarda solo 1.8 milisegundos. Corrió muy fluido, y ni siquiera en el pico de la red de pruebas se notó congestión.
La máquina virtual Rusk está escrita íntegramente en Rust desde cero. Soporta nativamente el estándar de activos confidenciales. Desplegué mi Token de pruebas y ni siquiera tuve que escribir más de 200 líneas de código de privacidad; el Gas de los contratos al ejecutarse es 63% más bajo que cuando metes una capa ZK sobre EVM. Además, deja un acceso para auditoría reservado para los equipos de cumplimiento—privacidad y cumplimiento no tienen que ser una elección excluyente; se pueden cubrir a la vez. La noche en que terminó la red de pruebas, me sentí mucho más tranquilo que con cualquier proyecto en el que antes hubiera invertido.
#dusk $DUSK @Dusk
