Saltar al contenido principal

Licencias de cadena

El módulo x/license proporciona licencias de capacidades on-chain. Ciertas capacidades restringidas en QoreChain —en particular las funciones de puente y de validador por cadena— requieren que la cuenta que actúa posea una licencia válida para esa capacidad. Una licencia es simplemente un registro on-chain que autoriza a un titular específico (el concesionario) a usar una función restringida específica.

Las licencias mantienen estas capacidades verificables y autodescriptivas: cualquier integrador, explorador o billetera puede preguntar a la cadena si una cuenta dada está autorizada para una función dada, sin necesidad de ninguna búsqueda off-chain.

Qué representa una licencia

Cada licencia es un registro indexado por un par (grantee, feature_id):

  • grantee — la cuenta qor que la licencia autoriza.
  • feature_id — la capacidad restringida que desbloquea. Los ID de función son identificadores de cadena estables; las capacidades de puente y de validador se nombran por cadena de destino (por ejemplo bridge_ethereum, validator_solana), junto con funciones generales como las funciones de protocolo de puente y de operador de nodo/validador.
  • granted_at / expires_at — la altura de bloque en la que se otorgó la licencia y la altura de bloque en la que expira (un valor de 0 significa que no expira).
  • granted_by — la autoridad que emitió la licencia.

Una capacidad restringida tras una función simplemente comprueba, en tiempo de ejecución, si la cuenta que actúa posee una licencia activa para esa función.

Ciclo de vida de una licencia

Una licencia pasa por un pequeño conjunto de estados:

EstadoSignificado
Otorgada / ActivaLa licencia existe y autoriza al concesionario. Se considera activa mientras no esté suspendida ni expirada.
SuspendidaDeshabilitada temporalmente. El registro sigue existiendo, pero la capacidad restringida se deniega hasta que la licencia se reanude.
RevocadaEliminada de forma permanente. El concesionario ya no posee la licencia en absoluto.

Una licencia también deja de estar activa una vez que pasa su altura expires_at, incluso si nunca fue suspendida ni revocada.

Quién puede cambiar las licencias

Otorgar, revocar, suspender y reanudar licencias son operaciones de autoridad — las realiza la autoridad de gobernanza de la cadena, no usuarios arbitrarios. Estas transacciones existen como parte de la superficie de comandos del módulo, pero un usuario normal no las invoca directamente; el ciclo de vida lo administra on-chain la autoridad.

Para obtener una licencia, los integradores pasan por el Dashboard (Herramientas → Comprar licencia), que gestiona el flujo de solicitud; la autoridad registra entonces la concesión on-chain.

Las transacciones restringidas a la autoridad son:

# Grant a license for a feature to a grantee (authority signs)
qorechaind tx license grant qor1grantee... bridge_ethereum \
--expires-at 0 --from qor1authority... --chain-id qorechain-vladi

# Suspend / resume a license
qorechaind tx license suspend qor1grantee... bridge_ethereum --from qor1authority...
qorechaind tx license resume qor1grantee... bridge_ethereum --from qor1authority...

# Revoke a license permanently
qorechaind tx license revoke qor1grantee... bridge_ethereum --from qor1authority...

Comprobar y verificar una licencia

Los comandos de consulta están abiertos a cualquiera. Son la parte del módulo que los integradores usan a diario: para confirmar que una cuenta está autorizada antes de confiar en una capacidad restringida, o para mostrar el estado de la licencia en una billetera o explorador.

Comprobar una sola licencia

check informa de si un concesionario específico posee una función específica, y de si esa licencia está actualmente activa. Esta es la llamada canónica de "¿está esta cuenta autorizada a hacer X?".

qorechaind query license check qor1grantee... bridge_ethereum
# -> returns the license record and an `active` flag (true / false)

La respuesta incluye los detalles de la licencia y un campo booleano active que ya tiene en cuenta la suspensión y la expiración, de modo que un true significa que el concesionario puede usar la función restringida en este momento.

Listar las licencias de un concesionario

list devuelve todas las licencias que posee una cuenta, en todas las funciones.

qorechaind query license list qor1grantee...

Listar los titulares de una función

holders devuelve todas las cuentas que poseen una licencia para una función dada, útil para enumerar, por ejemplo, quién está autorizado para una capacidad de puente o de validador en particular.

qorechaind query license holders bridge_ethereum

Resumen de comandos

Transacciones (qorechaind tx license …) — restringidas a la autoridad / gobernanza:

ComandoPropósito
grantAutorizar a un concesionario para una función
revokeEliminar una licencia de forma permanente
suspendDeshabilitar temporalmente una licencia
resumeReactivar una licencia suspendida

Consultas (qorechaind query license …) — abiertas a cualquiera:

ComandoPropósito
checkComprobar una licencia (grantee, feature) y su estado activo
listListar todas las licencias que posee un concesionario
holdersListar todos los concesionarios que poseen una función dada

Relacionado

  • Las licencias para funciones de puente y de validador respaldan las capacidades descritas en Arquitectura del puente.
  • Las licencias se obtienen a través del Dashboard (Herramientas → Comprar licencia).
  • Los nodos ligeros obtienen una licencia durante el Registro y licencias.
  • Compra y gestiona licencias desde el Centro de herramientas.