Firmantes de sBTC
Resumen
El contrato sBTC Signers (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 firmantesnew-aggregate-pubkey:(buff 33)- Nueva clave pública agregadanew-signature-threshold:uint- Nuevo umbral de firma
Devuelve:
(response (buff 33) uint)
Flujo de la función:
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).
Verificar llamante
Verificar que quien llama sea el principal firmante actual.
Validar claves
Comprobar la longitud de cada nueva clave y de la clave pública agregada (debe ser de 33 bytes).
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úblicasm: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úblicasm: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úblicasm: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úblicaiterator:(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 comprobarhelper-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 aget-current-signer-datayrotate-keyspara gestionar los datos de los firmantes.
Consideraciones de seguridad
Control de acceso: Solo el principal firmante actual puede llamar a la función de rotación de claves.
Validación de claves: Asegura que todas las claves proporcionadas tengan la longitud correcta.
Umbral de firma: Impone un umbral mínimo de más del 50% de los firmantes y un máximo del 100%.
Generación multisig: Proporciona utilidades para la generación segura de direcciones multisig.
Última actualización
¿Te fue útil?