Artículo del Blog

Multisig y Contratos Simples en Stellar

Autor

Stellar Development Foundation

Fecha de publicación

Multi-sig

Como muchos de ustedes saben, el equipo de SDF ha pasado los últimos meses escribiendo código para una red distribuida mejorada. Finalmente lista para usar!

No estoy seguro de poder expresar adecuadamente lo emocionado que estoy de que Stellar esté pasando a esta base de código, pero lo intentaré. Se siente como...correr libremente a través de un campo soleado y húmedo de trébol rojo con erizos, o tal vez emerger de mi capullo como algún tipo de dragón mariposa.

Más importante aún, significa que la plataforma está verdaderamente lista para que los desarrolladores construyan los nuevos servicios financieros del mundo. En este post, destacaré algunos de los beneficios y características de la red mejorada, y luego daré un ejemplo de algo que podrías construir con estas características.

Entonces, ¿qué ha cambiado?

La red Stellar mejorada es más segura, escalable y modular que la base de código anterior. El Stellar Consensus Protocol (SCP) optimiza la seguridad en lugar de la disponibilidad cuando la red pierde el quórum, lo que significa que el sistema está seguro contra bifurcaciones.

El código de Stellar Core es ahora más comprensible y elegante. Menos de la mitad del tamaño de la base de código anterior, funciona más rápido y utiliza menos memoria y espacio en disco. (El código Core mejorado maneja solo el consenso, mientras que Horizon, el servidor API, maneja la búsqueda de rutas y proporciona una interfaz web para Stellar Core.) También mantiene los datos en formatos más obvios y simples, en lugares más seguros. Por ejemplo, la base de código realiza copias de seguridad continuas en almacenamiento fuera del validador en XDR, un formato estándar de Internet. Y el libro mayor en vivo está en una base de datos SQL convencional.

Nuevas Características: Agrupación y Multisig

Hay muchas cosas geniales sobre el nuevo código, pero abordaré dos características en más detalle: agrupación de operaciones y cuentas multisignatura.

En la red mejorada, transacciones se agrupan en una cadena de operaciones. En cada lote, todas las operaciones tendrán éxito o fallarán. Las operaciones en el mismo lote incluso pueden ser de diferentes cuentas. Por ejemplo, puedes crear una transacción donde la cuentaA envía a la cuentaB si y solo si la cuentaB envía a la cuentaC. En este caso, la transacción requeriría las firmas de ambas cuentaA y cuentaB.

No solo las transacciones pueden ser firmadas con múltiples llaves, sino que las cuentas pueden tener múltiples firmantes. Multisig añade flexibilidad en asegurar cuentas Stellar particulares y gestionar quién tiene acceso a ellas. Puedes asignar a cada firmante un peso diferente, y cada operación tiene un umbral. Con este diseño, puedes configurar fácilmente esquemas de m de n. Por ejemplo, podrías gestionar una cuenta multisig de modo que las transacciones puedan ser validadas ya sea por una persona sola o por estas otras tres personas.

Este diseño abre todo tipo de posibilidades. Juntos, por ejemplo, la agrupación y multisig te permiten hacer lo que llamamos contratos simples. Los contratos simples imponen ciertas restricciones con respecto a 1) quién debe aprobar un cambio particular en el libro mayor y/o 2) qué cambios deben ocurrir todos juntos. Y hacen cumplir esas restricciones sin el uso de scripts.

Lee un poco más sobre operaciones y multisig para tener una mejor idea de cómo podrían trabajar juntos, o sumérgete directamente en el ejemplo de abajo.

Ejemplo de Contratos Simples: Financiación Colectiva Conjunta

La ciudad de Johannesburgo necesita un nuevo hospital. El gobierno de la ciudad y una ONG están dispuestos a contribuir con $1 millón cada uno para su construcción, pero los gastos totales son de $3 millones. Juntos, las dos organizaciones quieren financiar colectivamente el millón faltante y asegurar que cada dólar recaudado vaya hacia la construcción del hospital. También quieren garantizar a los donantes que, si el total no se recauda para marzo de 2016, devolverán todo el dinero de los donantes.

El gobierno de la ciudad de Johannesburgo y la ONG crean una holdingAccount. Esta cuenta recoge los fondos y, después de marzo de 2016, asegura que los donantes recuperen sus fondos si no se alcanza el objetivo de financiación. La holdingAccount se configura para requerir las llaves del gobierno y de la ONG como firmantes para autorizar cualquier transacción.

El gobierno de la ciudad envía $1M a la holdingAccount. La ONG envía $1M a la holdingAccount. La parte conjunta luego crea las siguientes transacciones:

Transacción1

Número de Secuencia: N+1

Firmantes: Gobierno & ONG Esta transacción se envía a la red y se registra el ID de orden de venta para la transacción3.

Operaciones:

Gestionar Oferta: crear una oferta para vender $1M tokens de participación emitidos por holdingAccount por $1 por token.

Transacción2

Número de Secuencia: N+2

Límites de Tiempo: válido desde el 1 de marzo de 2016 hasta...

Firmantes: Gobierno & ONG

Operaciones:

Pago: enviar $3M a contractorAccount.

Transacción3

Número de Secuencia: N+3

Firmantes: Gobierno & ONG

Operaciones:

Gestionar Oferta: cancelar la oferta de venta creada en la transacción1.

Pago: enviar $1M al Gobierno

Pago: enviar $1M a la ONG.

Gestionar Oferta: crear una oferta para comprar 1M tokens de participación por $1 por token.

Las transacciones 2 y 3 se publican pero no se envían a la red Stellar. Cualquiera puede enviarlas a la red más tarde, pero no serán válidas hasta el 1 de marzo de 2016. Además, debido al número de secuencia, la transacción2 debe ocurrir antes de la transacción3.

Si quieres donar para financiar el hospital debes hacer lo siguiente:

  1. Crear una línea de confianza hacia la holdingAccount para los tokens de participación.
  2. Comprar tokens de participación creando tu propia oferta. Tu cuenta recibirá tokens y la holding account recibirá dólares.
  3. Si se recauda $1M adicional para el 1 de marzo, el dinero se enviará al contratista a través de la transacción2, O
  4. Si no se alcanza el objetivo de financiación, la transacción2 fallará y la transacción3 se completará.
  5. Si la transacción3 se completa, puedes recuperar tu donación vendiendo tus tokens de participación de vuelta a la holdingAccount. Los parámetros de esta configuración son flexibles. Hay muchas posibles modificaciones, incluyendo extender el diseño para pagar a destinatarios individuales o pagar al contratista a lo largo del tiempo.

Hacia el Futuro

Financiación colectiva sin problemas con múltiples partes interesadas principales, y sin comisiones, es solo un ejemplo de lo que es posible con la agrupación y multisig en la red Stellar mejorada. Mi esperanza es que esto genere otras ideas: suscripciones, fideicomisos, cuentas de ahorros grupales y cuentas de ahorros para la salud, una red lightning, subvenciones agrícolas, capacidad de contracargo, e incluso juegos (casi consigo que el tres en línea funcione para este ejemplo pero se me acabó el tiempo). ¡Estoy emocionado de ver lo que la gente construye!