アーキテクチャ概要
このドキュメントでは、zERC20がオンチェーンコントラクト、オフチェーンサービス、Internet Computer (ICP) ステルスメッセージングレイヤーにわたってどのように構築されているかを説明します。
- プライバシー保護送金: 送信者はステルスアドレスにzERC20をバーン。受信者は同じまたは別のチェーンで、紐付け可能なオンチェーンメタデータなしにミント
- ERC-20互換: 標準トークンインターフェースが既存のウォレット、DEX、DeFiプロトコルで動作
- 証明可能な整合性: すべてのミントはゼロ知識証明(Nova/Groth16)に依存
- スケーラビリティ: PoseidonマークルツリーとIVCで数千の送金を1つの証明にバッチ化
- クロスチェーン: LayerZeroベースのHubが全チェーンのルートを集約
オンチェーンコントラクト
| コントラクト | 説明 |
|---|---|
| zERC20 | アップグレード可能なERC-20。IndexedTransferイベントを発行し、SHA-256ハッシュチェーンを維持し、検証済みミント用のteleportを公開
|
| Verifier | LayerZero OApp。Nova/Groth16証明を検証し、受信者ごとのテレポート額を追跡し、ルートをHubにリレー |
| Hub | 全チェーンの転送ルートをPoseidonツリーに集約し、グローバルルートを全Verifierにブロードキャスト |
| LiquidityManager | 流動性ポリシーを管理し、原資産のラップ/アンラップを処理 |
| Adaptor | 別チェーンの方が流動性が有利な場合のStargate経由のクロスチェーン出口 |
オフチェーンサービス
| サービス | 説明 |
|---|---|
| Indexer | Actix HTTPサーバー + Postgres。オンチェーンイベントを同期し、マークルツリーを維持し、ルート証明を生成 |
| Decider Prover | オンチェーン検証用のNova証明を確定するHTTPワーカー |
| Cross-chain Job | 転送ルートをHubにリレーし、ブロードキャストをトリガー |
ICPステルスストレージ
| Canister | 説明 |
|---|---|
| Key Manager Canister | VetKDベースのIBE鍵導出(EVMアドレスごと) |
| Storage Canister | 暗号化されたアナウンスメントと署名済みインボイスを保存 |
データフロー
1. 転送の発行
すべての転送(ミント/送金/バーン)はSHA-256ハッシュチェーンに追加され、インデックス付きイベントを発行します。
zERC20._update() → IndexedTransferを発行 → hashChainを更新
2. ルート証明
インデクサーがPoseidonマークルツリーを維持し、定期的にIVC証明を使用してオンチェーンで新しい転送ルートを証明します。
3. クロスチェーン集約
各チェーンのVerifierはその転送ルートをHubにリレーし、Hubはそれらを集約してグローバルルートを全Verifierにブロードキャストします。
4. プライベート送金
送信者 → バーンアドレスへのzERC20送金 → 受信者がICPストレージをスキャン → ZKP生成 → Verifier.teleport() → zERC20が受信者にミント
暗号プリミティブ
| プリミティブ | 用途 |
|---|---|
| Poseidon Hash | マークルツリー、バーンアドレス導出、受信者バインディング |
| SHA-256 | ハッシュチェーンコミットメント(BN254用に248ビットに切り詰め) |
| Nova Folding | バッチ引き出し証明、ルート遷移証明 |
| Groth16 | シングル引き出し証明 |
| VetKD/IBE | ICP上の暗号化ステルスメッセージング |
信頼モデル
| エンティティ | 権限/能力 |
|---|---|
| コントラクトオーナー | コントラクトのアップグレード、Verifierのローテーションが可能 |
| インデクサーオペレーター | 送信者/バーンアドレス/金額を観察。クエリ時に受信者を把握 |
| ICP Canister | 暗号化データを保存。受信者の鍵なしに復号不可 |
⚠️ 最大限のプライバシーのために
送信者-受信者の紐付け漏洩を避けるために、独自のインデクサーインスタンスを運用してください。