Este es un editorial de opinión de Dan Gould y Nick Farrow. Gould es un desarrollador que trabajó en TumbleBit, PayJoin y Chaincase App y ha sido patrocinado por Human Rights Foundation y Geyser Grants. Farrow es un ingeniero de Bitcoin australiano mejor conocido por su procesador de pagos de código abierto SatSale.
“Oye, acabo de recibir una invitación para este hackathon en Malasia”, dijo Evan Lin, interrumpiendo mi conversación sobre mi computadora portátil en Taipei Hackerspace. «Eso suena mágico», respondí bruscamente. «¿Puedo ir?»
Me había estado golpeando la cabeza contra el escritorio durante semanas. Lin había estado destrozando mi idea de lo que era la privacidad de bitcoin. “Es un evento privado, no el típico hackathon. Puedo preguntar.»
Un vuelo, dos semanas y seis minutos de logística de mensajes de voz más tarde, estábamos caminando por las calles bordeadas de durian de Kuala Lumpur, Malasia, con Lloyd Fournier, reflexionando sobre una pasión compartida para hacer que la privacidad de bitcoin se mantenga. Ahora éramos un equipo. Nos propusimos actualizar Fedimint usando criptografía semipulida, algunas notas garabateadas, y luego lo demostramos en la primera reunión de BitDevs de Malasia cinco días después.
Fournier se había unido a Nick Farrow para desarrollar FROST, una nueva criptografía de umbral que aprovecha Taproot, en los meses anteriores. Al ser una fuente de recursos humanos de Bitcoin, Fournier también había estado trabajando en estrecha colaboración con Lin, que es colaborador del kit de desarrollo de Bitcoin (BDK). Él y yo habíamos pasado las últimas semanas mejorando la privacidad de PayJoin bajo luces fluorescentes durante la madrugada en Taipei, Taiwán, por lo que establecimos confianza para participar en un proyecto juntos. La invitación de Fournier fue un paso al límite. Para demostrar la criptografía de vanguardia al mundo, tuvimos que poner FROST en una aplicación. Fedimint tenía la atención de todos por su nuevo modelo de umbral de custodia. Era apto para la búsqueda.
La autocustodia es un concepto novedoso y aterrador para la mayoría de las personas. Muchas personas almacenan bitcoins bajo la custodia de terceros en los intercambios, dejándolos expuestos a la censura y la vigilancia indecente. Las casas de moneda federadas ofrecen una tercera vía: una federación de guardianes conocidos mantiene seguros los fondos de la comunidad. ¿Entonces, cómo funciona?
Cualquiera puede enviar bitcoins a Fedimint a cambio de tokens E-cash. Los guardianes comparten la custodia del bitcoin de la comunidad en una billetera multifirma. Los tokens E-cash son solo algunos datos: firmas ciegas canjeables por alguna cantidad de bitcoin más tarde. Son billetes con superpoderes. Envíe una factura Lightning y sus tokens de efectivo electrónico para «salir». Puede obtener E-cash en un mensaje de texto y hacer que la federación vuelva a emitir firmas para que nadie más pueda tomarlo. Las firmas están ocultas, por lo que se puede canjear en total anonimato. Cualquiera puede enviar E-cash a Fedimint para obtener bitcoins.
Para compartir la custodia entre los tutores, Fedimint utiliza direcciones de firmas múltiples basadas en Bitcoin Script heredadas. Un número mínimo de tutores firma para transferir fondos. Estos fondos son fáciles de detectar en la cadena de bloques, ya que Script multisig escribe la cantidad de firmantes y la cantidad total de guardianes en la cadena de bloques para que cualquiera los vea. A pesar de que E-cash es anónimo, las empresas de vigilancia podrían identificar las entradas, salidas y fondos comunitarios de clúster. Al aprovechar la última actualización de Bitcoin, Taproot, nuestro equipo resolvió este problema de privacidad cambiando Script multisig a FROST.
Entra HELADA
FROST (Flexible Round Optimized Schnorr Threshold) es un nuevo y poderoso tipo de multisig que agrega las acciones clave de los miembros de la federación en una clave FROST conjunta. Para gastar bajo esta clave, un número mínimo de miembros debe producir cada uno una acción de firma. Luego, las acciones se combinan para formar una firma única que es válida bajo la clave FROST conjunta. Los miembros se coordinan fuera de la cadena. Las transacciones FROST son indistinguibles de los gastos regulares de Taproot de una sola parte, por lo que detienen la espeluznante vigilancia. Además de eso, FROST permite federaciones flexibles, lo que permite que se unan nuevos guardianes sin coordinar a cada miembro de la federación para generar nuevas claves nuevamente.
Nuestro primer paso fue entender cómo la federación llegó a un consenso en cada ronda de firmas. El algoritmo de consenso de Fedimint puede tolerar el mal comportamiento de hasta un tercio de la federación y aun así alcanzar el consenso. Tomó un día en la pizarra para decodificar el algoritmo de consenso y otro para configurar la generación inicial de claves FROST.
Hicimos trampa en la generación de claves al hacerlo todo en la memoria de un solo dispositivo confiable. En la mejor práctica, una ceremonia de dos rondas mantiene las acciones secretas de un individuo de la clave FROST conjunta que solo existe en el dispositivo de ese individuo. El secreto general nunca se reconstruye.
Llegar a un consenso (firmas)
Probamos una transacción de conexión antes de modificar el código de la billetera Fedimint y nos quedamos perplejos. Debido a una limitación de las firmas ciegas, los tokens de efectivo electrónico de Fedimint (similares a las salidas de CoinJoin) están limitados a denominaciones preestablecidas para que cada transferencia de token de efectivo electrónico tenga un conjunto de anonimato. Esperando y esperando y esperando, Lin se rió de que debemos haber estropeado algo.
Resulta que las denominaciones de billetes estándar que establecimos requerían que la casa de la moneda generara alrededor de 300 000 firmas para emitir suficiente efectivo electrónico para cubrir el monto de vinculación. Hay propuestas para solucionar esto mediante el uso de credenciales anónimas en su lugar. Restablecimos la menta para usar denominaciones predeterminadas mucho más altas ya que solo estábamos probando. Los hackathons son para hacks, después de todo.
En un golpe de buena suerte, Bitcoiner Malaysia acababa de formarse y estaba preparado para su primer evento. Entre los cuatro piratas informáticos, un presentador del mayor podcast chino sobre bitcoins y el erudito encaminado a obtener el primer doctorado en Bitcoin. en Malasia, planeamos mostrar nuestra prueba de trabajo en BitDevs al final de la semana.
Quedaba por delante nuestra tarea más dura: las firmas federadas. Para producir una acción FROST, los firmantes deben aceptar la aleatoriedad común, llamada nonces. En el caso de Fedimint, los firmantes utilizan el consenso para acordar un único nonce para cada miembro de la federación que se une a una sesión de firma. Luego, los participantes que firman agregan acciones en una firma completa.
Mientras redactábamos nuestra demostración en vivo para la reunión, conseguimos que algo de nonce compartiera un poco de trabajo y también solucionamos algunos errores de tarifas. A pesar de nuestro arduo trabajo, la cena llegó antes de que nuestro código funcionara. Cruzamos el umbral hacia el territorio más profundo del hackathon acurrucados alrededor del televisor para una programación triple en la habitación de hotel de Farrow.
Una experiencia irreal
Con nuestros grifos listos y la caja de resonancia de Unreal Tournament al máximo, Fournier se sentó frente al teclado, mientras lanzamos correcciones de errores, nombres de variables y comandos desde el asiento trasero. Llegó la 1:30 am y nuestros párpados estaban pesados. Unos toques más tarde, como por arte de magia, el conector funcionó. Cada firmante recibiría acciones de firma de los demás y canjearía el E-cash de anon a cambio de bitcoin. «Flawless Victory» resonó en la caja de resonancia. Vitoreamos con incredulidad.
Excepto que no funcionó. Al día siguiente, ejecutamos el código y vimos problemas de inmediato. Sólo tuvimos suerte la noche anterior. Funcionó solo una vez de tres o cuatro intentos. Revisamos el código con calidad de hackathon durante horas. Bueno, después del almuerzo, todavía nos preocupaba tener que meternos otra noche. A nuestro favor, encontramos el problema: un clásico error de indexación. A las 5:00 pm FROSTimint estaba listo para presentar.
Una vez que nos reunimos para BitDevs, los lugareños tomaron un formato de «grupo de apoyo» autodenominado para las presentaciones. Fournier nos devolvió a la realidad con la técnica. La reunión inaugural deliberó con deleite sobre el futuro y las debilidades de los custodios. ¿Cómo elegiríamos a los tutores? ¿Pueden tener reservas fraccionarias? Lo que es más importante, ¿cómo puede mi tienda de sopa de fideos laksa trascender el fiat usando Fedimint?
Esta es una publicación invitada de Dan Gould y Nick Farrow. Las opiniones expresadas son totalmente propias y no reflejan necesariamente las de BTC Inc. o Bitcoin Magazine.