技術アーキテクチャ

システム概要

Inuverseは3つの独立したコンポーネントから構成される完全フルオンチェーンNFTエコシステムです:

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Frontend      │    │   NFT Generator │    │   Smart         │
│   (Next.js)     │    │   (Python)      │    │   Contracts     │
│                 │    │                 │    │   (Sui Move)    │
│ - React 19      │───▶│ - Layer Comp.   │───▶│ - inuverse pkg  │
│ - Tailwind v4   │    │ - SVG Process   │    │ - inu_token pkg │
│ - Asset Manager │    │ - Parts Catalog │    │ - inu_test pkg  │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Static Assets │    │   Parts Library │    │   Sui Network   │
│                 │    │                 │    │                 │
│ - UI Components │    │ - 52 SVG Parts  │    │ - Full On-chain │
│ - Animations    │    │ - 15-Layer Sys  │    │ - Dynamic DOF   │
│ - Icons/Images  │    │ - Registration  │    │ - Hot Potato    │
└─────────────────┘    └─────────────────┘    └─────────────────┘

フロントエンド

技術スタック

  • Framework: Next.js 15.3.2 (App Router)

  • UI Library: React 19.0.0

  • Styling: Tailwind CSS v4

  • Development: Turbopack (高速ビルド)

  • Code Quality: Biome (フォーマッター/リンター)

  • Fonts: Geist Sans/Mono

アセット構造

準備済みのUI/UXアセット:

  • Button Assets: ウォレット接続、ミント、カスタマイズUI

  • Selection Icons: 耳、尻尾、パターン、カラー選択

  • Loading Animations: 肉球アニメーション

  • Homepage Assets: ロゴ、ブランディング素材

スマートコントラクト

Inuverseは3つの独立したSui Moveパッケージで構成され、完全フルオンチェーンNFTシステムを実現しています。

パッケージ構成

1. inuverse - プロダクションNFTシステム

9つのモジュール構成:

  • types.move (930+行): 中核データ構造とエラー定義

  • inuverse.move: パッケージ初期化とDisplay設定

  • parts_registry.move: Dynamic Object Fields (DOF) ベースのパーツ管理

  • nft.move (700+行): NFTミント・更新機能

  • admin.move: フェーズ制御とユーザー管理

  • accessors.move: データアクセス関数

  • inu_integration.move: INUトークン統合とHot Potato Pattern

  • item_nft.move: アイテムNFTシステム

  • item_shop.move: アイテムショップ機能

主要機能:

  • 15層SVGシステム: Background(1) + Body(5) + Ear(4) + Pattern(1) + Tail(4)

  • 階層的権限システム: SuperAdminCap → PartAdminCap/MintAdminCap/WhitelistAdminCap/ItemAdminCap

  • 段階的ミントシステム: 無料ミント/ホワイトリスト(9 $SUI)/パブリック(13 $SUI)、最大1,111枚

  • DOFベースパーツライブラリ: 効率的な中央集権管理、リアルタイム更新対応

2. inu_token - ゲーム内トークンシステム

5つのモジュール構成:

  • inu_token.move: 中核トークンシステム

  • treasury.move: トークン供給管理と収益分配

  • exchange.move: $SUI/$USDCからINUトークンへの変換

  • shop.move: ゲーム内購入とトークン消費

  • policy.move: 転送制限とゲーム専用利用

特徴:

  • ゼロデシマル: 整数のみのトークン(ゲーム用途)

  • クローズドループ経済: ゲーム外転送不可

  • マルチ通貨対応: $SUIと$USDC受付

  • 収益管理: 自動収集と分配

3. inu_test - 概念実証パッケージ

5層システム(背景、ボディ、耳、パターン、尻尾)によるオンチェーンSVGレイヤー合成の実証。update_layers()による動的SVG更新と、Sui Displayの自動合成が正常動作することを検証済み。

15層SVGアーキテクチャ

NFT画像生成システム

コンポーネント構成

  • generate.py: NFTGenerator クラスによるメイン生成ロジック

  • config.yaml: アセットパスと生成パラメータ設定

  • dog_parts_list.json: 52パーツの完全カタログ(ダブルURLエンコード済みSVG)

  • dog/: PNGとSVGソースアセットディレクトリ

生成ロジック

  • カラーバリエーション: 5種のベースカラー(ライトグレー、ミディアムグレー、オレンジブラウン、クリーム、ダークブラウン)

  • パターン組み合わせ: ベースカラーとパターンをリンクした5種のプリセット

  • アセット読み込み: PIL(Pillow)ベースの画像処理

  • 出力生成: 100種のユニークバリエーション(PNG画像+JSONメタデータ)

データ変換パイプライン

パーツ登録自動化

contract_tools による52パーツの自動デプロイ:

  • setup_env.sh: 環境設定とバリデーション

  • register_parts.sh: メイン登録スクリプト(ドライラン、カテゴリ指定、再開機能)

  • 包括的ログ: エラーハンドリングと統計レポート

実装詳細

  • 言語: Python 3.9+ (画像生成), Move (スマートコントラクト)

  • ライブラリ: Pillow (PIL), SVG処理

  • NFT形式: 完全フルオンチェーンSVG

  • データ保存: Sui Network (外部依存なし)

  • 解像度: スケーラブルベクター (SVG)

  • レイヤー数: 15層構造 (動的更新可能)

技術的革新

Dynamic Object Fields (DOF)

効率的なオンチェーンストレージによる:

  • 中央パーツライブラリ管理: 全52パーツの統一管理

  • リアルタイムパーツ更新: NFT再ミント不要の更新機能

  • 階層的権限システム: きめ細かなアクセス制御

  • ガス効率的一括操作: バッチ処理による最適化

Hot Potato Pattern

アトミックトランザクションの保証:

  • INUトークンバーン: 不可分な取引処理

  • アイテム購入: 中間状態の排除

  • パッケージ間連携: 安全なクロスモジュール操作

  • 部分状態更新の防止: 整合性確保

SVG合成システム

リアルタイムオンチェーンSVG生成:

  • Display URLテンプレートでのレイヤー順序制御

  • 特殊文字対応のダブルURLエンコード

  • 外部依存なしの自動合成

  • 動的レイヤー更新サポート

階層的アクセス制御

デプロイメントと運用

パッケージ独立性

各Moveパッケージは独立して維持:

  • Move.toml設定: 個別の依存関係管理

  • ビルド・デプロイサイクル: 分離された更新プロセス

  • アドレス空間: 独立したデプロイメントアドレス

  • バージョン管理: 個別のリリースサイクル

Last updated