Firmantes de sBTC

Resumen

El contrato sBTC Signersarrow-up-right (sbtc-bootstrap-signers.clar) gestiona el conjunto de firmantes para el sistema sBTC. Maneja la rotación de las claves de firma y proporciona utilidades para generar direcciones multisig.

Constantes

  • key-size: La longitud requerida de las claves públicas (33 bytes).

Constantes de error

  • ERR_KEY_SIZE_PREFIX: Prefijo para errores de tamaño de clave en el procesamiento por lotes.

  • ERR_KEY_SIZE (u200): Indica que una clave proporcionada no tiene la longitud correcta.

  • ERR_INVALID_CALLER (u201): Significa que quien llama a la función no es el principal firmante actual.

  • ERR_SIGNATURE_THRESHOLD (u202): Indica un umbral de firma no válido (debe ser >50% y ≤100% del total de claves de firmantes).

Funciones públicas

rotate-keys-wrapper

Rota las claves de los firmantes. Se llama cuando se actualiza el conjunto de firmantes.

  • Parámetros:

    • new-keys: (list 128 (buff 33)) - Lista de nuevas claves públicas de firmantes

    • new-aggregate-pubkey: (buff 33) - Nueva clave pública agregada

    • new-signature-threshold: uint - Nuevo umbral de firma

  • Devuelve: (response (buff 33) uint)

Flujo de la función:

1

Validar umbral de firma

Asegurarse de que el nuevo umbral de firma sea válido (debe ser >50% y ≤100% del total de claves de firmantes).

2

Verificar llamante

Verificar que quien llama sea el principal firmante actual.

3

Validar claves

Comprobar la longitud de cada nueva clave y de la clave pública agregada (debe ser de 33 bytes).

4

Actualizar registro

Llamar al contrato del Registro sBTC para actualizar las claves y la dirección.

Funciones de solo lectura

pubkeys-to-spend-script

Genera el script de redención p2sh para una multisig.

  • Parámetros:

    • pubkeys: (list 128 (buff 33)) - Lista de claves públicas

    • m: uint - Número de firmas requeridas

  • Devuelve: (buff 1024) - El script de redención p2sh

pubkeys-to-hash

Calcula el hash160 del script de redención p2sh.

  • Parámetros:

    • pubkeys: (list 128 (buff 33)) - Lista de claves públicas

    • m: uint - Número de firmas requeridas

  • Devuelve: (buff 20) - El hash160 del script de redención

pubkeys-to-principal

Genera un principal (dirección de Stacks) a partir de un conjunto de pubkeys y un umbral m-de-n.

  • Parámetros:

    • pubkeys: (list 128 (buff 33)) - Lista de claves públicas

    • m: uint - Número de firmas requeridas

  • Devuelve: principal - La dirección de Stacks generada

pubkeys-to-bytes

Concatena una lista de pubkeys en un búfer con prefijos de longitud.

  • Parámetros:

    • pubkeys: (list 128 (buff 33)) - Lista de claves públicas

  • Devuelve: (buff 510) - Pubkeys concatenadas con prefijos de longitud

concat-pubkeys-fold

Concatena un búfer de pubkey con un prefijo de longitud.

  • Parámetros:

    • pubkey: (buff 33) - Una sola clave pública

    • iterator: (buff 510) - Acumulador para la concatenación

  • Devuelve: (buff 510) - Búfer concatenado actualizado

bytes-len

Devuelve la longitud de un búfer de bytes como un solo byte.

  • Parámetros:

    • bytes: (buff 33) - Búfer de bytes de entrada

  • Devuelve: (buff 1) - Longitud como un solo byte

uint-to-byte

Convierte un uint en un solo byte.

  • Parámetros:

    • n: uint - Número de entrada

  • Devuelve: (buff 1) - Número como un solo byte

Funciones privadas

signer-key-length-check

Comprueba que la longitud de cada clave sea exactamente de 33 bytes.

  • Parámetros:

    • current-key: (buff 33) - Clave pública a comprobar

    • helper-response: (response uint uint) - Acumulador para el manejo de errores

  • Devuelve: (response uint uint) - Acumulador actualizado o error

Constantes

BUFF_TO_BYTE

Una lista constante que asigna valores uint (0-255) a sus representaciones de byte correspondientes.

Interacciones con otros contratos

  • .sbtc-registry: Llama a get-current-signer-data y rotate-keys para gestionar los datos de los firmantes.

Consideraciones de seguridad

circle-exclamation

Última actualización

¿Te fue útil?