Bezpieczeństwo i Ocena Techniczna Smart Kontraktu J1USD
Kompleksowy raport z analizy architektonicznej i weryfikacji systemu tokena J1USD na BNB Smart Chain. Przejrzany pod kątem bezpieczeństwa aktualizacji, niezmiennych kontroli dostępu, niezmienników podaży i separacji płynności.
Zero Krytycznych Uwag
0 Critical
0 wysokich / 0 krytycznych podatności w kluczowych kontraktach tokena.
Sztywny Pułap Podaży
1,000,000,000
Niezmienny limit 1 000 000 000 J1USD egzekwowany na poziomie kodu bajtowego.
Separacja Ról
RBAC Partitioned
Niezależne adresy dla Administratora, Upgradera, Mintera, Burnera i Pausera.
Odstępy w Pamięci UUPS
__gap[42]
Zarezerwowany odstęp 42 slotów (__gap[42]) chroniący przed kolizjami pamięci.
ZWERYFIKOWANE WDROŻENIA ON-CHAIN
Kanoniezne Adresy Kontraktów i Weryfikacja
J1USD działa w oparciu o modułowy wzorzec proxy OpenZeppelin ERC-1967 UUPS. Poniżej znajdują się zweryfikowane kontrakty źródłowe wdrożone w sieci głównej BNB Smart Chain.
J1USDProxy.sol
Kanoniezny adres tokena BEP-20 dla użytkowników. Wszystkie salda, uprawnienia i stan kontraktu znajdują się na stałe tutaj. Kompatybilny z Grey Wallet, MetaMask, Trust Wallet i wszystkimi DEX na BNB Chain.
J1USDTokenUpgradeable.sol
Implementacja logiki zawierająca skompilowane reguły biznesowe, kontrole zgodności, limity podaży i modyfikatory ról. Bezpośrednia inicjalizacja jest zablokowana podczas wdrażania.
0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.PRZEGLĄD ZGODNOŚCI I POLITYKI
Czarna Lista, Zamrażanie Kont i Mechanizmy Sankcji
Ocena mechanizmów zgodności tokena. J1USD to otwarty token BEP-20 działający w modelu aktywnej czarnej listy i zamrażania — bez białej listy —, co zapewnia maksymalną interoperacyjność bez zezwoleń przy jednoczesnym egzekwowaniu sankcji prawnych.
Brak Wymogu Białej Listy (Transfery Bez Pozwoleń)
J1USD NIE posiada białej listy transferów. Każdy portfel Web3 w sieci BNB Smart Chain może swobodnie odbierać, przechowywać, wysyłać i handlować J1USD na DEX bez KYC czy rejestracji.
Wyraźna Funkcja Czarnej Listy (Zgodność z Prawem)
Dedykowana rola BLACKLISTER_ROLE może zablokować złośliwe adresy powiązane z atakami, sankcjami lub kradzieżami przed obciążaniem lub uznawaniem środków.
Precyzyjne Częściowe i Pełne Zamrażanie Kont
Kontrakt obsługuje zarówno freezeAccount(), jak i freezeBalance(amount). Podczas sporów handlowych blokowana jest tylko sporna kwota, co zachowuje płynność pozostałych środków.
Certyfikowana Ochrona Prawnego Przepadku (Wipe)
Rola WIPER_ROLE może niszczyć zamrożone salda wyłącznie na podstawie prawomocnych wyroków sądowych lub nakazów regulacyjnych. Samowolne niszczenie aktywów jest niemożliwe.
Weryfikacja Hooków na Poziomie Kodu Bajtowego: _update(), _approve() i transferFrom()
Kod bajtowy egzekwuje rygorystyczne sprawdzanie debetu i kredytu wewnątrz _update(from, to, amount):
Nadawca NIE może być na czarnej liście (!isBlacklisted), konto NIE może być całkowicie zamrożone (!isAccountFrozen), a kwota nie może przekraczać availableBalanceOf.
Odbiorca NIE może być na czarnej liście ani być zamrożony. Zapobiega praniu nielegalnych środków na kontach podlegających ograniczeniom.
Zarówno właściciel, jak i upoważniony muszą być wolni od ograniczeń. Podmioty objęte ograniczeniami nie mogą delegować limitów ani wykonywać transferów osób trzecich.
ARCHITEKTURA SMART KONTRAKTÓW
Mechanizmy Bezpieczeństwa i Analiza Niezmienników
Szczegółowa ocena kluczowych komponentów J1USD: bezpieczeństwo aktualizacji proxy, deduplikacja kryptograficzna, podział obowiązków i wyłączniki awaryjne.
Bezpieczeństwo Aktualizacji UUPS
Zbudowany w oparciu o standard UUPS OpenZeppelin. Zmienne stanu i salda są przechowywane wyłącznie w slotach proxy. Konstruktor implementacji wywołuje _disableInitializers(), uniemożliwiając przejęcie logiki.
Niezmiennik Sztywnego Pułapu Podaży
W przeciwieństwie do nielimitowanych stablecoinów, J1USD egzekwuje supplyCeiling na poziomie kontraktu. Każde mint() sprawdza totalSupply() + amount <= supplyCeiling. Obniżenie pułapu poniżej bieżącej podaży jest zabronione.
Idempotentna Deduplikacja Zdarzeń
Emisja i spalanie wymagają unikalnego hasza referencyjnego bytes32 (issuanceReference / burnReference). Próba ponownego użycia natychmiast cofa transakcję z ReferenceAlreadyUsed.
Zmiana Administratora z Blokadą Czasową
Wykorzystuje AccessControlDefaultAdminRulesUpgradeable. Zmiana roli administratora nie zachodzi natychmiast; wymusza obowiązkowe opóźnienie (defaultAdminDelay), chroniąc przed przejęciem kluczy.
Precyzyjne Częściowe Zamrażanie
Zamiast blokować całe portfele, J1USD wprowadza freezeBalance. Sporne kwoty mogą być zamrażane proporcjonalnie, a availableBalanceOf pozwala na wydawanie pozostałych środków.
Chronione Adresy Systemowe
Kluczowe adresy protokołu (pule PancakeSwap, skarbiec, kontrakty operacyjne) mają status protectedSystemAddress, co uniemożliwia ich zamrożenie lub zablokowanie.
MACIERZ UPRAWNIEŃ
Kontrola Dostępu Oparta na Rolach (RBAC)
Weryfikacja przywilejów administratora, emisji, spalania, zgodności i ról awaryjnych. Wszystkie uprzywilejowane funkcje wymagają jawnych podpisów kryptograficznych zgodnych z rolami.
| Identyfikator Roli | Funkcje Uprzywilejowane | Środki Bezpieczeństwa i Niezmienniki |
|---|---|---|
| DEFAULT_ADMIN_ROLE0x00 (Admin Root) | Konfiguruje przypisania ról, aktualizuje limity podaży i wyznacza chronione adresy systemowe. | Regulowane przez OpenZeppelin AccessControlDefaultAdminRules z obowiązkowym opóźnieniem czasowym. |
| UPGRADER_ROLEkeccak256('UPGRADER_ROLE') | Autoryzuje aktualizacje logiki implementacji UUPS w _authorizeUpgrade(). | Ograniczone ściśle do zarządzania multisig; nie może modyfikować stanu bez wdrożonego kontraktu. |
| MINTER_ROLEkeccak256('MINTER_ROLE') | Emituje nowe tokeny J1USD pod zweryfikowane zabezpieczenie lub potrzeby rozliczeń protokołu. | Ściśle ograniczone przez niezmienny supplyCeiling i unikalną referencję issuanceReference. |
| BURNER_ROLEkeccak256('BURNER_ROLE') | Zmniejsza podaż tokenów podczas wykupu lub spłaty zobowiązań protokołu. | Wymaga unikalnego burnReference. Dopuszcza spalanie z kont zablokowanych dla zachowania wypłacalności. |
| PAUSER_ROLEkeccak256('PAUSER_ROLE') | Włącza lub wyłącza awaryjny wyłącznik wstrzymujący standardowe transfery. | Zdolność obronna w przypadku zdarzeń kryzysowych lub anomalii mostów międzyłańcuchowych. |
| BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE') | Dodaje lub usuwa adresy z globalnej czarnej listy debetu/kredytu. | Nie może blokować adresów protectedSystemAddress. Wymaga referencji śledzenia zgodności. |
| FREEZER_ROLEkeccak256('FREEZER_ROLE') | Zamraża całe konta lub kwoty częściowe (freezeBalance, freezeAllCurrentBalance). | Umożliwia zamrożenie spornych kwot przy zachowaniu płynności reszty salda. Adresy systemowe odporne. |
| WIPER_ROLEkeccak256('WIPER_ROLE') | Niszczy zamrożone środki na podstawie prawomocnego wyroku sądowego lub decyzji regulatora. | Dotyczy tylko kont uprzednio zamrożonych; nie może przekraczać kwoty zamrożonej. |
| RESCUE_ROLEkeccak256('RESCUE_ROLE') | Odzyskuje pomyłkowo przesłane na kontrakt zewnętrzne tokeny BEP-20. | Całkowity zakaz ingerencji w salda tokena J1USD (RescueProhibitedToken). |
INFRASTRUKTURA PŁYNNOŚCI I OCENA PUL
Płynność DEX On-Chain vs Scentralizowane Pule Wtórne
J1USD równoważy zdecentralizowane rynki AMM bez depozytu na BNB Smart Chain ze scentralizowanymi arkuszami zleceń off-chain. Oto zestawienie adresów pul, linków transakcyjnych i granic bezpieczeństwa.
Pule Automatycznego Animatora Rynku (AMM)
Pule płynności smart kontraktów bez depozytu działające natywnie na BNB Smart Chain za pośrednictwem PancakeSwap. Zero ryzyka powierniczego; transakcje realizowane peer-to-contract przez niezmienny kod bajtowy.
Pula skoncentrowanej płynności ściśle wiążąca J1USD z 1,00 USD Coin. Wyznaczony adres systemowy chroniony przed zamrożeniem.
Zdecentralizowany most AMM łączący token użytkowy AirJIT (JIT) i aktywo rozliczeniowe (J1USD).
Wewnętrzne Pule Arkusza Zleceń
AirJIT kwotuje rynki wtórne głównych par zabezpieczeń poza łańcuchem bez dedykowanych adresów kontraktów. Rozliczanie transakcji odbywa się za pośrednictwem scentralizowanych silników dopasowywania zleceń.
Serwery off-chain nie posiadają kluczy prywatnych uprawnionych do emisji lub spalania J1USD na BNB Smart Chain.
Salda kont wewnętrznych off-chain są ściśle ograniczone zweryfikowanymi depozytami w kontrakcie proxy on-chain.
Aktywne Pary Handlowe Off-Chain (Arkusz Zleceń):
WYNIKI OCENY I MODELOWANIE ZAGROŻEŃ
Analiza Wektorów Ataku i Formalne Środki Obrony
Szczegółowy przegląd potencjalnych ekonomicznych, matematycznych i kryptograficznych powierzchni ataku zbadanych podczas audytu.
Ataki Reentrancy
Token ściśle dziedziczy aktualizacje stanu ERC-20 OpenZeppelin (_update) bez wywołań zewnętrznych przed zatwierdzeniem sald. Pełna zgodność z Checks-Effects-Interactions.
Manipulacja Wyrocznią i Ceną Spot
Księga tokena J1USD nie korzysta z zewnętrznych wyroczni cenowych podczas transferów. Arytmetyka jest w 100% wewnętrzna, co eliminuje ataki flash loan.
Przejęcie Implementacji
Konstruktor implementacji wykonuje _disableInitializers() podczas wdrażania. Bazowy kontrakt nie może zostać zainicjalizowany przez atakującego.
Wrogie Przejęcie Zarządzania
Zmiana ról administratora wymusza niezmienne opóźnienie czasowe (defaultAdminDelay). Utrata jednego klucza nie pozwala na natychmiastowe przejęcie kontroli.
NIEZMIENNIKI BEZPIECZEŃSTWA
Formalnie Zweryfikowane Niezmienniki Bezpieczeństwa
Podsumowanie weryfikacji kodu bajtowego potwierdzających integralność systemu we wszystkich przypadkach skrajnych.
Wykonalność Pułapu Podaży
Operacje emisji cofają się z SupplyCeilingExceeded, jeśli przekroczono limit. Administrator nie może obniżyć pułapu poniżej bieżącej podaży.
Kontrola stanu supplyCeiling w mint()Deduplikacja Replay przy Emisji i Spalaniu
Każda transakcja wymaga unikalnego identyfikatora bytes32. Powtórne wywołania są odrzucane z błędem ReferenceAlreadyUsed.
Mapowania _usedIssuanceReferences i _usedBurnReferencesOchrona Logiki Implementacji przed Przejęciem
Kontrakt implementacji blokuje inicjalizację w konstruktorze. Atakujący nie mogą samodzielnie zainicjalizować bazowego kontraktu logiki.
Wywołanie _disableInitializers() w konstruktorzeOchrona przed Kolizjami Pamięci
Pamięć proxy jest zgodna z ERC-1967. Odstęp 42 słów gwarantuje, że przyszłe aktualizacje nie nadpiszą istniejących zmiennych.
Standardowe sloty ERC-1967 + odstęp uint256[42]Ochrona przed Wrogiem Przejęciem Administratora
Przekazanie DEFAULT_ADMIN_ROLE nie jest natychmiastowe. Dwuetapowy proces z opóźnieniem chroni przed skutkami kradzieży pojedynczego klucza.
AccessControlDefaultAdminRules z defaultAdminDelayImmunitet Infrastruktury Krytycznej
Zarejestrowane adresy systemowe (pule DEX, skarbiec, kontrakty) nie mogą zostać zamrożone ani zablokowane, eliminując ryzyko DoS.
Kontrola _requireNotProtected() w funkcjach zgodnościBlokada Samo-Opróżnienia przy Ratowaniu Tokenów
Umożliwia odzyskanie omyłkowo przesłanych tokenów innych podmiotów, lecz blokuje wszelkie próby wypłaty tokena J1USD.
Kontrola RescueProhibitedToken w rescueERC20()Globalny Wyłącznik Awaryjny
Upoważniona rola PAUSER_ROLE może natychmiast zatrzymać transfery w przypadku kryzysu rynkowego, zachowując prawne operacje przepadku.
Modyfikator whenNotPaused na transfer/mint/approvePrecyzja Odizolowanego Zamrażania Salda
Pozwala zamrozić kwotę sporną bez blokowania całego portfela użytkownika, zachowując płynność pozostałych środków.
Separacja arytmetyczna w availableBalanceOf()ODPOWIEDZIALNE UJAWNIANIE PODATNOŚCI
Zgłoś Podatność w Bezpieczeństwie
AirJIT prowadzi aktywny program ujawniania podatności. Jeśli odkryjesz lukę w proxy J1USD, implementacji lub infrastrukturze, zgłoś ją odpowiedzialnie.
Jeśli to możliwe, szyfruj poufne raporty za pomocą PGP. Na wszystkie uzasadnione zgłoszenia odpowiadamy w ciągu 24 godzin.