Skip to content

2. EnclaveProtocol:ブロックチェーンにプライバシー機能を追加

2.1 3 つの主要なプライバシー能力

EnclaveProtocol は、革新的な暗号学的構造と分散システム設計を通じて、ブロックチェーンエコシステムに 3 つの次元でのプライバシー保護能力強化を提供します。本節では、理論分析とシステム設計の観点から、各次元のプライバシー保護能力を詳しく説明します。

2.1.1 取引プロセスのプライバシー化(Transaction Process Privacy)

コア能力(Core Capabilities)

このプロトコルは、取引プロセスのプライバシー化において以下のコア能力を実現します:

  • 完全匿名取引(Full Anonymous Transaction): ゼロ知識証明技術を通じて、取引送信者、受信者、取引金額の完全な隠蔽を実現し、強匿名性(Strong Anonymity)要件を満たします。暗号学的観点から、ゼロ知識証明は取引情報のゼロ知識性(Zero-Knowledge Property)を保証します。つまり、検証者は証明から取引内容に関する情報を取得できません

  • 関係プライバシー保護(Relationship Privacy Protection): 取引当事者間には第三者によって追跡可能なオンチェーン関連が存在せず、第三者はオンチェーンデータを通じて取引関係を推測できません。グラフ理論の観点から、これは取引関係グラフのプライバシー保護を実現し、関係ネットワーク分析(Relationship Network Analysis)攻撃を防止します

  • バッチプライバシー操作(Batch Privacy Operations): 一対多のプライバシー配分メカニズムをサポートし、複数の受信者が互いの存在を知らない状態で、受信者分離(Recipient Isolation)を実現します。システム設計の観点から、これは暗号学的コミットメント(Cryptographic Commitment)とゼロ知識証明を通じてバッチ操作のプライバシー保護を実現します

  • 分散型検証(Decentralized Verification): 集中型コンポーネントを必要とせず、純粋なオンチェーンゼロ知識証明検証メカニズムを採用し、分散化特性を確保します。分散システムの観点から、これは分散化要件を満たし、単一障害点(Single Point of Failure)リスクを回避します

技術実装(Technical Implementation)

暗号学とシステム設計の観点から、取引プロセスのプライバシー化の技術実装には以下が含まれます:

  • ゼロ知識証明メカニズム(Zero-Knowledge Proof Mechanism): ゼロ知識証明技術を使用して取引参加者と金額情報を隠します。暗号学理論の観点から、ゼロ知識証明は完全性(Completeness)、健全性(Soundness)、ゼロ知識性(Zero-Knowledge)の 3 つの基本性質を満たし、検証者が証明から取引内容に関する情報を取得できないことを保証します

  • Commitment メカニズム(Commitment Mechanism): 暗号学的コミットメントメカニズムを通じて配分計画のプライバシーを保護します。暗号学的観点から、コミットメントメカニズムは隠蔽性(Hiding)と束縛性(Binding)の 2 つの基本性質を満たし、配分計画が提出前に不可視で、提出後に改ざん不可能であることを保証します

  • Nullifier メカニズム(Nullifier Mechanism): Nullifier メカニズムを通じて二重支払い攻撃を防止し、同時にプライバシーを保護します。セキュリティの観点から、Nullifier メカニズムは暗号学的ハッシュ関数を通じて各資金ユニットが一度だけ使用されることを保証し、二重支払い防止(Anti-Double-Spending)要件を満たします

  • バッチ引き出しメカニズム(Batch Withdrawal Mechanism): バッチ引き出しをサポートし、複数のバウチャーを組み合わせて引き出すことができ、プライバシーを向上させます。システム設計の観点から、バッチ引き出しは集約証明(Aggregated Proof)メカニズムを通じて Gas コストを削減し、同時に取引の複雑性を増やすことでプライバシーを向上させます

アプリケーションシナリオ(Application Scenarios)

取引プロセスのプライバシー化のアプリケーションシナリオには以下が含まれます:

  • 企業プライバシー決済シナリオ(Corporate Privacy Payment Scenario): 企業が従業員に給与を支払う際、支払い関係と金額情報を保護し、ビジネス機密の漏洩と競争分析を防止します

  • 商業取引プライバシーシナリオ(B2B Transaction Privacy Scenario): B2B 取引は取引当事者と金額情報を保護し、ビジネス機密の漏洩と戦略分析を防止します

  • 個人転送プライバシーシナリオ(Personal Transfer Privacy Scenario): 個人間の転送は完全に匿名で、個人プライバシーを保護し、富の暴露とセキュリティリスクを防止します

2.1.2 デジタル資産のプライバシー化(Digital Asset Privacy)

コア能力(Core Capabilities)

このプロトコルは、デジタル資産のプライバシー化において以下のコア能力を実現します:

  • 資産起源プライバシー(Asset Origin Privacy): 暗号学的メカニズムを通じて資産の元の起源と転送パスを隠し、オンチェーンの追跡と分析を防止します。暗号学的観点から、これは預金プール(Deposit Pool)メカニズムとゼロ知識証明を通じて資産起源の追跡不可能性(Untraceability)を実現します

  • 資産保有プライバシー(Asset Holding Privacy): ユーザーの資産保有状況が公開されないように保護し、攻撃対象となることを防ぎます。セキュリティの観点から、これはプライバシープールメカニズムとゼロ知識証明を通じて資産保有のプライバシー保護を実現し、富のプライバシー(Wealth Privacy)要件を満たします

  • 資産配分プライバシー(Asset Allocation Privacy): 柔軟な資産分割と配分メカニズムをサポートし、各配分バウチャーを独立して管理し、互いに関連しません。システム設計の観点から、これはマルチバウチャー(Multi-Voucher)技術を通じて資産配分のプライバシー保護を実現し、配分プライバシー(Allocation Privacy)要件を満たします

  • クロスチェーン資産プライバシー(Cross-Chain Asset Privacy): マルチチェーン展開アーキテクチャをサポートし、クロスチェーン資産のプライバシー保護を実現し、クロスチェーン相関分析を防止します。分散システムの観点から、これは統一抽象層(Unified Abstraction Layer)を通じてクロスチェーンプライバシー保護を実現し、クロスチェーンプライバシー(Cross-Chain Privacy)要件を満たします

技術実装(Technical Implementation)

暗号学とシステム設計の観点から、デジタル資産のプライバシー化の技術実装には以下が含まれます:

  • 預金プールメカニズム(Deposit Pool Mechanism): 預金プールメカニズムを通じて、資産をプライバシープールに預金し、資産起源を隠します。暗号学的観点から、預金プールは混合メカニズム(Mixing Mechanism)を通じて資産起源の追跡不可能性を実現します

  • マルチバウチャー技術(Multi-Voucher Technology): マルチバウチャー技術を通じて、資産を複数の独立したバウチャーに分割し、各バウチャーを独立して管理します。システム設計の観点から、マルチバウチャー技術は独立した nullifier メカニズムを通じてバウチャーの一意性とセキュリティを保証します

  • ゼロ知識証明メカニズム(Zero-Knowledge Proof Mechanism): ゼロ知識証明を通じて、資産情報を暴露せずに資産所有権を証明します。暗号学理論の観点から、ゼロ知識証明は資産所有権の検証可能性(Verifiability)とプライバシー(Privacy)を保証します

  • クロスチェーン資産配分メカニズム(Cross-Chain Asset Allocation Mechanism): クロスチェーン資産配分をサポートし、クロスチェーン資産関連を保護します。分散システムの観点から、これは統一抽象層を通じてクロスチェーンプライバシー保護を実現します

アプリケーションシナリオ(Application Scenarios)

デジタル資産のプライバシー化のアプリケーションシナリオには以下が含まれます:

  • 資産保護シナリオ(Asset Protection Scenario): ユーザーの資産保有状況を保護し、富の暴露を防止し、セキュリティとプライバシーの要件を満たします

  • 投資プライバシーシナリオ(Investment Privacy Scenario): 投資ポートフォリオと投資戦略を保護し、追跡分析を防止し、投資プライバシー保護の要件を満たします

  • クロスチェーンプライバシーシナリオ(Cross-Chain Privacy Scenario): 異なるチェーン上の資産分布を保護し、クロスチェーン相関分析を防止し、クロスチェーンプライバシー保護の要件を満たします

2.1.3 オンチェーン資産管理のプライバシー化(On-Chain Wealth Management Privacy)

コア能力(Core Capabilities)

このプロトコルは、オンチェーン資産管理のプライバシー化において以下のコア能力を実現します:

  • 富分布プライバシー(Wealth Distribution Privacy): ユーザーの異なるチェーン上の富分布を保護し、包括的な富の暴露を防止します。セキュリティの観点から、これはマルチチェーン展開とプライバシープールメカニズムを通じて富分布のプライバシー保護を実現し、グローバル富プライバシー(Global Wealth Privacy)要件を満たします

  • ポートフォリオプライバシー(Portfolio Privacy): プライバシー保護型の資産配分とポートフォリオ管理をサポートし、投資戦略を保護します。システム設計の観点から、これはマルチバウチャー技術とゼロ知識証明を通じてポートフォリオのプライバシー保護を実現し、投資戦略プライバシー(Investment Strategy Privacy)要件を満たします

  • 収益配分プライバシー(Revenue Distribution Privacy): 企業、DAO、プロジェクトが複数の受信者にプライベートに収益を配分できます。暗号学的観点から、これは一対多のプライバシー配分メカニズムとゼロ知識証明を通じて収益配分のプライバシー保護を実現し、配分戦略プライバシー(Distribution Strategy Privacy)要件を満たします

  • 資金流動プライバシー(Fund Flow Privacy): 資金流動情報を保護し、オンチェーン分析と追跡を防止し、管理戦略を保護します。システム設計の観点から、これはプライバシープールメカニズムとゼロ知識証明を通じて資金流動のプライバシー保護を実現し、流動プライバシー(Flow Privacy)要件を満たします

技術実装(Technical Implementation)

暗号学とシステム設計の観点から、オンチェーン資産管理のプライバシー化の技術実装には以下が含まれます:

  • マルチバウチャー技術(Multi-Voucher Technology): マルチバウチャー技術を通じて、複雑な資産管理シナリオをサポートします。システム設計の観点から、マルチバウチャー技術は独立管理と柔軟な組み合わせを通じて複雑な資産管理シナリオのプライバシー保護を実現します

  • 一対多プライバシー配分メカニズム(One-to-Many Privacy Allocation Mechanism): 一対多のプライバシー配分を通じて、複数の受信者にプライベートに資産を配分することをサポートします。暗号学的観点から、これは暗号学的コミットメントとゼロ知識証明を通じてバッチ配分のプライバシー保護を実現します

  • バッチ引き出し最適化メカニズム(Batch Withdrawal Optimization Mechanism): バッチ引き出し最適化を通じて、柔軟な資産組み合わせと引き出しをサポートします。システム設計の観点から、バッチ引き出しは集約証明メカニズムを通じて Gas コストを削減し、同時にプライバシーを向上させます

  • ゼロ知識証明メカニズム(Zero-Knowledge Proof Mechanism): ゼロ知識証明を通じて、配分戦略と金額情報を保護します。暗号学理論の観点から、ゼロ知識証明は配分戦略のプライバシーと検証可能性を保証します

アプリケーションシナリオ(Application Scenarios)

オンチェーン資産管理のプライバシー化のアプリケーションシナリオには以下が含まれます:

  • 企業資産管理シナリオ(Corporate Wealth Management Scenario): 企業がプライベートに資金を管理し、複数の受信者に資産を配分し、管理戦略と配分計画を保護します

  • プロジェクト配当シナリオ(Project Dividend Scenario): プロジェクトが複数の投資者に配当を配分し、配分戦略と金額を保護し、投資戦略の漏洩を防止します

  • DAO ガバナンスシナリオ(DAO Governance Scenario): DAO が複数の貢献者に報酬を配分し、ガバナンス意思決定プロセスを保護し、ガバナンスプライバシーの要件を満たします

  • 慈善寄付シナリオ(Charity Donation Scenario): 慈善団体が複数の受益者に資金を配分し、受益者のプライバシーを保護し、慈善プライバシー保護の要件を満たします

2.2 コアイノベーション:Deposit ID バインディングメカニズム

EnclaveProtocol は、**Deposit ID バインディングメカニズム(Deposit ID Binding Mechanism)**を導入することで、「プライバシー決済不可能三角」問題を成功裏に解決し、3 つの次元でのプライバシー保護を実現しました。本節では、理論分析とシステム設計の観点から、このメカニズムの技術原理とイノベーションポイントを詳しく説明します。

革新的ソリューション(Innovative Solution)

暗号学と分散システムの観点から、Deposit ID バインディングメカニズムは以下の技術的ブレークスルーを実現します:

  • 非固定額面(Variable Denomination): 任意の金額の預金と任意の比率の配分をサポートし、取引プロセスのプライバシー化を実現します。システム設計の観点から、これは資金アンカーと配分証明の分離を通じて柔軟性要件を実現します

  • 強二重支払い防止(Strong Double-Spending Prevention): Deposit ID + Proof Hash + Commitment の三重検証メカニズムを通じて、デジタル資産のプライバシー化を保証します。セキュリティの観点から、三重検証メカニズムは多層保護を通じて強二重支払い防止を実現し、暗号学的セキュリティ要件を満たします

  • 完全分散化(Full Decentralization): 純粋なオンチェーン実装、集中型依存なし、オンチェーン資産管理のプライバシー化をサポートします。分散システムの観点から、これは分散化要件を満たし、単一障害点リスクを回避します

技術的ブレークスルーポイント(Technical Breakthrough Points)

理論分析の観点から、Deposit ID バインディングメカニズムの技術的ブレークスルーポイントには以下が含まれます:

  • 従来のアプローチ(Traditional Approaches): commitment を直接 nullifier として使用し、非固定額面シナリオでは二重支払い攻撃を効果的に防止できず、ブロックチェーンに完全なプライバシー能力を追加できません。暗号学理論の観点から、従来のアプローチは非固定額面シナリオで一意性制約の失敗問題が存在します

  • EnclaveProtocol アプローチ(EnclaveProtocol Approach): Deposit ID を資金アンカー(Fund Anchor)として使用し、commitment を配分証明(Allocation Proof)として使用し、資金の一意性と配分の柔軟性の分離(Separation of Uniqueness and Flexibility)を実現し、ブロックチェーンに完全なプライバシー保護能力を追加しました。システム設計の観点から、この分離設計は資金アンカーの導入を通じて非固定額面シナリオでの二重支払い防止問題を解決します

2.3 システムアーキテクチャ:ブロックチェーンにプライバシー能力を追加するアーキテクチャ設計

EnclaveProtocol は、ブロックチェーンエコシステムにプライバシー能力を追加するために 3 層アーキテクチャ設計を採用しています:

┌─────────────────────────────────────────┐
│         マルチチェーンエコシステム層        │
│    TRON / BSC / ETH / その他のチェーン   │
│  (プライバシー保護能力を追加)            │
└─────────────────┬───────────────────────┘

┌─────────────────▼───────────────────────┐
│   EnclaveProtocol プライバシーコア層      │
│  ┌──────────────┐  ┌──────────────────┐ │
│  │ スマート      │  │ ゼロ知識証明      │ │
│  │ コントラクト  │  │ ネットワーク      │ │
│  │ システム      │  │                  │ │
│  │ - 預金プール  │  │ - 証明生成        │ │
│  │ - 引き出し    │  │ - 証明検証        │ │
│  │   プール      │  │ - プライバシー    │ │
│  │ - 検証        │  │   保護            │ │
│  │   コントラクト│  │ - 取引プライバシー│ │
│  │ - マルチ      │  │   化              │ │
│  │   バウチャー  │  │                  │ │
│  │   管理        │  │                  │ │
│  └──────────────┘  └──────────────────┘ │
│  ┌────────────────────────────────────┐ │
│  │  3 つのプライバシー化能力           │ │
│  │  - 取引プロセスのプライバシー化      │ │
│  │  - デジタル資産のプライバシー化    │ │
│  │  - オンチェーン資産管理の           │ │
│  │    プライバシー化                  │ │
│  └────────────────────────────────────┘ │
└─────────────────┬───────────────────────┘

┌─────────────────▼───────────────────────┐
│          アプリケーションアクセス層        │
│  Web DApp / モバイル / B2B API / B2C API │
│  (プライバシー保護能力を使用)            │
└─────────────────────────────────────────┘

2.4 コアワークフロー:3 つのプライバシー化次元を実現

フェーズ 1: 預金 (Deposit)

支払者 A が呼び出し:deposit() payable
コントラクト実行:
1. 増分 depositId = nextDepositId++ を生成
2. deposits[depositId] = {amount: msg.value, owner: msg.sender, used: false} を記録
3. depositId を A に返す

フェーズ 2: 配分計画生成 (オフチェーン)

マルチバウチャー分割

A が配分計画を決定(マルチバウチャー技術をサポート):
allocations = [
  {seq: 0, amount: 3 ETH},  // バウチャー 1
  {seq: 1, amount: 2 ETH},  // バウチャー 2
  {seq: 2, amount: 1 ETH}   // バウチャー 3
]

A が生成:
- secret_A = random(32 bytes)
- commitment = F(allocations ∥ secret_A ∥ depositId)

各バウチャーが独立した nullifier を生成:
- nullifier_0 = keccak256(commitment || 0 || amount_0)
- nullifier_1 = keccak256(commitment || 1 || amount_1)
- nullifier_2 = keccak256(commitment || 2 || amount_2)

フェーズ 3: ゼロ知識証明生成

A が SP1 回路を使用して 2 種類の証明を生成:

タイプ 1 - 提出証明 (proof_submit):
- プライベート入力:allocations, secret_A
- パブリック入力:commitment, depositId, totalAmount, submitter
- 制約:
  * A が depositId に対応する預金を所有していることを検証
  * allocations の合計 <= 預金金額であることを検証
  * commitment の計算が正しいことを検証

タイプ 2 - 個人引き出し証明 (proof_withdraw_X):
- 各受信者 X に対して独立した証明を生成
- allocation_X が commitment に確実に含まれていることを証明
- 他の受信者の情報を暴露しない

フェーズ 4: オンチェーン提出

A が呼び出し:submitCommitment(commitment, depositId, totalAmount, proof_submit)
コントラクト検証:
1. SP1 証明の有効性
2. depositId が未使用で A が所有していること
3. totalAmount <= deposits[depositId].amount

成功後:
1. deposits[depositId].used = true
2. validCommitments[commitment] = true
3. commitment をハッシュツリーに挿入

フェーズ 5: 受領証配布(マルチバウチャーサポート)

A が各受信者にバウチャーを配布:
{
  allocation: {seq: seq_X, amount: amount_X},
  commitment: commitment,
  credential: credential_X,  // 独立した Merkle proof
  proof_withdraw: proof_withdraw_X
}

各バウチャーには以下が含まれます:
- seq: バウチャーシーケンス番号、一意の nullifier を生成するために使用
- amount: バウチャー金額
- credential: バウチャーの独立した証明情報
- proof_withdraw: 引き出し証明

サポートされるシナリオ:
- 単一の受信者が複数のバウチャーを受信可能
- 複数の受信者が同じ commitment から異なるバウチャーを受信可能
- バウチャーを柔軟に組み合わせて使用可能

フェーズ 6: 受信者検証と引き出し(マルチバウチャーサポート)

受信者 X がバウチャーを受信した後:

1. commitment がオンチェーンで有効であることを検証:validCommitments[commitment] == true
2. バウチャーの nullifier が未使用であることを検証:usedNullifiers[nullifier_X] == false
3. final_proof を生成し、以下を証明:
   - allocation_X (seq, amount) が commitment に属する
   - commitment がハッシュツリーに属する
   - nullifier_X の計算が正しい
4. withdraw(X, amount_X, final_proof) を呼び出し
5. コントラクト検証:
   - nullifier の一意性を検証
   - 証明の有効性を検証
   - nullifier を使用済みとしてマーク
6. 転送を実行

マルチバウチャー引き出しシナリオ:
- 単一バウチャー引き出し:直接 withdraw を呼び出し
- 複数バウチャーバッチ引き出し:複数のバウチャーを選択し、集約証明を生成し、一度に引き出し
- クロスコミットメント引き出し:異なる commitment からのバウチャーの組み合わせ引き出しをサポート

[← 前の章: ブロックチェーンのプライバシー欠如と需要分析](./01-privacy-gap-analysis) | [次の章: コア技術アーキテクチャ →](./03-core-architecture)

Released under the MIT License.