usdcx-token

Resumen del Contrato USDCx-Token

Este contrato implementa USDCx, un token fungible SIP-010 en Stacks con un sistema de control de acceso basado en roles y funcionalidad de pausa para la seguridad del protocolo. Expone la interfaz estándar SIP-010 para transferencias, consultas de suministro y metadatos, mientras proporciona funciones sólo para el protocolo para acuñar, quemar, actualizaciones de gobernanza y pausa.

Roles

El contrato define tres roles privilegiados:

  • Gobernanza (governance-role) – gestiona la configuración del protocolo, actualiza los metadatos del token y asigna roles.

  • Acuñar (mint-role) – autorizado para acuñar, quemar y realizar transferencias a nivel de protocolo.

  • Pausa (pause-role) – autorizado para pausar y reanudar el protocolo.

Una pausa del protocolo detiene las operaciones que cambian el estado por seguridad. El desplegador del contrato recibe automáticamente el gobernance rol. El contrato complementario .usdcx-v1 recibe automáticamente el mint rol.


Desglose Función por Función

Funciones Estándar SIP-010

transfer(amount, sender, recipient, memo)

Transfiere USDCx entre principales, siguiendo las reglas SIP-010. La función verifica que el remitente sea ya sea tx-sender o contract-caller (para contratos que gestionan custodia o bóvedas) y luego realiza la transferencia. Se registra en la cadena un memo opcional.

get-name(), get-symbol(), get-decimals()

Getters de metadatos estándar SIP-010 que devuelven el nombre del token, el símbolo y la precisión decimal.

get-balance(who), get-balance-available(who), get-balance-locked(who)

Devuelve el saldo de tokens para el principal dado. En esta implementación, las tres funciones de acceso devuelven el mismo valor de saldo SIP-010.

get-total-supply()

Devuelve la oferta total de USDCx acuñada menos la quemada.

get-token-uri()

Devuelve el URI de metadatos del token.


Validación de llamantes del protocolo

Estas funciones hacen cumplir los permisos basados en roles del contrato.

is-protocol-caller(role, contract)

Comprueba si el principal de contrato especificado posee el rol requerido.

validate-protocol-caller(role, contract)

Asegura que el llamante tenga el rol correcto. Si no, devuelve ERR_UNAUTHORIZED.

is-protocol-paused()

Devuelve si el protocolo está actualmente en pausa.

validate-protocol-active()

Asegura que el protocolo no esté en pausa, de lo contrario devuelve ERR_PAUSED.


Operaciones de Token Exclusivas del Protocolo

Estas funciones habilitan acuñación/quemado/transferencias exclusivamente para contratos de protocolo autorizados.

protocol-transfer(amount, sender, recipient)

Realiza una transferencia a nivel de protocolo en nombre de otro contrato. Sólo los llamantes con el rol mint pueden usarla. Falla si el protocolo está en pausa.

protocol-mint(amount, recipient)

Acuña nuevos USDCx a un principal. Restringido al rol mint y deshabilitado cuando está en pausa.

protocol-burn(amount, owner)

Quema tokens del saldo de un principal. También restringido al rol mint y deshabilitado cuando está en pausa.

protocol-mint-many(recipients)

Acuña por lotes tokens a múltiples destinatarios en una sola llamada. Cada elemento incluye { amount, recipient }. Sólo invocable por entidades con el rol mint.


Funciones de Gobernanza

Sólo el rol governance puede llamar a estas funciones.

protocol-set-name(new-name)

Actualiza el nombre SIP-010 del token.

protocol-set-symbol(new-symbol)

Actualiza el símbolo ticker SIP-010 del token.

protocol-set-token-uri(new-uri)

Actualiza el URI de metadatos SIP-016.

set-active-protocol-caller(caller, role, enabled)

Agrega o elimina un principal de un rol específico del protocolo. Se usa para rotar sistemas, actualizar contratos complementarios o delegar nueva responsabilidad.


Controles de Pausa

Estas funciones permiten al protocolo detener operaciones por seguridad o mantenimiento.

pause()

Pausa el contrato, deshabilitando acuñación, quemado y todas las acciones exclusivas del protocolo. Sólo invocable por el rol pause.

unpause()

Vuelve a habilitar el protocolo después de una pausa. También restringido al rol pause.

Ambas funciones emiten un evento on-chain para transparencia.

Última actualización

¿Te fue útil?