> ## Documentation Index
> Fetch the complete documentation index at: https://whitepaper.rwanftfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# スマートコントラクトアーキテクチャ

> ダイヤモンドパターンと7つのファセット。

RWANFTFIプラットフォームは、すべての相互作用、分配、トークンメカニクスを中央集権的な制御なしに統治する、堅牢でモジュラー、安全なスマートコントラクトアーキテクチャ上に構築されています。

<video autoPlay muted loop playsInline preload="metadata" style={{ width: '100%', borderRadius: '12px', marginTop: '24px', marginBottom: '24px' }} src="https://mintcdn.com/rwanftfi/UElUUQE-oWUZwJoB/bx2.mp4?fit=max&auto=format&n=UElUUQE-oWUZwJoB&q=85&s=6802a0aa8f6c63b7cba3032a69e6a3a5" data-path="bx2.mp4" />

## ダイヤモンドパターン(EIP-2535)

RWANFTFIシステムのコアは、ダイヤモンドパターン(EIP-2535)を使用して実装されています。この設計選択により、機能を「ファセット」と呼ばれる複数の独立したモジュール(単一のプロキシコントラクトを通じてアクセスされるスマートコントラクトモジュール)に分割することで、プロトコルは標準のスマートコントラクトサイズ制限(24KB)を回避できます。

## コアファセット

<CardGroup cols={2}>
  <Card title="AdminFacet" icon="gear">
    システムパラメータ、ロール、ビジネス売却、特殊NFT鋳造。
  </Card>

  <Card title="MarketingFacet" icon="bullhorn">
    ユーザー登録、NFT購入、マーケティング報酬分配。
  </Card>

  <Card title="FarmingFacet" icon="seedling">
    NFTMマイニングとDAファーミングサイクル管理。
  </Card>

  <Card title="PaymentFacet" icon="wallet">
    入金、出金、バウチャー作成、アキュムレーティブ転送。
  </Card>

  <Card title="TreeFacet" icon="sitemap">
    22階層バイナリツリーロジックとユーザー配置アルゴリズム。
  </Card>

  <Card title="ResolverFacet" icon="rotate">
    期限切れDAスタック処理、バウチャーバーン、凍結アカウント解決。
  </Card>

  <Card title="ViewFacet" icon="eye">
    ユーザーデータ、残高、ツリー構造の読み取り専用クエリ。
  </Card>
</CardGroup>

## NFTコントラクトとトークンID空間

プロトコルは3つの異なるNFTコントラクト(通常、ギフト、アンバサダー)を使用しています。システム全体で鋳造されたすべてのNFTを追跡するオンチェーンの`registeredTokens`マッピング内での識別子衝突を防ぐため、**通常NFTとギフトNFTは、パリティで分割された分離された`tokenId`空間に鋳造されます**:

* **通常NFT** — 奇数のトークンID(`1, 3, 5, 7, …`)。
* **ギフトNFT** — 偶数のトークンID(`2, 4, 6, 8, …`)。

この分割は、各NFTコントラクトのミンターロジック内で鋳造時に強制されます。一方のコントラクトでの成功した鋳造が、他方のコントラクトが発行可能な識別子を生成することは決してないため、マッピング衝突バグの全クラスが型システムレベルで排除されます — ランタイムガードや呼び出しごとの重複排除チェックは不要です。このパーティショニングはエンドユーザーには見えません:ウォレットとマーケットプレイスは引き続き各NFTをそのネイティブコントラクトの下に表示します。

## アップグレード可能性マトリックス

* **ダイヤモンドコントラクト(EIP-2535):** ファセットカットを介してアップグレード可能 — システム全体を再デプロイすることなく、個別モジュールの追加、置換、削除を可能にします。
* **TokenReserve(DA):** トランスペアレントプロキシを介してアップグレード可能 — コントラクトアドレスを変更することなくロジック更新が可能です。
* **NFT(通常、ギフト、アンバサダー)、GovToken、AdminContract:** アップグレード不可能 — コア資産とガバナンスルールの不変性を確保します。

## ロール管理

システムは、権限を安全に管理するために階層的ロール構造(AccessControlEnumerable)を活用しています。

* `ADMIN_ROLE`:他のロールの付与/取消、および重要なシステムパラメータの変更が可能です。
* `SERVICE_ROLE`:自動化されたタスク(例:期限切れスタックの解決、クロスチェーン入金の処理)のためにバックエンドスクリプトによって実行されます。
* `SIGNER_ROLE`:バウチャー転送のような特定のアクションを承認するための暗号署名検証に使用されます。
* `MINTER_ROLE`:特定のトークンまたはNFTを鋳造する権限を持ちます。

## バランススキーマと支払い優先順位

複雑な資金フローを管理するため、RWANFTFIはスマートコントラクト内で多層バランススキーマを採用しています。

**ユーザー残高:**

1. **通常バランス(`balance`):** 利用可能なUSDTのプライマリウォレット。ここの資金はいつでも引き出し、NFT購入、バウチャー生成に使用できます。
2. **アキュムレーティブバランス(`accumulativeBalance`):** 必須の貯蓄口座で、各マーケティング報酬の20%が発生時に即座にクレジットされます。

   * **使途:** 同レベルNFTの購入、または上位レベルNFTの購入にのみ使用可能。
   * **手数料:** NFT購入にこのバランスを使用すると20%の手数料が**DA流動性プールへ振り向けられます**。別のユーザーへ転送する場合も20%の手数料が**DA流動性プールへ振り向けられます**。アキュムレーティブバランスのあらゆる移動はプールへの流入を生み出し、新規DAの基盤を作ります。
   * **120日再分配:** ユーザーが120日以内にアキュムレーティブバランスを使用しない場合、未使用残高は再分配の対象となります。分割はユーザーのNFTタイプによって異なります:
     * **通常NFT保有者:** \*\*70%\*\*が新規DAトークン鋳造のためDA流動性プールへ振り向けられ、\*\*30%\*\*がユーザーの直接アップラインスポンサーへ転送されます。
     * **ギフトNFT保有者:** \*\*80%\*\*がDA流動性プールへ振り向けられ、\*\*20%\*\*が直接アップラインスポンサーへ転送されます(別個の`accumulativeClaimDistributeGift`パラメータにより制御)。
     * **カスケードルール(両タイプ):** アップラインスポンサーのインカムリミットが枯渇している(ゼロに等しい)場合、スポンサー分配はストラクチャー内の次の資格を持つ参加者へさらに上方に渡ります。チェーン内の参加者にアクティブなインカムリミットがない場合、全額がDA流動性プールへ振り向けられます。

   <Note>
     **120日 = 保証された最低ウィンドウであり、自動失効ではない:** `accumulativeDecayTime`パラメータは、管理者/サービスがトリガーする再分配経路である\*\*`withdrawAccumulative()`内でのみ**チェックされます。支出または転送経路では**評価されません\*\*。実際のところこれは:

     * クレジット後の最初の120日間、アキュムレーティブバランスは**整合性が保証** — 誰もこれを再分配できません。
     * 120日後、残高は再分配の**対象**となりますが、タイマー満了時に再分配が自動的に作動するわけではありません。SERVICE\_ROLEまたはADMIN\_ROLEによってその特定のユーザーに対し`withdrawAccumulative()`が呼び出された場合にのみ発生します。
     * **その呼び出しが行われるまで**、「期限切れ」アキュムレーティブバランスは標準ルールと手数料の下で、NFT購入とアップグレードに使用可能であり、他のユーザーへ転送可能なままです。

     監査回答に記録されたチームの公式な意図:*「私たちの目標は、ユーザー資金の整合性を一定期間保証することであり、ライフサイクルを与えることではありません。」* 120日を**潜在的な再分配前の保証された最低ウィンドウ**として扱い、厳密なオンチェーン失効タイムスタンプとは見なさないでください。
   </Note>
3. **リミット(`limit`):** NFTが生成可能な最大残余収入を表します。

### システムバランス

ユーザー残高に加えて、スマートコントラクトは3つの内部システム残高を維持します。

* **開発者バランス(`devBalance`):** 運用資金のためのプラットフォーム手数料とコミッションを蓄積します。
* **トークン準備バランス(`tokenReserveBalance`):** DAトークンを100%バックするUSDT流動性プールです。エコシステムのすべての収入源がこのプールに流入します。
* **価格影響バランス(`priceImpactBalance`):** 特定のエコシステムイベント中にDAトークン価格安定性を管理するために使用される特別準備金です。

これらの残高は完全にスマートコントラクトによって管理されており、個別のユーザーや管理者がアクセスすることはできません。

### 支払い優先順位

購入を行う際、スマートコントラクトはこの順序で資金を差し引きます。

<Steps>
  <Step title="バウチャー(手動)">
    ユーザーがチェックアウト時に明示的にバウチャーを適用した場合、その価値が最初に消費されます。バウチャーは自動適用されません。
  </Step>

  <Step title="アキュムレーティブバランス">
    ユーザーがアキュムレーティブバランスの使用を選択した場合、(十分な場合)100%カバレッジで適用されるか、通常バランスと組み合わされます。20%の手数料がDA流動性プールへ振り向けられます。
  </Step>

  <Step title="通常バランス">
    残額は通常バランスから差し引かれます。
  </Step>
</Steps>

<Warning>
  ギフトバウチャーはアキュムレーティブバランスと**併用できません**。有効な組み合わせ:\[バウチャー + 通常]、\[100%アキュムレーティブ]、または\[アキュムレーティブ + 通常]。
</Warning>

<Note>
  Binance Smart Chain上のすべての取引には、**BNB**で支払われる標準的なネットワークガス手数料が必要です。ユーザーは任意のオンチェーン操作(購入、引出、転送)を実行するために、ウォレット内に少量のBNBを保持する必要があります。これはエコシステム内で使用されるUSDT残高とは別のものです。
</Note>
