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, al tiempo que proporciona funciones exclusivas del protocolo para acuñar, quemar, actualizaciones de gobernanza y pausado.

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 governance 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 de SIP-010. La función comprueba que el emisor sea ya sea tx-sender o contract-caller (para contratos que gestionan escrow o bóvedas) y luego realiza la transferencia. Un memo opcional se registra en la cadena.

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

Obtiene los metadatos estándar de 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 del token 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 el suministro total de USDCx acuñado menos quemado.

get-token-uri()

Devuelve la URI de metadatos del token.


Validación del llamador del protocolo

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

is-protocol-caller(role, contract)

Comprueba si el principal contractual especificado tiene el rol requerido.

validate-protocol-caller(role, contract)

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

is-protocol-paused()

Devuelve si el protocolo está actualmente pausado.

validate-protocol-active()

Afirma que el protocolo no esté pausado; de lo contrario devuelve ERR_PAUSED.


Operaciones de token exclusivas del protocolo

Estas funciones permiten acuñar/quemar/transferir estrictamente para contratos del protocolo autorizados.

protocol-transfer(amount, sender, recipient)

Realiza una transferencia a nivel de protocolo en nombre de otro contrato. Solo los llamadores con el rol de mint pueden usarlo. Falla si el protocolo está pausado.

protocol-mint(amount, recipient)

Acuña nuevo USDCx para un principal. Restringido al rol de mint y deshabilitado cuando está pausado.

protocol-burn(amount, owner)

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

protocol-mint-many(recipients)

Acuña tokens por lotes a múltiples destinatarios en una sola llamada. Cada elemento incluye { amount, recipient }. Solo puede ser llamado por entidades con el rol de mint.


Funciones de gobernanza

Solo el rol de gobernanza 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 la 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 la acuñación, quema y todas las acciones exclusivas del protocolo. Solo puede ser llamada por el rol de pausa.

unpause()

Rehabilita el protocolo después de una pausa. También restringido al rol de pausa.

Ambas funciones emiten un evento en cadena para mayor transparencia.

Última actualización

¿Te fue útil?