Evaluación Técnica y de Seguridad del Smart Contract J1USD
Informe exhaustivo de análisis arquitectónico y verificación del sistema de tokens J1USD en BNB Smart Chain. Revisado para garantizar la seguridad en actualizaciones, controles de acceso inmutables, invariantes de suministro y segregación de liquidez multisede.
Cero Hallazgos Críticos
0 Critical
0 vulnerabilidades altas / 0 críticas identificadas en los contratos centrales del token.
Techo Estricto de Suministro
1,000,000,000
Límite inmutable de 1.000.000.000 J1USD aplicado a nivel de bytecode.
Separación de Roles
RBAC Partitioned
Direcciones independientes para Administrador, Actualizador, Emisor, Quemador y Pausador.
Gaps de Almacenamiento UUPS
__gap[42]
Brecha reservada de 42 slots para prevenir colisiones de memoria en futuras actualizaciones.
DESPLIEGUES VERIFICADOS EN CADENA
Direcciones Canónicas de Contratos y Verificación
J1USD se ejecuta mediante un patrón modular de proxy UUPS OpenZeppelin ERC-1967. A continuación se presentan los contratos de código fuente verificados y desplegados en BNB Smart Chain mainnet.
J1USDProxy.sol
Dirección canónica del token BEP-20 para usuarios. Todos los saldos, autorizaciones y almacenamiento residen permanentemente aquí. Compatible con Grey Wallet, MetaMask, Trust Wallet y todos los DEXs de BNB Chain.
J1USDTokenUpgradeable.sol
Implementación que contiene las reglas de negocio compiladas, verificaciones de cumplimiento, límites de techo de suministro y modificadores de rol. La inicialización directa está bloqueada en despliegue mediante guardia de constructor.
0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.REVISIÓN DE POLÍTICAS Y CUMPLIMIENTO
Mecanismos de Lista Negra, Congelación y Sanciones
Evaluación de los mecanismos de cumplimiento del token. J1USD es un token BEP-20 abierto que opera bajo un modelo activo de lista negra y congelación — no una lista blanca —, garantizando la máxima componibilidad permisionless al tiempo que permite la aplicación de sanciones legales.
Sin Requisito de Lista Blanca (Transferencias Sin Permiso)
J1USD NO tiene lista blanca de transferencias. Cualquier billetera Web3 estándar en BNB Smart Chain puede recibir, mantener, enviar y operar J1USD libremente en DEXs sin KYC ni registro previo.
Funcionalidad Explícita de Lista Negra (Cumplimiento Adverso)
Un rol dedicado BLACKLISTER_ROLE puede restringir cuentas maliciosas vinculadas a ataques, sanciones o robos para evitar débitos o créditos de fondos.
Congelación Precisa Parcial y Total de Cuentas
El contrato admite tanto freezeAccount() como freezeBalance(amount). En disputas comerciales, solo se bloquea el importe disputado, manteniendo la liquidez de los fondos restantes.
Protección Certificada de Quema Legal (Wipe)
WIPER_ROLE solo puede destruir saldos congelados en virtud de resoluciones judiciales o regulatorias vinculantes. La destrucción arbitraria de activos de billeteras es estructuralmente imposible.
Verificación de Hooks en Bytecode: _update(), _approve() y transferFrom()
El bytecode ejecuta validaciones estrictas de débito y crédito dentro de _update(from, to, amount):
El remitente NO debe estar en lista negra (!isBlacklisted), la cuenta NO debe estar congelada (!isAccountFrozen), y el monto solicitado no puede superar availableBalanceOf.
El destinatario NO debe estar en lista negra ni congelado. Evita que actores ilícitos transfieran fondos a carteras bajo custodia restringida.
Tanto el propietario del token como el operador autorizado deben estar libres de restricciones. Las entidades restringidas no pueden delegar permisos ni transferir fondos.
ARQUITECTURA DE SMART CONTRACTS
Mecanismos de Seguridad y Análisis de Invariantes
Evaluación exhaustiva de los componentes clave de J1USD: seguridad de actualización de proxy, deduplicación criptográfica, aislamiento de funciones y salvaguardas de emergencia.
Seguridad de Actualización UUPS
Basado en el estándar UUPS de OpenZeppelin. El almacenamiento de estados y saldos reside estrictamente en slots del proxy. El constructor de la implementación ejecuta _disableInitializers() para asegurar que la lógica base no pueda ser reclamada de forma independiente.
Invariante de Techo Estricto de Suministro
A diferencia de las stablecoins sin límite, J1USD aplica un supplyCeiling en el contrato. Cada llamada a mint() comprueba que totalSupply() + amount <= supplyCeiling. El administrador tiene prohibido reducir el techo por debajo del suministro circulante actual.
Deduplicación Idempotente de Eventos
Las operaciones de emisión y quema exigen un hash de referencia bytes32 único (issuanceReference / burnReference). Cualquier intento de reutilizar una referencia revierte inmediatamente con ReferenceAlreadyUsed.
Transiciones de Administración con Bloqueo Temporal
Utiliza AccessControlDefaultAdminRulesUpgradeable. Las transferencias del rol de administrador no pueden ejecutarse en un solo bloque; exigen un retraso obligatorio (defaultAdminDelay), protegiendo contra compromisos hostiles de claves.
Congelación Parcial de Alta Precisión
En lugar de bloquear cuentas enteras, J1USD introduce freezeBalance. Los fondos objeto de disputa pueden congelarse de forma proporcional mientras availableBalanceOf permite el uso legítimo del remanente.
Direcciones de Sistema Protegidas
Las direcciones críticas del protocolo (piscinas de PancakeSwap, tesorería e infraestructura operativa) están registradas como protectedSystemAddress, haciéndolas inmunes a bloqueos o congelaciones.
MATRIZ DE AUTORIZACIÓN
Permisos de Control de Acceso Basado en Roles (RBAC)
Verificación de privilegios entre los actores de administración, emisión, quema, cumplimiento y emergencia. Todas las funciones privilegiadas exigen firmas criptográficas explícitas acordes con los roles asignados.
| Identificador de Rol | Función(es) Privilegiada(s) | Controles de Seguridad e Invariantes |
|---|---|---|
| DEFAULT_ADMIN_ROLE0x00 (Admin Root) | Configura asignaciones de roles, actualiza límites de techo de suministro y define direcciones de sistema protegidas. | Regido por OpenZeppelin AccessControlDefaultAdminRules con retraso obligatorio por timelock. |
| UPGRADER_ROLEkeccak256('UPGRADER_ROLE') | Autoriza actualizaciones de lógica de implementación UUPS en _authorizeUpgrade(). | Restringido estrictamente a la gobernanza multifirma del protocolo; no puede alterar el estado sin un despliegue de contrato válido. |
| MINTER_ROLEkeccak256('MINTER_ROLE') | Emite nuevos tokens J1USD contra colateral verificado o requerimientos de liquidación del protocolo. | Limitado estrictamente por el supplyCeiling inmutable y la deduplicación de issuanceReference único. |
| BURNER_ROLEkeccak256('BURNER_ROLE') | Reduce el suministro de tokens durante el reembolso o la liquidación de deudas del protocolo. | Requiere un burnReference único. Un bypass delimitado permite quemar desde cuentas restringidas para mantener la solvencia del protocolo. |
| PAUSER_ROLEkeccak256('PAUSER_ROLE') | Activa o desactiva el interruptor de emergencia que detiene las transferencias estándar. | Capacidad defensiva ante eventos de cisne negro o anomalías en puentes de enlace. |
| BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE') | Añade o retira direcciones de la lista negra global de débito/crédito. | No puede dirigirse contra direcciones de protectedSystemAddress. Exige referencia de seguimiento de cumplimiento. |
| FREEZER_ROLEkeccak256('FREEZER_ROLE') | Congela cuentas completas o importes parciales (freezeBalance, freezeAllCurrentBalance). | Permite congelar importes específicos en disputa mientras mantiene disponible el resto del saldo. Direcciones de sistema inmunes. |
| WIPER_ROLEkeccak256('WIPER_ROLE') | Destruye saldos congelados en cumplimiento de una orden judicial o regulatoria certificada. | Solo puede aplicarse sobre cuentas previamente congeladas o en lista negra; no puede exceder el importe congelado. |
| RESCUE_ROLEkeccak256('RESCUE_ROLE') | Recupera tokens BEP-20 de terceros enviados por error al contrato. | Tiene estrictamente prohibido interactuar con los saldos de token J1USD (RescueProhibitedToken). |
INFRAESTRUCTURA DE LIQUIDEZ Y EVALUACIÓN DE POOLS
Liquidez DEX On-Chain vs. Pools Secundarios Centralizados
J1USD equilibra mercados AMM descentralizados no custodiales en BNB Smart Chain con libros de órdenes centralizados off-chain. A continuación se desglosan las direcciones de pools, enlaces de negociación en vivo y límites de seguridad.
Pools de Creadores de Mercado Automatizados (AMM)
Piscinas de liquidez de smart contract no custodiales que operan nativamente en BNB Smart Chain mediante PancakeSwap. Sin custodia de contraparte; las transacciones se ejecutan peer-to-contract mediante bytecode inmutable.
Pool de liquidez concentrada que ancla J1USD estrechamente a 1.00 USD Coin. Dirección de sistema designada y protegida contra congelaciones.
Puente AMM descentralizado que interconecta el token de utilidad AirJIT (JIT) y el activo de liquidación del protocolo (J1USD).
Pools de Libro de Órdenes Interno
AirJIT cotiza mercados secundarios en los principales pares colaterales off-chain sin direcciones de contrato dedicadas. La liquidación de operaciones se realiza mediante motores de calce centralizados de alto rendimiento.
Los servidores off-chain no poseen claves privadas autorizadas para emitir o quemar tokens J1USD en BNB Smart Chain.
Los saldos internos de cuentas off-chain están estrictamente delimitados por depósitos verificados en el contrato proxy on-chain.
Pares de Negociación Secundarios Off-Chain (Libro de Órdenes):
HALLAZGOS DE LA EVALUACIÓN Y MODELADO DE AMENAZAS
Análisis de Vectores de Ataque y Defensas Formales
Revisión integral de las superficies de ataque económicas, matemáticas y criptográficas investigadas durante la auditoría técnica.
Ataques de Reentrancia
El token hereda estrictamente las actualizaciones de estado ERC-20 de OpenZeppelin (_update) sin realizar llamadas externas no fiables antes de asentar saldos. Cumple íntegramente con Checks-Effects-Interactions.
Manipulación de Oráculos y Precio Spot
El registro contable de J1USD no consulta oráculos de precios externos durante transferencias ni autorizaciones. La aritmética es 100% interna, eliminando ataques por manipulación de precios con préstamos flash.
Secuestro de la Implementación
El constructor de la implementación ejecuta _disableInitializers() en el despliegue. El contrato de lógica subyacente no puede ser inicializado ni poseído por un atacante de forma independiente.
Toma de Control Hostil de Gobernanza
Las reasignaciones del rol de administración imponen un retraso temporal inalterable (defaultAdminDelay). El compromiso de una única clave no permite tomar control administrativo inmediato del token.
INVARIANTES DE SEGURIDAD
Invariantes de Seguridad Formalmente Verificados
Resumen de comprobaciones de bytecode que verifican que la integridad del sistema se preserva en todos los casos límite.
Exigibilidad del Techo de Suministro
Las operaciones de emisión revierten con SupplyCeilingExceeded si totalSupply() + amount supera el techo on-chain. El administrador tiene prohibido reducir el techo por debajo del suministro circulante.
Comprobación de estado supplyCeiling en mint()Deduplicación contra Repetición en Emisión y Quema
Cada transacción de emisión y quema requiere un identificador idempotente bytes32. Las llamadas duplicadas revierten con ReferenceAlreadyUsed, impidiendo la doble ejecución.
Mapeos _usedIssuanceReferences y _usedBurnReferencesMitigación de Secuestro de la Implementación
El contrato de implementación bloquea los inicializadores en su constructor. Ningún actor malicioso puede inicializar ni reclamar la titularidad directa del contrato de lógica.
Llamada a _disableInitializers() en el constructorProtección contra Colisiones de Almacenamiento
El almacenamiento del proxy sigue los slots estándar ERC-1967. Una brecha reservada de 42 palabras garantiza que futuras actualizaciones no sobreescriban variables existentes.
Slots estándar ERC-1967 + uint256[42] gapMitigación de Toma de Control Hostil de Administración
La transferencia de DEFAULT_ADMIN_ROLE no es instantánea. Un procedimiento de dos fases con retraso temporal previene tomas de control súbitas o desastres por pérdida de una sola clave.
AccessControlDefaultAdminRules con defaultAdminDelayInmunidad de Infraestructura Crítica
Las direcciones de sistema registradas (pools DEX, tesorería, contratos operativos) no pueden ser congeladas ni puestas en lista negra, eliminando riesgos de DoS sobre las vías de liquidez pública.
Comprobación _requireNotProtected() en funciones de cumplimientoBloqueo de Auto-Drenaje en Rescate de Tokens
La función rescueERC20 permite recuperar tokens de terceros enviados por error, pero bloquea explícitamente llamadas que tengan como objetivo el propio token J1USD.
Comprobación RescueProhibitedToken en rescueERC20()Interruptor Global de Emergencia (Circuit Breaker)
El rol autorizado PAUSER_ROLE puede pausar de inmediato transferencias y aprobaciones ante anomalías graves de mercado, preservando al mismo tiempo las operaciones legales de quema.
Modificador whenNotPaused en transfer/mint/approvePrecisión de Congelación Aislada de Saldo
Permite congelar saldos en disputa sin inmovilizar toda la cartera del usuario, dejando los fondos excedentes disponibles de forma líquida.
Aislamiento aritmético en availableBalanceOf()DIVULGACIÓN RESPONSABLE
Reportar una Vulnerabilidad
AirJIT mantiene un programa proactivo de divulgación de vulnerabilidades. Si descubre una vulnerabilidad de seguridad en el proxy J1USD, la implementación o la infraestructura de smart contracts, repórtela de manera responsable.
Cifre los informes confidenciales con PGP cuando sea posible. Respondemos a todas las presentaciones legítimas en un plazo de 24 horas.