J1USD Smart Contract Security & Technical Assessment
Comprehensive architectural analysis and verification report of the J1USD token system on BNB Smart Chain. Reviewed for upgradeability safety, immutable access controls, supply invariants, and multi-venue liquidity segregation.
Zero Critical Findings
0 Critical
0 high / 0 critical vulnerabilities identified in core token contracts.
Hard Supply Ceiling
1,000,000,000
1,000,000,000 J1USD immutable cap enforced in bytecode.
Separation of Roles
RBAC Partitioned
Distinct addresses for Admin, Upgrader, Minter, Burner, Pauser.
UUPS Storage Gaps
__gap[42]
42-slot reserved storage gap protecting against state collisions.
VERIFIED ON-CHAIN DEPLOYMENTS
Canonical Contract Addresses & Verification
J1USD executes via a modular OpenZeppelin ERC-1967 UUPS proxy pattern. Below are the verified source contracts deployed on BNB Smart Chain mainnet.
J1USDProxy.sol
Canonical user-facing BEP-20 token address. All balances, allowances, and contract storage reside permanently here. Compatible with Grey Wallet, MetaMask, Trust Wallet, and all BNB Chain DEXs.
J1USDTokenUpgradeable.sol
Logic implementation containing compiled business rules, compliance checks, supply ceiling bounds, and role modifiers. Direct initialization is locked at deployment via constructor guard.
0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.COMPLIANCE & POLICY REVIEW
Blacklist, Account Freezing & Sanctions Mechanics
Evaluation of the token's compliance mechanisms. J1USD is an open BEP-20 token that operates an active blacklist and freezing model — not a whitelist — ensuring maximum permissionless composability while enabling legal sanctions enforcement.
No Whitelist Requirement (Permissionless Transfers)
J1USD has NO transfer whitelist. Any standard Web3 wallet on BNB Smart Chain can receive, hold, send, and trade J1USD freely on DEXs without KYC approval or protocol pre-registration.
Explicit Blacklist Functionality (Adverse Compliance)
A dedicated BLACKLISTER_ROLE can restrict malicious addresses associated with verified hacks, sanctions, or theft from debiting or crediting funds.
Precision Partial & Full Account Freezing
The contract supports both freezeAccount() and freezeBalance(amount). During commercial disputes, only the disputed amount is locked, preserving liquidity of remaining funds.
Certified Legal Wipe Protection
WIPER_ROLE may destroy frozen balances only pursuant to binding court or regulatory directives. Arbitrary wallet asset destruction is structurally impossible.
Contract-Level Hook Verification: _update(), _approve(), and transferFrom()
The bytecode implements strict debit and credit sanity validations inside _update(from, to, amount):
Sender must NOT be blacklisted (!isBlacklisted), account must NOT be frozen (!isAccountFrozen), and requested transfer amount cannot exceed availableBalanceOf.
Recipient must NOT be blacklisted and must NOT be frozen. Prevents bad actors from laundering illicit funds into restricted custody wallets.
Both the token owner and spender must be free of restrictions. Restricted entities are blocked from delegating allowances or executing third-party transfers.
SMART CONTRACT ARCHITECTURE
Security Mechanisms & Invariant Analysis
In-depth audit evaluation of J1USD core components: proxy upgrade safety, cryptographic deduplication, isolation of concerns, and emergency safeguards.
UUPS Upgradeability Safety
Built on OpenZeppelin's UUPS standard. State variables and user balances are stored strictly in proxy slots. The implementation constructor invokes _disableInitializers() to ensure the implementation logic cannot be claimed or initialized independently.
Hard Supply Ceiling Invariant
Unlike uncapped stablecoins, J1USD enforces a contract-level supplyCeiling. Every mint() checks that totalSupply() + amount <= supplyCeiling. The admin is mathematically prohibited from lowering the ceiling below current supply.
Idempotent Event Deduplication
Minting and burning operations mandate a unique bytes32 reference hash (issuanceReference / burnReference). If a transaction attempts to reuse a reference, it instantly reverts with ReferenceAlreadyUsed.
Timelocked Admin Transitions
Leverages AccessControlDefaultAdminRulesUpgradeable. Admin role transfers cannot execute in a single block; they enforce a mandatory time delay (defaultAdminDelay), providing a failsafe against hostile compromise.
Precision Partial Freezing
Rather than solely blacklisting entire accounts, J1USD introduces freezeBalance. Contested compliance amounts can be frozen while availableBalanceOf permits legitimate spending.
Protected System Addresses
Core protocol addresses (PancakeSwap pools, treasury, and operational infrastructure) are designated as protectedSystemAddress, rendering them immune to freeze or blacklist locks.
AUTHORIZATION MATRIX
Role-Based Access Control (RBAC) Permissions
Verification of privileges across admin, issuance, burning, compliance, and emergency actors. All privileged functions require explicit cryptographic signatures matching assigned roles.
| Role Identifier | Privileged Function(s) | Security Controls & Invariants |
|---|---|---|
| DEFAULT_ADMIN_ROLE0x00 (Admin Root) | Configures role assignments, updates supply ceiling limits, and flags protected system addresses. | Governed by OpenZeppelin AccessControlDefaultAdminRules with mandatory timelock delay. |
| UPGRADER_ROLEkeccak256('UPGRADER_ROLE') | Authorizes UUPS implementation logic upgrades in _authorizeUpgrade(). | Restricted strictly to multisig protocol governance; cannot alter state without valid contract deployment. |
| MINTER_ROLEkeccak256('MINTER_ROLE') | Issues new J1USD tokens against verified collateral or protocol settlement requirements. | Strictly bounded by the immutable supplyCeiling and unique issuanceReference deduplication. |
| BURNER_ROLEkeccak256('BURNER_ROLE') | Reduces token supply during redemption or protocol debt clearance. | Requires unique burnReference. Narrowly scoped bypass allows burning from restricted accounts to maintain protocol solvency. |
| PAUSER_ROLEkeccak256('PAUSER_ROLE') | Activates or deactivates emergency circuit breaker halting standard transfers. | Emergency defensive capability for black-swan events or bridge anomalies. |
| BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE') | Adds or removes addresses from global debit/credit blacklist. | Cannot target addresses designated under protectedSystemAddress. Requires compliance tracking reference. |
| FREEZER_ROLEkeccak256('FREEZER_ROLE') | Freezes whole accounts or partial balances (freezeBalance, freezeAllCurrentBalance). | Enables freezing specific contested amounts while keeping remaining balance available. System addresses immune. |
| WIPER_ROLEkeccak256('WIPER_ROLE') | Destroys frozen balances pursuant to certified judicial or regulatory court order. | Can only wipe accounts already frozen or blacklisted; cannot exceed frozen balance amount. |
| RESCUE_ROLEkeccak256('RESCUE_ROLE') | Recovers unrelated third-party BEP-20 tokens sent in error. | Strictly prohibited from touching J1USD token balances (RescueProhibitedToken). |
LIQUIDITY INFRASTRUCTURE & POOLS ASSESSMENT
On-Chain DEX Liquidity vs. Centralized Secondary Pools
J1USD balances non-custodial decentralized AMM markets on BNB Smart Chain with centralized off-chain order books. Here is the technical breakdown of pool addresses, live trading links, and security boundaries.
Automated Market Maker Pools
Non-custodial smart contract liquidity pools operating natively on BNB Smart Chain via PancakeSwap. Zero counterparty custody; trades execute purely peer-to-contract through immutable bytecode.
Concentrated liquidity pool anchoring J1USD tight to 1.00 USD Coin. Designated system address protected from compliance freezes.
Decentralized AMM bridge interlinking the AirJIT utility token (JIT) and protocol settlement asset (J1USD).
Internal Order Book Pools
AirJIT quotes secondary markets across major collateral pairs off-chain without dedicated smart contract addresses. Trade settlement is executed via centralized high-throughput matching engines.
Off-chain servers possess zero private keys authorized to mint or burn J1USD tokens on BNB Smart Chain.
Internal off-chain account balances are strictly bounded by verified on-chain proxy token deposits.
Secondary Off-Chain Trading Pairs (Centralized Order Book):
ASSESSMENT FINDINGS & THREAT MODELING
Attack Vector Analysis & Formal Defenses
Comprehensive review of potential economic, mathematical, and cryptographic attack surfaces investigated during the technical review.
Reentrancy Attacks
The token strictly inherits OpenZeppelin ERC-20 state updates (_update) without making untrusted external contract calls before balance commits. Complies fully with Checks-Effects-Interactions.
Oracle & Spot Manipulation
The J1USD token ledger does not consult external pricing oracles during transfers or approvals. Balance arithmetic is 100% internal, eliminating flash-loan price manipulation exploits.
Implementation Hijacking
The logic implementation constructor executes _disableInitializers() on deployment. The underlying implementation contract cannot be independently initialized or owned by an attacker.
Hostile Governance Takeover
Admin role reassignments enforce an unalterable time delay (defaultAdminDelay). Single-key compromises cannot instantaneously seize administrative control of the token.
SECURITY INVARIANTS
Formally Checked Security Invariants
Summary of bytecode checks verifying that system integrity is preserved across all edge cases.
Supply Ceiling Enforceability
Minting operations revert with SupplyCeilingExceeded if totalSupply() + amount exceeds the on-chain ceiling. Admin is strictly prohibited from lowering the ceiling below current circulating supply.
supplyCeiling state check in mint()Mint & Burn Replay Deduplication
Every mint and burn transaction requires an idempotent bytes32 reference identifier. Duplicate calls with the same reference revert with ReferenceAlreadyUsed, preventing double-execution.
_usedIssuanceReferences & _usedBurnReferences mappingsLogic Implementation Hijack Mitigation
The implementation contract locks initializers in its constructor. Malicious actors cannot initialize or claim ownership over the underlying logic contract directly.
constructor _disableInitializers() callStorage Layout Collision Protection
Proxy storage adheres to standard ERC-1967 slots. A reserved 42-word storage gap ensures future contract upgrades will not overwrite existing state variables.
ERC-1967 standard storage slots + uint256[42] gapHostile Admin Takeover Mitigation
Transferring DEFAULT_ADMIN_ROLE is not instantaneous. A two-step process with an enforced time delay prevents sudden hostile takeover or single-key compromise disasters.
AccessControlDefaultAdminRules with defaultAdminDelayCritical Infrastructure Immunity
Registered system addresses (DEX pools, treasury, operational contracts) cannot be frozen or blacklisted. Eliminates denial-of-service risks against public liquidity rails.
_requireNotProtected() check in compliance functionsAccidental Self-Token Rescue Lockout
The rescueERC20 function enables recovery of third-party tokens mistakenly sent to the contract, but explicitly blocks calls targeting the J1USD token contract itself.
RescueProhibitedToken check in rescueERC20()Global Emergency Circuit Breaker
Authorized PAUSER_ROLE can immediately halt token transfers and approvals in the event of upstream market anomaly, while retaining legal compliance wipe operations.
whenNotPaused modifier on transfer/mint/approveIsolated Balance Freezing Precision
Allows contested compliance balances to be frozen without locking the holder's entire wallet, leaving surplus available funds fully liquid.
availableBalanceOf() arithmetic isolationRESPONSIBLE DISCLOSURE
Report a Vulnerability
AirJIT maintains a proactive vulnerability disclosure program. If you discover a security vulnerability in the J1USD proxy, implementation, or smart contract infrastructure, report it responsibly.
Encrypt sensitive reports using PGP when possible. We acknowledge all legitimate submissions within 24 hours.