Securitate și evaluare tehnică Smart Contract J1USD
Raport complet de analiză arhitecturală și verificare a sistemului de tokenuri J1USD pe BNB Smart Chain. Revizuit intern pentru siguranța actualizărilor, controlul imuabil al accesului, invarianții de aprovizionare și segregarea lichidității pe multiple platforme.
Zero vulnerabilități critice
0 Critical
0 vulnerabilități ridicate / 0 critice identificate în contractele de bază ale tokenului.
Plafon strict de emisie
1,000,000,000
Plafon imuabil de 1.000.000.000 J1USD impus direct la nivel de bytecode.
Separare clară a rolurilor
RBAC Partitioned
Adrese distincte pentru Administrator, Upgrader, Minter, Burner și Pauser.
Spații rezervate de stocare UUPS
__gap[42]
Spațiu rezervat de 42 de sloturi (__gap[42]) pentru a preveni coliziunile de memorie.
DEPLOY-URI VERIFICATE ON-CHAIN
Adrese canonice de contract și verificare
J1USD funcționează prin arhitectura modulară de proxy OpenZeppelin ERC-1967 UUPS. Mai jos sunt contractele sursă verificate implementate pe mainnet-ul BNB Smart Chain.
J1USDProxy.sol
Adresa canonică a tokenului BEP-20 pentru interacțiunea utilizatorilor. Toate soldurile, aprobările și stările de stocare rezidă permanent aici. Compatibil cu Grey Wallet, MetaMask, Trust Wallet și toate DEX-urile de pe BNB Chain.
J1USDTokenUpgradeable.sol
Conține regulile de afaceri compilate, verificările de conformitate, plafoanele de aprovizionare și modificatorii de roluri. Inițializarea directă este permanent blocată la implementare.
0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.REVIZUIRE DE CONFORMITATE ȘI POLITICI
Liste negre, înghețarea conturilor și aplicarea sancțiunilor
Evaluarea mecanismelor de conformitate ale tokenului. J1USD este un token BEP-20 deschis care funcționează pe un model activ de listă neagră și înghețare — fără listă albă — asigurând componabilitate maximă fără permisiuni, permițând în același timp respectarea ordinelor judecătorești.
Nu există cerință de listă albă (Transferuri libere fără permisiune)
J1USD NU menține o listă albă pentru transferuri. Orice portofel Web3 standard de pe BNB Smart Chain poate primi, deține, trimite și tranzacționa liber J1USD pe DEX-uri fără KYC sau înregistrare prealabilă.
Funcționalitate explicită de listă neagră (Conformitate la risc)
Rolul dedicat BLACKLISTER_ROLE poate restricționa adresele malițioase asociate cu atacuri cibernetice, sancțiuni sau furturi, blocând depunerea sau retragerea fondurilor.
Înghețare parțială și completă de înaltă precizie a conturilor
Contractul acceptă atât freezeAccount(), cât și freezeBalance(amount). În timpul disputelor comerciale, doar suma contestată este blocată, restul soldului rămânând complet lichid.
Protecție certificată pentru confiscare legală (Wipe)
WIPER_ROLE poate distruge soldurile înghețate doar în baza unor mandate judecătorești sau decizii de reglementare executorii. Distrugerea arbitrară a activelor utilizatorilor este imposibilă structural.
Validarea hook-urilor la nivel de bytecode: _update(), _approve() și transferFrom()
Bytecode-ul impune verificări stricte de debit și credit în cadrul _update(from, to, amount):
Expeditorul NU trebuie să fie pe lista neagră (!isBlacklisted), contul NU trebuie să fie complet înghețat (!isAccountFrozen), iar suma nu poate depăși availableBalanceOf.
Destinatarul NU trebuie să fie pe lista neagră și NU trebuie să fie înghețat. Acest lucru împiedică actorii rău-intenționați să spele fonduri ilicite în portofele custodiale restricționate.
Proprietarul tokenurilor și entitatea împuternicită trebuie să fie amândoi liberi de restricții. Entitățile restricționate nu pot delega limite sau efectua transferuri terțe.
ARHITECTURA SMART CONTRACT
Mecanisme de securitate și analiza invarianților
Evaluare aprofundată a componentelor fundamentale J1USD: siguranța actualizării proxy-ului, deduplicarea criptografică, separarea atribuțiilor și disjunctoarele de urgență.
Securitatea actualizărilor UUPS
Construit pe standardul OpenZeppelin UUPS. Variabilele de stare și soldurile sunt stocate exclusiv în sloturile proxy-ului. Constructorul de logică apelează _disableInitializers() pentru a se asigura că logica de bază nu poate fi preluată fraudulos.
Invariant strict al plafonului de emisie
Spre deosebire de stablecoin-urile cu batere nelimitată, J1USD impune supplyCeiling la nivel de contract. Fiecare mint() verifică totalSupply() + amount <= supplyCeiling. Administratorul nu poate reduce plafonul sub circulația curentă.
Deduplicarea idempotentă a evenimentelor
Operațiunile de batere și ardere necesită un hash de referință bytes32 unic (issuanceReference / burnReference). Încercările de refolosire a unei referințe sunt respinse imediat cu ReferenceAlreadyUsed.
Timelock la transferul administratorului
Utilizează AccessControlDefaultAdminRulesUpgradeable. Transferul rolului de admin nu se produce într-un singur bloc; impune o întârziere temporală obligatorie (defaultAdminDelay) pentru a proteja împotriva compromiterii cheilor.
Precizia înghețării parțiale
În loc să blocheze întregul portofel, J1USD oferă freezeBalance. Sumele disputate pot fi izolate punctual, în timp ce availableBalanceOf permite utilizarea normală a restului fondurilor.
Adrese de sistem protejate
Adresele critice de protocol (pool-urile PancakeSwap, Trezoreria, contractele operaționale) sunt înregistrate ca protectedSystemAddress, fiind complet imune la înghețare sau blocare.
MATRICEA DE PERMISIUNI
Controlul accesului bazat pe roluri (RBAC)
Auditarea privilegiilor administratorilor, emitenților, operatorilor de conformitate și a celor de urgență. Toate funcțiile privilegiate necesită semnături criptografice valide asociate rolurilor atribuite.
| Identificator Rol | Funcții Privilegiate | Controale de siguranță și invarianți |
|---|---|---|
| DEFAULT_ADMIN_ROLE0x00 (Admin Root) | Configurează atribuirea rolurilor, actualizează plafonul de emisie și înregistrează adresele de sistem protejate. | Guvernat de OpenZeppelin AccessControlDefaultAdminRules cu timelock obligatoriu. |
| UPGRADER_ROLEkeccak256('UPGRADER_ROLE') | Autorizează actualizările logicii de implementare UUPS în _authorizeUpgrade(). | Limitat la guvernanța multisig a protocolului; nu poate modifica starea fără un contract valid implementat. |
| MINTER_ROLEkeccak256('MINTER_ROLE') | Emite noi tokenuri J1USD pe baza garanțiilor verificate sau a cerințelor de decontare. | Strict restricționat de plafonul imuabil supplyCeiling și hash-ul unic issuanceReference. |
| BURNER_ROLEkeccak256('BURNER_ROLE') | Reduce oferta de tokenuri în timpul răscumpărării sau stingerii obligațiilor de protocol. | Necesită burnReference unic. Excepție limitată pentru arderea din conturi restricționate pentru a păstra solvabilitatea. |
| PAUSER_ROLEkeccak256('PAUSER_ROLE') | Comută disjunctorul de urgență pentru a opri transferurile standard de tokenuri. | Mecanism de apărare de urgență pentru crize de piață sau anomalii ale punților cross-chain. |
| BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE') | Adaugă sau elimină adrese din lista neagră globală de debit și credit. | Nu poate viza adresele protectedSystemAddress. Necesită referință de conformitate pentru audit. |
| FREEZER_ROLEkeccak256('FREEZER_ROLE') | Îngheață conturile total sau parțial (freezeBalance, freezeAllCurrentBalance). | Permite izolarea sumelor în litigiu, păstrând lichiditatea restului de fonduri. Adresele de sistem sunt imune. |
| WIPER_ROLEkeccak256('WIPER_ROLE') | Distruge soldurile înghețate în baza unui mandat judecătoresc sau de reglementare valid. | Se aplică doar conturilor deja înghețate; nu poate depăși soldul înghețat verificat. |
| RESCUE_ROLEkeccak256('RESCUE_ROLE') | Recuperează tokenuri BEP-20 terțe trimise din greșeală la adresa contractului. | Este strict interzisă retragerea propriilor tokenuri J1USD (RescueProhibitedToken). |
INFRASTRUCTURĂ DE LICHIDITATE ȘI EVALUAREA POOL-URILOR
Lichiditate DEX On-Chain vs. Pool-uri Secundare Centralizate
J1USD echilibrează piețele AMM descentralizate non-custodiale de pe BNB Smart Chain cu carnetele de ordine centralizate off-chain. Iată adresele pool-urilor, linkurile de tranzacționare și delimitările de securitate.
Pool-uri Automated Market Maker (AMM)
Pool-uri de lichiditate smart contract non-custodiale care funcționează direct pe BNB Smart Chain prin PancakeSwap. Risc de custodie terță zero; tranzacțiile sunt executate peer-to-contract prin bytecode imuabil.
Pool de lichiditate concentrată care ancorează ferm J1USD la 1,00 USD Coin. O adresă de sistem protejată și imună la înghețare.
Punte AMM descentralizată care conectează tokenul utilitar AirJIT (JIT) și activul de decontare (J1USD).
Pool-uri interne cu registru de ordine
AirJIT cotează piețe secundare pe principalele perechi de garanții în afara lanțului, fără adrese individuale de smart contract. Decontarea are loc prin motoare centralizate de potrivire a ordinelor de mare viteză.
Serverele off-chain nu dețin chei private autorizate să bată sau să ardă tokenuri J1USD pe BNB Smart Chain.
Soldurile conturilor interne off-chain sunt strict plafonate de depozitele verificate de tokenuri pe contractul proxy on-chain.
Perechi de tranzacționare off-chain active (Carnet de ordine):
CONCLUZIILE EVALUĂRII ȘI MODELAREA AMENINȚĂRILOR
Analiza vectorilor de atac și apărări formale
O prezentare detaliată a suprafețelor potențiale de atac economic, matematic și criptografic investigate în timpul evaluării tehnice.
Atacuri de tip Reentrancy
Tokenul moștenește actualizările de stare ERC-20 din OpenZeppelin (_update) fără apeluri externe nesigure înainte de decontare. Conformitate deplină cu Checks-Effects-Interactions.
Manipularea oracolelor și a prețului spot
Registrul tokenului J1USD nu apelează oracole externe de preț în timpul transferurilor. Aritmetica este 100% internă, fiind imună la manipulări prin flash loans.
Deturnarea logicii de implementare
Constructorul de implementare execută _disableInitializers() la implementare. Contractul de bază nu poate fi inițializat independent de un atacator.
Preluarea ostilă a guvernanței
Reatribuirea rolurilor de administrator necesită o întârziere temporală imuabilă (defaultAdminDelay). Compromiterea unei singure chei nu poate prelua controlul imediat.
INVARIANȚI DE SECURITATE
Invarianți de securitate verificați formal
Rezumatul verificărilor de logică la nivel de bytecode care confirmă că integritatea sistemului este păstrată în toate condițiile extreme.
Aplicarea plafonului de emisie
Operațiunile de batere eșuează cu eroarea SupplyCeilingExceeded dacă se depășește plafonul. Administratorul nu poate coborî plafonul sub oferta aflată în circulație.
Verificarea supplyCeiling în mint()Prevenirea atacurilor replay la batere și ardere
Fiecare operațiune necesită o referință bytes32 unică. Cererile repetate sunt respinse cu ReferenceAlreadyUsed pentru a preveni execuțiile duble.
Mapările _usedIssuanceReferences și _usedBurnReferencesPrevenirea deturnării logicii de implementare
Contractul de implementare blochează inițializatorii în constructor. Atacatorii nu pot inițializa sau prelua independent contractul de logică.
Apelul _disableInitializers() în constructorProtecție împotriva coliziunilor în memoria proxy-ului
Stocarea proxy respectă standardele ERC-1967. Spațiul rezervat de 42 de cuvinte garantează că viitoarele upgrade-uri nu vor suprascrie variabilele existente.
Sloturi standard ERC-1967 + spațiu rezervat uint256[42]Atenuarea preluării ostile a rolului de administrator
Transferul rolului DEFAULT_ADMIN_ROLE nu este instantaneu. Un proces amânat în două faze previne dezastrele cauzate de compromiterea unei chei.
AccessControlDefaultAdminRules cu defaultAdminDelayImunitatea infrastructurii critice
Adresele de sistem înregistrate (pool-urile DEX, Trezoreria, contractele operaționale) nu pot fi înghețate sau blocate, eliminând riscurile de DoS.
Verificarea _requireNotProtected() în funcțiile de conformitateBlocarea golirii propriului sold la salvarea tokenurilor
Permite salvarea tokenurilor terțe trimise din greșeală, dar blochează complet tentativele de retragere a tokenului J1USD însuși.
Verificarea RescueProhibitedToken în rescueERC20()Disjunctor global de urgență
PAUSER_ROLE poate suspenda imediat transferurile obișnuite în momente de criză, permițând în același timp respectarea ordinelor legale.
Modificatorul whenNotPaused pe transfer/mint/approvePrecizia izolării soldului înghețat
Permite blocarea doar a sumei disputate fără blocarea întregului portofel, menținând restul fondurilor curate complet lichide.
Segregare aritmetică în availableBalanceOf()DIVULGARE RESPONSABILĂ A VULNERABILITĂȚILOR
Raportați o vulnerabilitate de securitate
AirJIT menține un program activ de divulgare a vulnerabilităților. Dacă descoperiți o problemă de securitate în proxy-ul J1USD, implementare sau infrastructura de contracte, vă rugăm să o raportați responsabil.
Vă rugăm să criptați rapoartele sensibile cu PGP dacă este posibil. Confirmăm primirea tuturor rapoartelor valide în termen de 24 de ore.