Seguridad at Teknikal na Pagtatasa ng J1USD Smart Contract
Komprehensibong ulat sa pagsusuri ng arkitektura at pagpapatunay ng J1USD token system sa BNB Smart Chain. Sinuri nang internal para sa kaligtasan sa pag-upgrade, hindi nababagong mga kontrol sa pag-access, mga invariant sa suplay, at paghihiwalay ng liquidity sa iba't ibang venue.
Walang Kritikal na Natuklasan
0 Critical
0 mataas / 0 kritikal na kahinaan na natukoy sa mga pangunahing token contract.
Mahigpit na Limitasyon sa Suplay
1,000,000,000
1,000,000,000 J1USD immutable cap na ipinapatupad sa antas ng bytecode.
Malinaw na Paghihiwalay ng Tungkulin
RBAC Partitioned
Magkakahiwalay na address para sa Admin, Upgrader, Minter, Burner, at Pauser.
UUPS Storage Gaps
__gap[42]
42-slot reserved storage gap (__gap[42]) na nagpoprotekta laban sa mga banggaan sa imbakan.
MGA BERIPIKADONG ON-CHAIN DEPLOYMENT
Mga Kanonikal na Contract Address at Beripikasyon
Gumagana ang J1USD sa pamamagitan ng modular na ERC-1967 UUPS proxy architecture ng OpenZeppelin. Nasa ibaba ang mga na-verify na source contract na naka-deploy sa BNB Smart Chain mainnet.
J1USDProxy.sol
Ang kanonikal na BEP-20 token address para sa pakikipag-ugnayan ng mga user. Ang lahat ng balanse, pag-apruba, at estado ng imbakan ay permanenteng naninirahan dito. Tugma sa Grey Wallet, MetaMask, Trust Wallet, at lahat ng DEX sa BNB Chain.
J1USDTokenUpgradeable.sol
Naglalaman ng pinagsama-samang mga panuntunan sa negosyo, pagsusuri sa pagsunod, limitasyon sa suplay, at mga role modifier. Ang direktang pagsisimula ay permanenteng naka-lock sa pag-deploy.
0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.PAGSUSURI SA PAGSUNOD AT PATAKARAN
Blacklist, Pag-freeze ng Account at Pagpapatupad ng Parusa
Pagtatasa ng mga mekanismo ng pagsunod sa token. Ang J1USD ay isang bukas na BEP-20 token na gumagana sa ilalim ng aktibong blacklist at freeze model — walang whitelist — tinitiyak ang pinakamataas na permissionless composability habang pinapagana ang pagsunod sa legal na kautusan.
Walang Kinakailangang Whitelist (Malayang Paglilipat nang Walang Pahintulot)
HINDI nagpapanatili ng whitelist sa paglilipat ang J1USD. Anumang karaniwang Web3 wallet sa BNB Smart Chain ay malayang makakatanggap, makakahawak, makakapagpadala, at makakapag-trade ng J1USD sa mga DEX nang walang KYC o pre-registration.
Tah Tahas na Functionality ng Blacklist (Pagsunod sa Panganib)
Maaaring paghigpitan ng itinalagang BLACKLISTER_ROLE ang mga nakakahamak na address na konektado sa mga exploit, parusa, o pagnanakaw mula sa pagdeposito o pag-withdraw ng mga pondo.
Tumpak na Bahagyang at Buong Pag-freeze ng Account
Sinusuportahan ng contract ang parehong freezeAccount() at freezeBalance(amount). Sa mga komersyal na hindi pagkakaunawaan, tanging ang pinagtatalunang halaga lamang ang ikinukulong habang ang natitirang balanse ay nananatiling likido.
Sertipikadong Proteksyon sa Legal na Pagkumpiska (Wipe)
Maaari lamang sirain ng WIPER_ROLE ang mga naka-freeze na balanse alinsunod sa umiiral na utos ng hukuman o regulasyon. Ang basta-bastang pagsira sa mga ari-arian ng wallet ng user ay structurally imposible.
Pagpapatunay ng Bytecode Hook: _update(), _approve(), at transferFrom()
Ipinapatupad ng bytecode ang mahigpit na mga pagsusuri sa debit at credit sa loob ng _update(from, to, amount):
Ang nagpadala ay HINDI dapat naka-blacklist (!isBlacklisted), ang account ay HINDI dapat ganap na naka-freeze (!isAccountFrozen), at ang halaga ay hindi dapat lumampas sa availableBalanceOf.
Ang tatanggap ay HINDI dapat naka-blacklist at HINDI dapat naka-freeze. Pinipigilan nito ang mga kriminal na maglaba ng mga pondo sa mga restricted custodial wallet.
Ang may-ari ng token at ang gumagastos ay dapat parehong walang mga paghihigpit. Ang mga pinaghihigpitang entity ay hindi maaaring magtalaga ng allowance o magpatupad ng mga paglilipat ng third-party.
ARKITEKTURA NG SMART CONTRACT
Mga Mekanismo sa Seguridad at Pagsusuri ng Invariant
Malalimang pagsusuri sa mga pangunahing bahagi ng J1USD: kaligtasan sa pag-upgrade ng proxy, cryptographic deduplication, paghihiwalay ng mga tungkulin, at mga panseguridad na emergency circuit breaker.
Kaligtasan sa Pag-upgrade ng UUPS
Binuo sa OpenZeppelin UUPS standard. Ang mga state variable at balanse ay eksklusibong nakaimbak sa mga slot ng proxy. Ang logic constructor ay tumatawag sa _disableInitializers() upang matiyak na ang pinagbabatayang logic ay hindi maaaring manakaw.
Invariant sa Mahigpit na Limitasyon ng Suplay
Hindi tulad ng mga stablecoin na may walang limitasyong paggawa, ipinapatupad ng J1USD ang supplyCeiling sa antas ng contract. Bawat mint() ay sumusuri na ang totalSupply() + amount <= supplyCeiling. Bawal ibaba ng admin ang limitasyon sa ilalim ng kasalukuyang sirkulasyon.
Idempotent Event Deduplication
Ang mga operasyon ng paggawa at pagsunog ay nangangailangan ng natatanging bytes32 reference hash (issuanceReference / burnReference). Ang mga pagtatangkang gamitin muli ang isang reference ay agad na ibinabasura gamit ang ReferenceAlreadyUsed.
Timelock sa Paglipat ng Admin
Gumagamit ng AccessControlDefaultAdminRulesUpgradeable. Ang paglipat ng admin role ay hindi nagaganap sa isang block; ipinapatupad nito ang mandatoryong pagkaantala ng oras (defaultAdminDelay) upang maprotektahan laban sa pagnanakaw ng susi.
Katumpakan sa Bahagyang Pag-freeze
Sa halip na i-block ang buong wallet, nag-aalok ang J1USD ng freezeBalance. Maaaring ihiwalay ang mga pinagtatalunang halaga habang pinapayagan ng availableBalanceOf ang natitirang pondo na malayang magamit.
Mga Protektadong Address ng Sistema
Ang mga kritikal na address ng protocol (mga PancakeSwap pool, Treasury, operational contract) ay nakarehistro bilang protectedSystemAddress, na nagbibigay sa kanila ng kaligtasan laban sa pag-freeze o blacklist.
PERMISSIONS MATRIX
Role-Based Access Control (RBAC)
Pagsusuri sa mga pribilehiyo ng administrator, issuer, burner, compliance, at emergency operator. Ang lahat ng may pribilehiyong function ay nangangailangan ng wastong cryptographic signature na tumutugma sa mga itinalagang tungkulin.
| Tagatukoy ng Tungkulin | Mga Pribilehiyong Function | Mga Panseguridad na Kontrol at Invariant |
|---|---|---|
| DEFAULT_ADMIN_ROLE0x00 (Admin Root) | Nagko-configure ng mga pagtatalaga ng tungkulin, nag-a-update ng limitasyon sa suplay, at nagrerehistro ng mga protektadong address ng sistema. | Pinamamahalaan ng OpenZeppelin AccessControlDefaultAdminRules na may mandatoryong timelock. |
| UPGRADER_ROLEkeccak256('UPGRADER_ROLE') | Nagpapahintulot sa mga pag-upgrade ng logic ng pagpapatupad ng UUPS sa loob ng _authorizeUpgrade(). | Limitado sa multisig governance ng protocol; hindi mababago ang estado nang walang wastong na-deploy na kontrata. |
| MINTER_ROLEkeccak256('MINTER_ROLE') | Gumagawa ng mga bagong J1USD token laban sa napatunayang kolateral o mga kinakailangan sa pag-aayos. | Mahigpit na nililimitahan ng hindi nababagong supplyCeiling at natatanging issuanceReference hash. |
| BURNER_ROLEkeccak256('BURNER_ROLE') | Binabawasan ang suplay ng token sa panahon ng pagkuha o pag-aayos ng pananagutan ng protocol. | Nangangailangan ng natatanging burnReference. Limitadong pagbubukod sa pagsunog mula sa mga restricted account para mapanatili ang solvency. |
| PAUSER_ROLEkeccak256('PAUSER_ROLE') | I-toggle ang emergency circuit breaker upang ihinto ang karaniwang paglilipat ng token. | Mekanismo ng depensa sa emergency para sa matinding krisis sa merkado o mga anomalya sa cross-chain bridge. |
| BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE') | Nagdaragdag o nag-aalis ng mga address mula sa pandaigdigang blacklist ng debit at credit. | Hindi maaaring i-target ang mga protectedSystemAddress. Nangangailangan ng compliance reference para sa audit. |
| FREEZER_ROLEkeccak256('FREEZER_ROLE') | I-freeze ang mga account nang buo o bahagya (freezeBalance, freezeAllCurrentBalance). | Nagbibigay-daan sa paghihiwalay ng pinagtatalunang halaga habang pinapanatili ang liquidity ng natitirang pondo. Ligtas ang mga address ng sistema. |
| WIPER_ROLEkeccak256('WIPER_ROLE') | Sinisira ang mga naka-freeze na balanse alinsunod sa wastong utos ng hukuman o regulasyon. | Nalalapat lamang sa mga naka-freeze na account; hindi maaaring lumampas sa na-verify na frozen balance. |
| RESCUE_ROLEkeccak256('RESCUE_ROLE') | Pagsagip sa mga third-party BEP-20 token na hindi sinasadyang naipadala sa contract address. | Mahigpit na ipinagbabawal ang paghawak sa sariling balanse ng J1USD token (RescueProhibitedToken). |
IMBAKANG PANG-LIQUIDITY AT PAGTATASA SA MGA POOL
On-Chain DEX Liquidity laban sa Centralized Secondary Pools
Binabalanse ng J1USD ang non-custodial decentralized AMM markets sa BNB Smart Chain sa pamamagitan ng centralized off-chain order books. Narito ang mga detalye ng address ng pool, mga link sa trading, at mga limitasyon sa seguridad.
Mga Automated Market Maker (AMM) Pool
Mga non-custodial smart contract liquidity pool na direktang tumatakbo sa BNB Smart Chain sa pamamagitan ng PancakeSwap. Walang panganib sa third-party custody; ang mga kalakalan ay isinasagawa peer-to-contract sa pamamagitan ng hindi nababagong bytecode.
Concentrated liquidity pool na mahigpit na nag-uugnay sa J1USD sa 1.00 USD Coin. Isang protektadong address ng sistema na ligtas sa pag-freeze.
Decentralized AMM bridge na nag-uugnay sa AirJIT utility token (JIT) at sa settlement asset (J1USD).
Mga Panloob na Order Book Pool
Nag-aalok ang AirJIT ng mga pangalawang merkado sa mga pangunahing collateral pair sa labas ng blockchain nang walang indibidwal na smart contract address. Ang pag-aayos ay nagaganap sa pamamagitan ng mabilis na matching engines.
Ang mga server sa labas ng blockchain ay walang mga pribadong susi upang gumawa o sumunog ng mga J1USD token sa BNB Smart Chain.
Ang mga panloob na balanse ng account sa labas ng blockchain ay mahigpit na nakatali sa mga napatunayang deposito ng proxy token sa on-chain contract.
Mga Aktibong Off-Chain Trading Pair (Order Book):
MGA NATUKLASAN SA PAGTATASA AT PAGMOMODELO NG BANTA
Pagsusuri sa Attack Vector at Pormal na Depensa
Isang komprehensibong pangkalahatang-ideya ng mga potensyal na pang-ekonomiya, matematika, at cryptographic attack surface na inimbestigahan sa panahon ng teknikal na pagtatasa.
Mga Pag-atake ng Reentrancy
Minana ng token ang mga update sa estado ng ERC-20 ng OpenZeppelin (_update) nang walang hindi pinagkakatiwalaang panlabas na tawag bago ang pag-aayos ng balanse. Ganap na sumusunod sa Checks-Effects-Interactions.
Manipulasyon ng Oracle at Presyo sa Spot
Hindi sumasangguni ang ledger ng J1USD token sa mga panlabas na oracle ng presyo sa panahon ng paglilipat. Ang aritmetika ay 100% panloob, kaya ligtas ito sa manipulasyon sa pamamagitan ng mga flash loan.
Pang-aagaw sa Logic Implementation
Isinasagawa ng constructor ng pagpapatupad ang _disableInitializers() sa oras ng pag-deploy. Ang pinagbabatayang kontrata ay hindi maaaring simulan nang mag-isa ng isang umaatake.
Mapanirang Pagkuha sa Pamamahala
Ang muling pagtatalaga ng tungkulin ng admin ay nangangailangan ng hindi nababagong pagkaantala ng oras (defaultAdminDelay). Ang pagkompromiso sa isang susi ay hindi makakapagbigay ng agarang kontrol.
MGA INVARIANT SA SEGURIDAD
Pormal na Na-verify na mga Panseguridad na Invariant
Buod ng mga pagsusuri sa lohika sa antas ng bytecode na nagpapatunay na ang integridad ng sistema ay napananatili sa ilalim ng lahat ng matitinding kondisyon.
Pagpapatupad ng Limitasyon sa Suplay
Bumabalik ang operasyon ng paggawa na may error na SupplyCeilingExceeded kung nalabag ang limitasyon. Hindi maaaring bawasan ng admin ang limitasyon sa ilalim ng umiiral na suplay.
Pagsusuri sa supplyCeiling sa loob ng mint()Pag-iwas sa Pag-replay ng Paggawa at Pagsunog
Bawat operasyon ay nangangailangan ng natatanging bytes32 reference. Ang mga paulit-ulit na kahilingan ay ibinabasura gamit ang ReferenceAlreadyUsed.
Mga mapping ng _usedIssuanceReferences at _usedBurnReferencesPagpigil sa Pang-aagaw ng Logic Implementation
Ikinakandado ng implementation contract ang mga initializer sa constructor. Hindi maaaring simulan o agawin ng mga umaatake ang pinagbabatayang logic contract.
Tawag sa _disableInitializers() sa loob ng constructorProteksyon sa Banggaan ng Storage Layout
Sumusunod ang proxy storage sa mga pamantayan ng ERC-1967. Tinitiyak ng 42-salitang puwang na hindi mabubura ng mga susunod na pag-upgrade ang mga umiiral na variable.
Mga karaniwang ERC-1967 slot + uint256[42] gapPagpapagaan sa Mapanirang Pagkuha ng Admin
Ang paglilipat ng DEFAULT_ADMIN_ROLE ay hindi kaagad nangyayari. Ang naantalang proseso na may dalawang yugto ay pumipigil sa sakuna kapag nakompromiso ang susi.
AccessControlDefaultAdminRules na may defaultAdminDelayImunidad ng Kritikal na Imprastraktura
Ang mga rehistradong address ng sistema (mga pool ng DEX, Treasury, operational contract) ay hindi maaaring i-freeze o i-blacklist, na nag-aalis sa panganib ng DoS sa liquidity.
Pagsusuri sa _requireNotProtected() sa mga function ng pagsunodKandado Laban sa Pag-ubos sa Sarili sa Pagsagip ng Token
Pinapayagan ang pagsagip sa mga nagkamaling naipadalang token ng third-party, ngunit ganap na hinaharangan ang pag-withdraw sa sariling J1USD token.
Pagsusuri sa RescueProhibitedToken sa loob ng rescueERC20()Pandaigdigang Emergency Circuit Breaker
Maaaring agarang suspindihin ng PAUSER_ROLE ang mga regular na paglilipat sa panahon ng krisis sa merkado, habang nananatili ang mga legal na utos.
Modifier na whenNotPaused sa transfer/mint/approveKatumpakan sa Paghihiwalay ng Naka-freeze na Balanse
Nagbibigay-daan upang i-lock lamang ang pinagtatalunang halaga nang hindi hinaharangan ang buong wallet, na nagpapanatili sa natitirang malinis na pondo na ganap na likido.
Aritmetikong paghihiwalay sa loob ng availableBalanceOf()RESPONSABLENG PAGSISISIWALAT NG KAHINAAN
Mag-ulat ng Kahinaan sa Seguridad
Nagpapanatili ang AirJIT ng aktibong programa sa pagsisiwalat ng kahinaan. Kung may matuklasan kang anumang isyu sa seguridad sa J1USD proxy, implementation, o imprastraktura ng kontrata, mangyaring iulat ito nang responsable.
Paki-encrypt ang mga sensitibong ulat gamit ang PGP kung maaari. Kinukumpirma namin ang lahat ng wastong ulat sa loob ng 24 na oras.