J1USD スマートコントラクト セキュリティ&技術評価
BNB Smart Chain 上の J1USD トークンシステムに関する包括的なアーキテクチャ分析と検証レポート。アップグレードの安全性、不変のアクセス制御、供給量不変性、マルチ会場流動性分離を内部レビュー。
致命的指摘事項ゼロ
0 Critical
コアトークンコントラクトにおいて高/重大な脆弱性は 0 件でした。
厳格な供給量上限
1,000,000,000
バイトコードレベルで 1,000,000,000 J1USD の不変上限を適用。
権限の明確な分離
RBAC Partitioned
管理者、アップグレーダー、ミンター、バーナー、ポーズ権限を個別アドレスに分離。
UUPS ストレージギャップ
__gap[42]
将来のアップグレード時のストレージ競合を防ぐ 42 スロットの予約ギャップ (__gap[42])。
検証済みオンチェーン展開
標準コントラクトアドレスと検証
J1USD はモジュール型の OpenZeppelin ERC-1967 UUPS プロキシパターンを採用しています。以下は BNB Smart Chain メインネットに展開された検証済みコントラクトです。
J1USDProxy.sol
ユーザー向けの標準 BEP-20 トークンアドレス。すべての残高、承認、コントラクトストレージは恒久的にここに保持されます。Grey Wallet、MetaMask、Trust Wallet、および BNB Chain 上の全 DEX と互換性があります。
J1USDTokenUpgradeable.sol
コンパイル済みビジネスルール、コンプライアンス検証、供給量上限境界、ロール修飾子を含みます。デプロイ時のコンストラクタガードにより直接初期化は禁止されています。
0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.コンプライアンスおよびポリシー評価
ブラックリスト、口座凍結、制裁履行メカニズム
トークンのコンプライアンス機構の評価。J1USD はホワイトリストではなく、アクティブなブラックリストおよび凍結モデルを採用したオープンな BEP-20 トークンであり、最大限のパーミッションレスな相互運用性を維持しつつ法的制裁の履行を可能にします。
ホワイトリスト要件なし (パーミッションレス転送)
J1USD には転送ホワイトリストがありません。BNB Smart Chain 上の標準 Web3 ウォレットは、事前の KYC 承認や登録なしに DEX で自由に J1USD を受取、保有、送金、取引できます。
明示的なブラックリスト機能 (不正対応)
専用の BLACKLISTER_ROLE は、既知のハッキング、制裁、盗難に関連する悪意のあるアドレスからの資金引落や入金を制限できます。
高精度な口座の部分凍結および全凍結
コントラクトは freezeAccount() と freezeBalance(amount) の両方をサポートします。商取引の紛争時、係争中の金額のみを固定し、残りの資金の流動性を維持できます。
法的根拠に基づく消去保護 (Wipe)
WIPER_ROLE は法的拘束力のある裁判所命令または規制当局の指示に従ってのみ凍結残高を消去できます。任意のアカウント資産を恣意的に消去することは構造上不可能です。
コントラクトレベル Hook 検証: _update()、_approve()、transferFrom()
バイトコードは _update(from, to, amount) 内で厳格な残高検証を実行します:
送信者はブラックリストに登録されておらず (!isBlacklisted)、口座が全凍結されておらず (!isAccountFrozen)、送金要求額が availableBalanceOf を超えてはなりません。
受取人はブラックリストおよび凍結の対象外である必要があります。不正な資金が制限された保管ウォレットに流入するのを防ぎます。
トークン所有者と代理人の双方が制限を受けていない必要があります。制限対象者は利用枠を委託したり第三者送金を実行できません。
スマートコントラクトアーキテクチャ
セキュリティメカニズムと不変条件の分析
J1USD コアコンポーネントの詳細な監査評価:プロキシアップグレードの安全性、暗号学的重複防止、関心の分離、緊急安全装置。
UUPS アップグレードの安全性
OpenZeppelin の UUPS 標準に準拠。状態変数と残高はプロキシのスロットにのみ格納されます。実装コンストラクタは _disableInitializers() を呼び出し、ロジックコントラクトが単独で初期化されるのを防ぎます。
供給量上限の不変性
無制限に発行されるステーブルコインとは異なり、J1USD はコントラクトレベルで supplyCeiling を強制します。すべての mint() は totalSupply() + amount <= supplyCeiling を検証します。管理者は上限を現在の供給量以下に引き下げることはできません。
冪等なイベント重複排除
発行および償却には一意の bytes32 参照ハッシュ (issuanceReference / burnReference) が必須です。重複した参照ハッシュを用いたトランザクションは ReferenceAlreadyUsed で即座にリバートします。
タイムロック付き管理者移行
AccessControlDefaultAdminRulesUpgradeable を活用。管理者ロールの移転は即時には実行されず、強制的な遅延時間 (defaultAdminDelay) が適用され、秘密鍵の不正利用を防ぎます。
高精度な部分凍結
アカウント全体の完全ブラックリスト化ではなく、J1USD は freezeBalance を提供します。係争中の金額のみを凍結し、availableBalanceOf で正規の資金決済を可能にします。
保護対象システムアドレス
コアプロトコルアドレス(PancakeSwap プール、財務庫、運用コントラクト)は protectedSystemAddress として登録され、凍結やブラックリストの対象から除外されます。
認可マトリクス
ロールベースアクセス制御 (RBAC) 権限一覧
管理、発行、償却、コンプライアンス、緊急オペレーターの特権検証。すべての特権関数は割り当てられたロールに一致する明示的な暗号署名を必要とします。
| ロール識別子 | 特権関数 | セキュリティ制御と不変条件 |
|---|---|---|
| DEFAULT_ADMIN_ROLE0x00 (Admin Root) | ロール割り当ての設定、供給量上限の更新、保護対象システムアドレスの指定。 | タイムロック遅延を義務付ける OpenZeppelin AccessControlDefaultAdminRules に準拠。 |
| UPGRADER_ROLEkeccak256('UPGRADER_ROLE') | _authorizeUpgrade() での UUPS 実装ロジックのアップグレード承認。 | マルチシグガバナンスに限定され、正当な展開なしに状態を変更することはできません。 |
| MINTER_ROLEkeccak256('MINTER_ROLE') | 検証済み担保またはプロトコル決済要件に応じて新しい J1USD を発行。 | 不変の supplyCeiling および一意の issuanceReference 重複排除により厳格に制約。 |
| BURNER_ROLEkeccak256('BURNER_ROLE') | 償還またはプロトコル債務の決済時にトークン供給量を削減。 | 一意の burnReference が必要。制限アカウントからの償却を可能にする安全機構を保持。 |
| PAUSER_ROLEkeccak256('PAUSER_ROLE') | 標準的な転送を停止する緊急サーキットブレーカーの有効化/無効化。 | ブラックスワン事象やブリッジ異常に対する防御機能。 |
| BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE') | グローバルなブラックリストへのアドレス追加または削除。 | protectedSystemAddress に指定されたアドレスは対象外。追跡用参照ハッシュが必須。 |
| FREEZER_ROLEkeccak256('FREEZER_ROLE') | アカウント全体または指定額の部分凍結 (freezeBalance, freezeAllCurrentBalance)。 | 係争額のみを凍結し、余剰額の流動性を維持可能。システムアドレスは免疫。 |
| WIPER_ROLEkeccak256('WIPER_ROLE') | 法的効力のある司法・規制当局の命令に従い、凍結された残高を消去。 | すでに凍結またはブラックリスト化された口座のみ対象。凍結残高を超過することは不可。 |
| RESCUE_ROLEkeccak256('RESCUE_ROLE') | コントラクトに誤送信された第三者の無関係な BEP-20 トークンを回収。 | J1USD トークン残高を操作することは厳格に禁止 (RescueProhibitedToken)。 |
流動性インフラとプール評価
オンチェーン DEX 流動性 vs 中央集権型セカンダリプール
J1USD は BNB Smart Chain 上の非カストディ型分散 AMM 市場とオフチェーンの中央集権型オーダーブックのバランスを保っています。以下はプールアドレス、取引リンク、セキュリティ境界の内訳です。
自動マーケットメーカー (AMM) プール
PancakeSwap を通じて BNB Smart Chain 上でネイティブに稼働する非カストディ型流動性プール。第三者カストディリスクゼロ。不変のバイトコードを通じてピア・ツー・コントラクトで実行されます。
J1USD を 1.00 USD Coin に強固に固定する集中流動性プール。コンプライアンス凍結から保護された指定システムアドレス。
AirJIT ユーティリティトークン (JIT) とプロトコル決済資産 (J1USD) を相互接続する分散型 AMM ブリッジ。
内部オーダーブックプール
AirJIT は専用のスマートコントラクトアドレスを持たずに主要な担保ペアのセカンダリ市場をオフチェーンで提示します。取引の決済は中央集権型の高スループットマッチングエンジンで実行されます。
オフチェーンサーバーは BNB Smart Chain 上で J1USD トークンを発行または償却する秘密鍵を一切保持しません。
内部オフチェーンアカウントの残高は、検証済みのオンチェーンプロキシトークン預入量によって厳格に制限されます。
アクティブなオフチェーン取引ペア (中央集権型オーダーブック):
評価所見と脅威モデリング
攻撃ベクトル分析と形式的防御
技術的レビュー中に調査された潜在的な経済的、数学的、暗号学的攻撃対象領域の包括的レビュー。
リエントランシー攻撃
残高コミット前に信頼できない外部コントラクトを呼び出すことなく OpenZeppelin ERC-20 の状態更新 (_update) を直接継承。Checks-Effects-Interactions パターンに完全準拠。
オラクルおよびスポット価格操作
J1USD の残高元帳は送金や承認時に外部の価格オラクルを参照しません。残高計算は 100% 内部で行われるため、フラッシュローンによる価格操作リスクはありません。
実装の乗っ取り
ロジック実装コンストラクタはデプロイ時に _disableInitializers() を実行します。基盤となる実装コントラクトを攻撃者が個別に初期化または所有することは不可能です。
敵対的ガバナンス乗っ取り
管理者ロールの再割り当ては変更不可能な遅延時間 (defaultAdminDelay) を適用します。単一の秘密鍵漏洩でトークンの最高管理権限を即座に奪取することはできません。
セキュリティ不変条件
形式的に検証されたセキュリティ不変条件
すべての極端なケースにおいてシステムの整合性が保たれていることを確認するバイトコードチェックの概要。
供給量上限の強制力
totalSupply() + amount が上限を超える場合、SupplyCeilingExceeded でリバートします。管理者が現在の流通量を下回る上限に設定することは禁止されています。
mint() 内での supplyCeiling 状態検証発行および償却のリプレイ重複排除
各トランザクションは一意の bytes32 参照識別子を必要とします。同じ参照を用いた重複呼出は ReferenceAlreadyUsed でリバートし、多重実行を防止します。
_usedIssuanceReferences および _usedBurnReferences マッピング実装ロジックの乗っ取り防止
実装コントラクトはコンストラクタで初期化を無効化します。攻撃者が基盤となるロジックコントラクトを独自に初期化または所有することはできません。
コンストラクタ内での _disableInitializers() 呼出ストレージレイアウト競合防止
プロキシストレージは ERC-1967 標準に準拠。42 ワードの予約ギャップにより、将来のアップグレードで既存の状態変数が上書きされるのを防ぎます。
ERC-1967 標準スロット + uint256[42] ギャップ敵対的な管理者乗っ取りの防止
DEFAULT_ADMIN_ROLE の譲渡は即時ではありません。強制的な遅延時間を伴う 2 段階のプロセスにより、単一の鍵紛失による即時乗っ取りを防ぎます。
defaultAdminDelay 付き AccessControlDefaultAdminRules重要インフラの保護免疫
登録済みシステムアドレス(DEX プール、財務庫、運用契約)は凍結やブラックリストの対象外であり、公開流動性に対する DoS 障害を防ぎます。
コンプライアンス関数内の _requireNotProtected() 検証トークン救出時の自己資産誤流出防止
誤送信された第三者トークンを救出できますが、J1USD トークンコントラクト自体を対象とする呼出は明示的にブロックされます。
rescueERC20() 内の RescueProhibitedToken 検証緊急時サーキットブレーカー
市場異常時に PAUSER_ROLE は即座に転送と承認を停止できますが、法的要求に基づく消去操作は保持されます。
transfer/mint/approve 上の whenNotPaused 修飾子高精度な分離残高凍結
ウォレット全体をロックすることなく係争中の残高のみを凍結できるため、余剰の正常資金は完全に流動性を保ちます。
availableBalanceOf() による計算的分離責任ある脆弱性開示
脆弱性を報告する
AirJIT は積極的な脆弱性開示プログラムを運営しています。J1USD プロキシ、実装、またはスマートコントラクトインフラに欠陥を発見した場合は、責任を持ってご報告ください。
機密性の高い報告は可能な限り PGP で暗号化してください。正当な報告には 24 時間以内に受領確認を返答します。