REVUE INTERNE VALIDÉE · ZÉRO FAILLE CRITIQUEBNB Smart Chain (BEP-20)Proxy UUPS (ERC-1967)Solidity 0.8.24

Évaluation Technique et de Sécurité du Smart Contract J1USD

Rapport complet d'analyse architecturale et de vérification du système de jetons J1USD sur BNB Smart Chain. Revue technique pour la sécurité d'évolutivité, les contrôles d'accès immuables, les invariants d'approvisionnement et la ségrégation de liquidité multi-plateforme.

Divulgation d'évaluation: Cette évaluation technique et de sécurité a été menée en interne par l'équipe de développement et de sécurité d'AirJIT. Il ne s'agit pas d'un audit tiers indépendant de smart contracts.

Zéro Vulnérabilité Critique

0 Critical

0 faille haute / 0 faille critique identifiée dans les contrats principaux du jeton.

Plafond d'Émission Strict

1,000,000,000

Plafond immuable de 1 000 000 000 J1USD appliqué au niveau du bytecode.

Séparation des Rôles

RBAC Partitioned

Adresses distinctes pour l'Administrateur, la Mise à niveau, l'Émission, la Destruction et la Pause.

Gaps de Stockage UUPS

__gap[42]

Espace réservé de 42 slots (__gap[42]) empêchant toute collision de mémoire lors des mises à niveau.

DÉPLOIEMENTS SUR CHAÎNE VÉRIFIÉS

Adresses de Contrats Canoniques et Vérification

J1USD fonctionne selon un modèle de proxy modulaire OpenZeppelin ERC-1967 UUPS. Voici les contrats source vérifiés déployés sur le réseau principal BNB Smart Chain.

Proxy Officiel du Jeton
Détenez et Échangez Cette Adresse

J1USDProxy.sol

Adresse canonique du jeton BEP-20 pour les utilisateurs. L'ensemble des soldes, autorisations et états réside ici en permanence. Compatible avec Grey Wallet, MetaMask, Trust Wallet et tous les DEX de BNB Chain.

Standard de ProxyERC-1967 (UUPS)
Standard de JetonBEP-20 (6 Décimales)
Contrat d'Implémentation Logique
N'Envoyez Pas de Fonds Ici

J1USDTokenUpgradeable.sol

Implémentation logique regroupant les règles métier compilées, les contrôles de conformité, le plafond d'émission et les modificateurs de rôle. L'initialisation directe est verrouillée au déploiement via garde de constructeur.

Versionv1.0.0 (Revue interne)
Plafond d'Approvisionnement1 000 000 000 J1USD
Security Notice for Integrators & Wallets: Always route transfers, deposits, and automated liquidity integrations directly to the Proxy address (0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.

REVUE DE CONFORMITÉ ET DE POLITIQUE

Mécanismes de Liste Noire, Gel de Compte et Sanctions

Évaluation des mécanismes de conformité du jeton. J1USD est un jeton BEP-20 ouvert fonctionnant avec un modèle actif de liste noire et de gel — et non de liste blanche —, garantissant une composabilité sans permission maximale tout en permettant l'application de sanctions légales.

SANS PERMISSIONSUCCÈS · Autorisé

Aucune Liste Blanche Requise (Transferts Sans Permission)

J1USD n'impose AUCUNE liste blanche de transfert. Tout portefeuille Web3 standard sur BNB Smart Chain peut recevoir, détenir, envoyer et échanger librement J1USD sur les DEX sans validation KYC ni inscription préalable.

Évaluation de sécurité:Les fonctions de transfert standard (transfer, transferFrom) s'exécutent inconditionnellement pour tous les comptes non restreints. Les opérations décentralisées peer-to-peer ne requièrent aucune autorisation.
CONTRÔLÉ PAR RBACSUCCÈS · Protégé

Fonctionnalité Explicite de Liste Noire (Conformité Pénale)

Un rôle dédié BLACKLISTER_ROLE peut restreindre les adresses malveillantes associées à des hacks, sanctions ou vols avérés afin d'interdire tout débit ou crédit de fonds.

Évaluation de sécurité:addToBlacklist() exige un hachage bytes32 complianceReference non nul pour l'auditabilité sur chaîne. Les adresses système protégées (AMMs de DEX et Trésorerie) sont mathématiquement immunisées contre tout verrouillage.
ISOLATION DU LITIGESUCCÈS · Isolé

Gel de Compte Partiel et Total de Haute Précision

Le contrat prend en charge freezeAccount() et freezeBalance(amount). Lors d'un litige commercial, seul le montant contesté est bloqué, préservant la liquidité du reste des fonds.

Évaluation de sécurité:availableBalanceOf(account) isole dynamiquement le solde disponible du montant gelé. Les fonds non contestés restent transférables à 100 % par le détenteur même pendant une enquête active.
RESTREINTSUCCÈS · Restriction Stricte

Protection Certifiée d'Effacement Légal (Wipe)

Le rôle WIPER_ROLE ne peut détruire les soldes gelés qu'en vertu de jugements exécutoires ou de directives réglementaires. La destruction arbitraire d'actifs est structurellement impossible.

Évaluation de sécurité:Rejette avec l'erreur WipeRequiresRestrictedAccount si appelé contre une adresse non restreinte ou non gelée. Rejette avec WipeExceedsFrozenBalance si le montant dépasse les fonds gelés.

Vérification des Hooks Bytecode : _update(), _approve() et transferFrom()

Le bytecode applique des validations strictes de débit et crédit à l'intérieur de _update(from, to, amount) :

Débits (_requireCanDebit)

L'expéditeur ne doit PAS figurer sur liste noire (!isBlacklisted), le compte ne doit PAS être gelé (!isAccountFrozen), et le montant demandé ne peut excéder availableBalanceOf.

Crédits (_requireCanCredit)

Le destinataire ne doit PAS figurer sur liste noire ni être gelé. Empêche les acteurs malveillants de transférer des fonds illicites vers des comptes sous restriction.

Autorisations (_approve)

Le propriétaire du jeton ainsi que le délégataire doivent être exempts de restrictions. Les entités restreintes ne peuvent déléguer d'allocations ni exécuter de transferts tiers.

ARCHITECTURE SMART CONTRACT

Mécanismes de Sécurité et Analyse des Invariants

Évaluation approfondie des composants clés de J1USD : sécurité des mises à niveau du proxy, déduplication cryptographique, séparation des responsabilités et garde-fous d'urgence.

Sécurité d'Évolutivité UUPS

Construit sur le standard UUPS d'OpenZeppelin. Les variables d'état et les soldes résident exclusivement dans les slots du proxy. Le constructeur de l'implémentation exécute _disableInitializers() pour garantir que la logique ne puisse être initialisée ou revendiquée indépendamment.

Sécurité du stockage : un gap réservé de 42 slots (__gap[42]) prévient toute altération de la disposition mémoire lors des futures mises à niveau.

Invariant de Plafond d'Émission Strict

Contrairement aux stablecoins sans limite, J1USD impose un supplyCeiling au niveau du contrat. Chaque appel mint() vérifie que totalSupply() + amount <= supplyCeiling. Il est mathématiquement interdit à l'administrateur d'abaisser le plafond sous l'approvisionnement circulant actuel.

Plafond d'approvisionnement maximal : 1 000 000 000,000000 J1USD (6 décimales).

Déduplication Idempotente des Événements

Les opérations d'émission et de destruction imposent un hachage de référence bytes32 unique (issuanceReference / burnReference). Toute transaction réutilisant une référence existante est immédiatement annulée avec l'erreur ReferenceAlreadyUsed.

Élimine les vulnérabilités de rejeu par les opérateurs, les doubles émissions et la désynchronisation des index.

Transitions Administratives avec Verrouillage Temporel

Exploite AccessControlDefaultAdminRulesUpgradeable. Les transferts de rôle administrateur ne peuvent s'effectuer en un seul bloc ; ils imposent un délai obligatoire (defaultAdminDelay), prévenant toute prise de contrôle hostile.

Séparation des rôles : Mise à niveau, Émission, Destruction et Pause opèrent de manière indépendante.

Gel Partiel de Haute Précision

Plutôt que de bloquer des comptes entiers, J1USD introduit freezeBalance. Les montants faisant l'objet d'un litige peuvent être gelés de manière proportionnelle tandis que availableBalanceOf permet l'utilisation normale des fonds restants.

Protège les soldes légitimes lors des litiges commerciaux.

Adresses Système Protégées

Les adresses clés du protocole (pools PancakeSwap, trésorerie et infrastructure opérationnelle) sont enregistrées comme protectedSystemAddress, les immunisant contre tout gel ou blocage sur liste noire.

Évite tout déni de service accidentel ou malveillant sur les paires de trading DEX publiques.

MATRICE D'AUTORISATIONS

Contrôle d'Accès Basé sur les Rôles (RBAC)

Vérification des privilèges entre les acteurs d'administration, d'émission, de destruction, de conformité et d'urgence. Toutes les fonctions privilégiées exigent des signatures cryptographiques explicites correspondant aux rôles attribués.

Identifiant du RôleFonction(s) Privilégiée(s)Contrôles de Sécurité & Invariants
DEFAULT_ADMIN_ROLE0x00 (Admin Root)Configure l'attribution des rôles, met à jour les limites du plafond d'émission et déclare les adresses système protégées.Régie par OpenZeppelin AccessControlDefaultAdminRules avec délai obligatoire de verrouillage temporel.
UPGRADER_ROLEkeccak256('UPGRADER_ROLE')Autorise les mises à niveau de la logique d'implémentation UUPS dans _authorizeUpgrade().Strictement limité à la gouvernance multi-signatures du protocole ; impossible de modifier l'état sans déploiement valide.
MINTER_ROLEkeccak256('MINTER_ROLE')Émet de nouveaux jetons J1USD en contrepartie de garanties vérifiées ou de besoins de règlement du protocole.Strictement borné par le supplyCeiling immuable et la déduplication unique issuanceReference.
BURNER_ROLEkeccak256('BURNER_ROLE')Réduit l'offre de jetons lors des rachats ou de l'apurement des dettes du protocole.Exige un burnReference unique. Un mécanisme de contournement strictement délimité permet de brûler depuis des comptes restreints pour garantir la solvabilité.
PAUSER_ROLEkeccak256('PAUSER_ROLE')Active ou désactive le coupe-circuit d'urgence suspendant les transferts standard.Capacité défensive d'urgence pour les événements imprévus majeurs ou les anomalies de pont.
BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE')Ajoute ou supprime des adresses de la liste noire globale de débit/crédit.Ne peut cibler les adresses définies sous protectedSystemAddress. Nécessite une référence de conformité traçable.
FREEZER_ROLEkeccak256('FREEZER_ROLE')Gèle des comptes entiers ou des soldes partiels (freezeBalance, freezeAllCurrentBalance).Permet de geler des montants spécifiques contestés tout en conservant le solde restant liquide. Adresses système immunisées.
WIPER_ROLEkeccak256('WIPER_ROLE')Détruit les soldes gelés en application d'une décision judiciaire ou réglementaire certifiée.Ne peut viser que des comptes préalablement gelés ou sur liste noire ; ne peut excéder le montant gelé.
RESCUE_ROLEkeccak256('RESCUE_ROLE')Récupère des jetons BEP-20 tiers non liés envoyés par erreur au contrat.Interdiction absolue d'interagir avec les soldes de jetons J1USD (RescueProhibitedToken).

INFRASTRUCTURE DE LIQUIDITÉ & ÉVALUATION DES POOLS

Liquidité DEX On-Chain vs Pools Secondaires Centralisés

J1USD équilibre les marchés AMM décentralisés et non-custodiaux sur BNB Smart Chain avec des carnets d'ordres centralisés hors chaîne. Voici le récapitulatif technique des adresses de pools, liens de trading en direct et limites de sécurité.

Liquidité Décentralisée Sur Chaîne (DEX)

Pools de Teneurs de Marché Automatisés (AMM)

Pools de liquidité intelligents non-custodiaux opérant nativement sur BNB Smart Chain via PancakeSwap. Zéro garde par tiers ; les transactions s'exécutent de pair-à-contrat via un bytecode immuable.

PancakeSwap V3 · J1USD / USDC
PRINCIPALFrais 0,05 %

Pool de liquidité concentrée ancrant étroitement J1USD à 1,00 USD Coin. Adresse système désignée et protégée contre tout gel de conformité.

PancakeSwap V2 · J1USD / JIT
ÉCOSYSTÈMEFrais 0,25 %

Pont AMM décentralisé reliant le jeton d'utilité AirJIT (JIT) et l'actif de règlement du protocole (J1USD).

Pools Secondaires Centralisés & Hors Chaîne

Pools à Carnet d'Ordres Interne

AirJIT cote des marchés secondaires sur les principales paires de collatéraux hors chaîne sans adresses de contrat dédiées. L'exécution est assurée par des moteurs d'appariement centralisés à haut débit.

Zéro Privilège d'Émission sur Smart Contract

Les serveurs hors chaîne ne détiennent aucune clé privée autorisée à émettre ou brûler des jetons J1USD sur BNB Smart Chain.

Couverture d'Actifs 1:1 Sur Chaîne

Les soldes des comptes internes hors chaîne sont strictement limités par les dépôts vérifiés sur le contrat proxy on-chain.

RÉSULTATS DE L'ÉVALUATION & MODÈLE DE MENACES

Analyse des Vecteurs d'Attaque et Défenses Formelles

Examen exhaustif des surfaces d'attaque économiques, mathématiques et cryptographiques analysées lors de l'audit technique.

IMMUNISÉ

Attaques de Réentrance

Le jeton hérite strictement des mises à jour d'état ERC-20 d'OpenZeppelin (_update) sans effectuer d'appels externes non fiables avant la validation des soldes. Respect intégral du schéma Checks-Effects-Interactions.

NON APPLICABLE

Manipulation d'Oracle & Prix Spot

Le registre de jetons J1USD ne consulte aucun oracle de prix externe lors des transferts ou autorisations. L'arithmétique des soldes est 100 % interne, neutralisant toute manipulation par prêt éclair.

EMPÊCHÉ

Détournement de l'Implémentation

Le constructeur de l'implémentation exécute _disableInitializers() dès son déploiement. Le contrat logique sous-jacent ne peut être initialisé ni détenu par un attaquant de manière indépendante.

ATTÉNUÉ

Prise de Contrôle Hostile de la Gouvernance

La réattribution du rôle d'administrateur impose un délai inaltérable (defaultAdminDelay). La compromission d'une seule clé ne permet pas de s'emparer instantanément du contrôle administratif.

INVARIANTS DE SÉCURITÉ

Invariants de Sécurité Formellement Vérifiés

Synthèse des assertions logiques au niveau du bytecode confirmant la préservation de l'intégrité du système dans tous les cas limites.

Statut · Résultat

Respect Inviolable du Plafond d'Émission

Les opérations d'émission échouent avec l'erreur SupplyCeilingExceeded si totalSupply() + amount dépasse le plafond. L'administrateur a l'interdiction d'abaisser le plafond sous l'offre circulante.

Mécanisme d'ExécutionVérification d'état supplyCeiling dans mint()
Statut · Résultat

Déduplication Anti-Rejeu Émission et Destruction

Chaque transaction d'émission et de destruction requiert un identifiant de référence bytes32 idempotent. Toute tentative de réutilisation rejette avec ReferenceAlreadyUsed.

Mécanisme d'ExécutionMappages _usedIssuanceReferences et _usedBurnReferences
Statut · Résultat

Protection contre le Détournement de l'Implémentation

Le contrat d'implémentation verrouille ses initialiseurs dans son constructeur. Aucun attaquant ne peut initialiser ou revendiquer la propriété du contrat logique directement.

Mécanisme d'ExécutionAppel de _disableInitializers() dans le constructeur
Statut · Résultat

Protection contre les Collisions de Stockage

Le stockage du proxy respecte les slots ERC-1967. Un espace réservé de 42 mots garantit que les futures mises à niveau n'écraseront pas les variables d'état existantes.

Mécanisme d'ExécutionSlots standards ERC-1967 + gap uint256[42]
Statut · Résultat

Atténuation des Prises de Contrôle Hostiles de l'Admin

Le transfert de DEFAULT_ADMIN_ROLE n'est pas instantané. Un processus en deux étapes avec délai obligatoire protège contre les compromissions brutales de clés.

Mécanisme d'ExécutionAccessControlDefaultAdminRules avec defaultAdminDelay
Statut · Résultat

Immunité de l'Infrastructure Critique

Les adresses système enregistrées (pools DEX, trésorerie, contrats d'exploitation) ne peuvent être ni gelées ni placées sur liste noire, écartant tout risque de déni de service.

Mécanisme d'ExécutionContrôle _requireNotProtected() dans les fonctions de conformité
Statut · Résultat

Verrouillage Anti-Auto-Vidage lors du Sauvetage

La fonction rescueERC20 permet de récupérer les jetons tiers envoyés par erreur au contrat, mais interdit formellement tout ciblage du contrat de jeton J1USD lui-même.

Mécanisme d'ExécutionContrôle RescueProhibitedToken dans rescueERC20()
Statut · Résultat

Coupe-Circuit d'Urgence Global

Le rôle autorisé PAUSER_ROLE peut interrompre immédiatement les transferts et approbations en cas d'anomalie de marché, tout en préservant les opérations légales de conformité.

Mécanisme d'ExécutionModificateur whenNotPaused sur transfer/mint/approve
Statut · Résultat

Précision de Gel de Solde Isolé

Permet de geler des montants spécifiques contestés sans immobiliser l'intégralité du portefeuille de l'utilisateur, préservant la liquidité des fonds non contestés.

Mécanisme d'ExécutionIsolation arithmétique via availableBalanceOf()

DIVULGATION RESPONSABLE

Signaler une Vulnérabilité

AirJIT maintient un programme proactif de divulgation des vulnérabilités. Si vous découvrez une faille de sécurité dans le proxy J1USD, son implémentation ou l'infrastructure des smart contracts, signalez-la de manière responsable.

Chiffrez les signalements sensibles avec PGP lorsque possible. Nous accusons réception de toute soumission légitime sous 24 heures.