Wiki de ZooBC
Transacciones

Multifirma

Una cuenta multifirma es una cuenta que ninguna clave controla por sí sola. Se define por una lista de participantes y un umbral, y solo gasta cuando al menos ese número de participantes ha firmado la misma transacción: dos de tres, tres de cinco, etc. Los participantes pueden usar tipos de clave distintos, así que una clave de ZooBC, una de Ethereum y una de Bitcoin pueden compartir una cuenta.

La cuenta

Una cuenta multifirma se define por su umbral (de 1 hasta el número de participantes), un nonce y las direcciones de sus participantes. Su dirección es un hash de todo ello:

address = SHA3-256( threshold ‖ nonce ‖ count ‖ sorted participant addresses )

El resultado se usa como una cuenta normal de tipo 0, así que puede recibir ZBC como cualquier dirección. Nadie tiene una clave privada de ella, así que la única forma de gastar desde ella es reunir las firmas de los participantes.

Gastar, paso a paso

Una línea de tiempo: una propuesta que contiene el pago interno, la firma 1, la firma 2, el contador que alcanza el umbral y el pago que sale de la cuenta una sola vez
Una línea de tiempo: una propuesta que contiene el pago interno, la firma 1, la firma 2, el contador que alcanza el umbral y el pago que sale de la cuenta una sola vez
  1. Alguien propone una transacción interna, como un pago, dentro de una transacción MultiSignature. La transacción interna va sin firmar, y su remitente es la cuenta multifirma.
  2. Los participantes añaden sus firmas, todas a la vez o en transacciones MultiSignature posteriores, en cualquier orden. El cuerpo de una MultiSignature puede llevar cualquier combinación de la definición de la cuenta, la transacción interna y firmas, así que varias de estas envolturas pueden ir completando una misma transacción interna.
  3. Cada participante firma el resumen vinculado a la cadena de la transacción interna, SHA3-256("ZBC-TX" ‖ genesis hash ‖ inner bytes), con el esquema de su propio tipo de clave (véase firmar una transacción). Las firmas se guardan bajo el hash de la transacción interna. Una firma de alguien que no es participante, o una que no se verifica, simplemente no se cuenta.
  4. Cuando las firmas válidas alcanzan el umbral, la transacción interna se ejecuta una sola vez. La cuenta multifirma paga su comisión, al menos el suelo de la transacción interna, y la transacción interna queda marcada como ejecutada para siempre, así que nunca puede repetirse.

El remitente de cada envoltura MultiSignature paga la comisión de esa envoltura.

No se construye ninguna firma conjunta fuera de la cadena y no se impone ningún orden de firma: cada clave firma por su cuenta, con su propio esquema.

Un pago interno pendiente guardado por su hash; claves de ZooBC, Ethereum y Bitcoin firman en envolturas separadas; dos firmas válidas alcanzan el umbral y el pago se ejecuta una sola vez
Un pago interno pendiente guardado por su hash; claves de ZooBC, Ethereum y Bitcoin firman en envolturas separadas; dos firmas válidas alcanzan el umbral y el pago se ejecuta una sola vez

Lo que puede hacer

La transacción interna puede ser de uno de estos tipos:

  • Empty o SendZBC;
  • uno de los cuatro tipos de registro de nodos (registrar, actualizar, retirar y reclamar un registro de nodo);
  • SetSplitPolicy;
  • uno de los cuatro tipos de grupos de cuentas (LinkAccount, UnlinkAccount, SetMemberPermissions y TransferGroupControl).

Así, una cuenta multifirma puede pagar ZBC, tener un registro de nodo, compartir sus ingresos con una política de reparto y participar en un grupo de cuentas, pero no envía tokens directamente. Puede consentir su entrada en un grupo mediante su umbral, igual que una clave única consiente con su propia firma.

Según la regla de una transacción por cuenta y bloque, una transacción interna cuenta para la cuenta multifirma cuando se ejecuta.

Quién tiene voz

Solo cuentan las firmas de los participantes. Los nodos registrados no firman por la cuenta; solo comprueban las firmas de los participantes, como comprueban cualquier otra. La ZooBC Foundation tampoco tiene voz sobre ella, sea cual sea el importe.

Véase también