既存研究の理論詳細と現状課題を深く掘り下げる。Hawk から ZEXE 系譜、zkay/ZeeStar 言語アプローチ、KACHINA UC フレームワーク、Ekiden/Sapphire の TEE 系、SmartFHE/fhEVM の FHE 系まで、設計トレードオフと未解決問題を 25+ 論文で解剖。
スマートコントラクトに「秘密」を持ち込む方法は大きく 4 系統に分かれる。ZK(証明可能秘匿)、TEE(ハードウェア隔離)、MPC(分散秘密計算)、FHE(暗号化計算)。それぞれ trust assumption・性能・成熟度・適用領域が異なり、単一の「正解」は存在しない。本ページでは各アプローチの理論的核と現状の壁を解剖する。
注: 決定木は単純化したヒューリスティクス。実際は脅威モデルとガス予算で再評価する。
| アプローチ | Trust Assumption | 性能 (秘匿1演算) | 成熟度 | 典型応用 | 代表実装 |
|---|---|---|---|---|---|
| ZK | Trustless (setup次第) |
~100k–1M gas ~1–60s prover |
Production | shielded pool, mixer, private DEX | Aztec / Penumbra / Tornado |
| TEE | HW vendor信頼 (SGX/SEV) |
~native (10x) | Production | EVM秘匿実行、機密DEX | Oasis Sapphire / Phala / Secret |
| MPC | honest-majority or t-of-n |
3–100x slower | Pilots | auction, OTC, dark pool | Renegade / Partisia |
| FHE | Trustless (LWE仮定) |
10⁴–10⁶x slower | Research | blind computation, FHE-MEV | Zama fhEVM / SmartFHE |
| Hybrid | 各方式に依存 | 状況依存 | Emerging | compliance + privacy | Privacy Pools / Derecho |
図1: Trust × Performance トレードオフ。理想領域 (右上 = trustless × 高速) は誰も到達していない。Hybrid (中央) はパッチワークで近づく試み。
証明者が「ある計算が正しく行われた」ことだけを公開し、入力・中間状態は秘匿。
適用: shielded payment、mixer、private DEX、auction。
限界: ロジック自体は公開、相互作用 (composability) は研究中。
CPU内の隔離領域 (Intel SGX, AMD SEV) で計算し、attestation で正当性を証明。
適用: confidential L1 (Sapphire)、機密 DEX、AI推論。
限界: SGX攻撃 (Foreshadow, ÆPIC, SGAxe) で過去複数回致命的破綻。
複数ノードが秘密分散した入力で関数を共同計算。閾値仮定下でtrustless。
適用: dark pool matching、auction、co-signing。
限界: 参加者集合がdynamicな場合、reshareが重い。
暗号文のまま加減乗除を実行。ノードはplaintextを見ずに計算結果暗号文を得る。
適用: blind auction、privacy-preserving ML、FHE-MEV。
限界: 128-bit比較で5-10秒(CPU)、本番gas予算で実用化困難。
2026年現在、4 アプローチのいずれも「trustless かつ high-performance かつ fully composable かつ auditable」を同時に満たさない。実用 SC privacy は常にハイブリッドであり、設計者は「何を捨てるか」を明示的に選ばなければならない。
ZK ベース SC プライバシーの主流系譜。2016 年の Hawk が「private contract」概念を導入し、2020 年の ZEXE が trustless decentralized private computation (DPC) に拡張、2023 年の VeriZEXE が verifier 効率化を達成。三世代の進化を数式・回路・gas コストで追う。
図2: 7年スパンの ZK SC privacy 系譜。各世代は前世代の核心限界 (trusted manager → 重い verifier → 単独 protocol) を解消してきた。
「private contract」を初めて形式化した論文。スマートコントラクト C は次の二部構造を持つ:
Manager: trusted な off-chain entity。参加者は自分の入力 x_i を manager に暗号化送信、manager は f(x_1,…,x_n) を計算し、結果を ZK 証明付きで chain に投稿する。
性質:
Hawk が残した遺産: 「private contract = on-chain commitment + off-chain compute + ZK proof」という基本パターンを確立。後続 (Ekiden, Zexe, Aztec Connect) はすべてこのテンプレートの変種。
ZEXE は Hawk の trusted manager を排除し、純粋 trustless な private computation を実現した。中核概念は record: 各 record r は (payload, birth_predicate Φ_b, death_predicate Φ_d) を持ち、その「一生」を ZK で証明する。
Predicate Language (pl): predicate は arbitrary な NP 関係。これにより任意の private state machine を定義可能 (private DEX、private auction、private voting すべて)。
ZEXE の最大の壁「on-chain verifier が重すぎて Ethereum で動かない」を解決。三つの工夫:
ベンチマーク (paper より): Ethereum mainnet 想定で、tx あたり ~250k gas で verify 可能。ZEXE 原論文の ~2.5M gas と比較して桁違いに改善。
| 項目 | Hawk (2016) | ZEXE (2020) | VeriZEXE (2023) |
|---|---|---|---|
| Trust model | trusted manager | trustless | trustless |
| 計算抽象 | (privateF, publicF) | birth-death predicate | birth-death + aggregation |
| ZK system | SNARK (libsnark) | Groth16 + BCTV14 (recursive) | Plonk-like + aggregation |
| Setup | per-contract | per-predicate (universal) | universal SRS |
| Prover time | ~30s (報告) | ~60s (5M constraints) | ~20s (集約後) |
| Verifier gas | impractical | ~2.5M gas | ~250k gas |
| Composability | なし | predicate 内のみ | predicate 内のみ |
| 実装状況 | PoC のみ | aleo の前身 | 研究実装 |
// ZEXE における private payment の predicate 擬似コード predicate PaymentBirth(record r) { assert r.data.amount >= 0; assert r.data.owner_pk != 0; return true; } predicate PaymentDeath(record r, witness w) { // 所有権の証明 assert verify_signature(r.data.owner_pk, w.sig, r.cm); return true; } tx Transfer(in: [r1, r2], out: [r3, r4]) { assert sum(in.data.amount) == sum(out.data.amount); // 保存則 assert PaymentDeath(r1) and PaymentDeath(r2); assert PaymentBirth(r3) and PaymentBirth(r4); // すべて ZK proof π で証明 }
ZK 回路の手書きは熟練者でも数週間かかる作業。zkay (CCS 2019) を皮切りに、Solidity ライクな DSL から ZK 回路を自動生成する言語アプローチが台頭した。所有権アノテーション、暗号化変数、自動 proof 生成といった抽象化により、ZK 経験ゼロの開発者が private SC を書けるようにする試み。
図3: DSL アプローチの進化。zkay (基本概念) → ZeeStar (一般化) → Eagle (効率) → Seahorse (FHE 統合)。
変数に「誰が所有するか」を型レベルで宣言。compiler は所有者間の暗号化境界を解析し、必要な ZK proof を自動生成する。
// zkay の擬似コード例 contract PrivateAuction { final address seller; mapping(address => uint@me) bids; // 各 bidder のみ自分の bid を見える uint@seller best_bid; // seller のみ最高入札を見える function submit_bid(uint@me amount) { bids[me] = amount; if (reveal(amount > best_bid, seller)) { best_bid = amount; // re-encrypt for seller } } }
compiler は reveal() で要求される比較を ZK 回路に変換し、変数の暗号化境界を type system で保証する。
zkay の「single owner」制約を撤廃し、multi-owner 状態と homomorphic operations をサポート。複数の所有者が暗号化された値を加算・比較するシナリオを記述できる。
主な拡張:
uint@{alice, bob} — alice と bob の両方が見られるcompiler architecture: AST → ZK IR → Circom-like circuit → Groth16 proof。
zkay/ZeeStar の compile 効率に着目。回路サイズを 削減するための制約推論・ dead code elimination・回路 reuse を実装。
貢献: 同等プログラムで回路 constraints を 30–60% 削減 (報告)。
限界: 言語表現力は zkay レベルにとどまる、本番採用なし。
Solana × FHE を意識した DSL。encrypted tx と normal tx を一つの program 内で混在記述できる。MEV 緩和のための encrypted mempool との連携を想定。
貢献: FHE primitive を Solana program に Rust-like syntax で組み込み。
限界: FHE の根本的遅さ (秒オーダー) は変えられない、デバッグツール未成熟。
図4: DSL コンパイルパイプライン。各段で回路 inflation が積み重なり、最終的に手書き比 5–50x のサイズになるのが現状の最大課題。
単独の private SC を作るのは可能でも、複数の private SC が互いに呼び合うとき安全性は維持されるか。Universal Composability (UC) は Canetti が提唱した形式手法だが、SC privacy への適用は KACHINA (CSF 2021) で初めて達成された。理論は美しい、しかし具体的 instantiation はほぼゼロ — これ自体が大きな研究機会。
「private smart contract 同士を組み合わせても、全体の機密性・正確性が保たれる条件」を形式化する。Canetti の UC framework を blockchain × privacy 文脈に拡張。
核心アイデア:
| 項目 | Game-based (従来) | UC (KACHINA) |
|---|---|---|
| 攻撃者モデル | 固定 game challenger | 任意の environment 𝓩 |
| 合成性 | 保証なし | 合成定理で保証 |
| 複数 protocol 連携 | 個別再証明必要 | 自動的に合成 |
| 記述コスト | 低い | 数倍〜10x |
| tooling | EasyCrypt 等 | ほぼ無し |
| SC への適用例 | 多い (Hawk, ZEXE 部分的) | KACHINA 論文のみ |
図5: KACHINA のアーキテクチャ。複数の private SC (𝓕_C1, 𝓕_C2) が ledger と cross-call し、全体が adversary 𝓐 に対して simulator 𝓢 で UC emulate される構成。
Trusted Execution Environment (TEE) は CPU 内の暗号化メモリ領域 (Intel SGX, AMD SEV) で計算を実行し、attestation で正当性を証明する技術。「計算は速い、しかし HW vendor を信頼しなければならない」 という根本トレードオフを抱える。Ekiden が学術的基盤を、Sapphire / Phala / Secret Network が production 化を担う。
計算と consensus を分離する off-chain TEE compute + on-chain commitment モデル。世界初の本格的「TEE × blockchain」アーキテクチャ提案。
役割分担:
tx flow:
SGX は過去 7 年で複数の致命的攻撃を受けた:
これらは 論文では「seal-of-trust」とされた enclave を実質破壊した。Intel は SGX 12世代以降廃止 (consumer)。Ekiden は学術的価値は高いが、SGX 単独信頼の脆弱性が顕在化。
Ekiden の系譜上の production deployment。EVM 互換でありながら、状態と calldata が TEE 内で暗号化される confidential L1。
developer ergonomics は ZK 系と比較して 圧倒的に高い: ZK 回路設計不要、デバッガ使える、既存ツールチェイン (Hardhat, Foundry) 流用可。
Polkadot 系の TEE chain。Phat Contract と呼ばれる off-chain SC を SGX 内で実行。AI/Web2 統合 (HTTPS 呼び出し) を売りにする。
差別化: 任意 HTTP リクエストを enclave 内から発行できる「oracle」的役割。
Cosmos SDK ベース、最も古い production TEE chain (2020)。Secret Contracts は CosmWasm + SGX。
事件: 2022 年に viewing key 漏洩、過去 tx 全 plaintext 化。TEE 信頼仮定の脆弱性を実証してしまった。
| 項目 | TEE (Sapphire) | ZK (Aztec / Penumbra) |
|---|---|---|
| Trust model | HW vendor + side-channel resistance | cryptographic (LWE / DL / pairing) |
| 性能 | native ~10x | prover 1–60s |
| EVM 互換性 | 高 (既存 Solidity 動く) | 低 (専用 DSL 必要) |
| 監査性 | attestation log 経由 | proof で公開検証 |
| 破綻時の影響 | 過去 tx 全 plaintext 化リスク | forward secrecy あり |
| developer ergonomics | 高 (Hardhat/Foundry) | 低 (Circom/Noir 学習) |
| 実用採用 | Sapphire/Phala/Secret 稼働中 | Aztec/Penumbra 稼働中 |
TEE 派は「ZK は 100x 遅い、developer は learn 不可、production 使えない」と主張。ZK 派は「TEE は trust 仮定が暗号学的に正当化できない、Intel に依存」と主張。両者とも正しい。本質的にトレードオフなので、設計者は脅威モデルで選ぶしかない。
Fully Homomorphic Encryption は理論上「完璧な privacy」を提供する: 暗号文のまま任意計算可能、誰も plaintext を見ない、HW 信頼不要。しかし 10⁴–10⁶ 倍遅い。SmartFHE (EuroS&P 2023) が SC 統合の理論を、Zama fhEVM が実装を進めるが、本番 gas 予算とは桁違いの差が残る。
EVM の precompile として FHE op を提供する提案。TFHE スキーム (Chillotti et al.) ベースで、gate-by-gate に bool 演算を行う。
提案された precompile:
// SmartFHE precompile addresses (proposal) 0x80: FHE_AND(c1, c2) → c1 ∧ c2 (~1ms gate) 0x81: FHE_OR(c1, c2) → c1 ∨ c2 0x82: FHE_XOR(c1, c2) → c1 ⊕ c2 0x83: FHE_NOT(c1) → ¬c1 0x84: FHE_BOOTSTRAP(c) → noise refresh (~10ms) 0x85: FHE_DECRYPT(c, sk) → plaintext (off-chain)
Solidity 上では euint8, ebool といった暗号化型を導入し、通常の演算子で書ける UX を目指す。
TFHE-rs ベースの EVM 互換 chain。Solidity から FHE primitive を直接呼べる:
// Zama fhEVM での暗号化型の使用例 import "fhevm/lib/TFHE.sol"; contract PrivateAuction { mapping(address => euint32) bids; // 暗号化整数 euint32 highest_bid; function submit_bid(bytes calldata enc_amount) public { euint32 amount = TFHE.asEuint32(enc_amount); bids[msg.sender] = amount; ebool is_higher = TFHE.gt(amount, highest_bid); highest_bid = TFHE.cmux(is_higher, amount, highest_bid); } }
Developer ergonomics: Solidity から透過的に書ける、これは大きな進歩。
性能: 2024 時点で TFHE.gt(euint32, euint32) は CPU で 数十ms〜数百ms、Ethereum の単一 op (~3ns) と比較して 10⁷x オーダーの差。
encrypted mempool の延長として、価格情報を暗号化したまま arbitrage を計算する PoC。AMM の reserve、pool 価格、user の slippage tolerance すべて暗号化。
難点:
図6: 128-bit 比較を各方式で実行した時の所要時間。FHE の遅さが圧倒的で、本番 SC で常用するには 10⁴–10⁶x の改善が必要。
業界の楽観的見積もりでも:
つまり、本格的に 「FHE が EVM の precompile」 になるのは10年後の見通し。それまでは ZK + TEE のハイブリッドが現実解。
SC privacy 研究は 10 年経っても production deployment は限定的。「なぜ広まらないか」を 6 つの根本課題に分解し、それぞれの「なぜ難しいか」「既存試み」「研究機会」を整理する。これらは博士テーマや Bug Bounty / Audit business のシーズでもある。
private SC A の出力を private SC B が消費するとき、A の状態は B から見えない。しかし B の正当性証明には A の状態が必要 — どう証明するか。さらに、A と B が同時に走ると cross-tx leakage (片方の挙動から他方の状態推定) が起こる。
既存試みKACHINA (CSF 2021) が UC ベース理論を提供。Aztec Connect は「bridge contract」で外部 protocol 連携を回避策的に実装。しかし実用 composable framework は無い。
研究機会KACHINA を AMM / Lending に instantiate、cross-protocol leakage の定量化、private intent の合成可能性 (CowSwap × privacy)。
ZK verifier (Groth16/Plonk) は pairing-heavy で ~250k gas、複雑な回路だと数百万。FHE precompile は単一 gate で 10x 通常 op、整数演算で 1M+ gas。Ethereum の block gas limit (30M) を考えると、純粋 private DApp は 10–30 tx/block で詰まる。
既存試みVeriZEXE の verifier 簡素化 (10x 改善)、proof aggregation (Halo, Nova で recursion)、L2 でのバッチ化 (Aztec)、precompile EIP (ecAdd/ecMul/ecPairing)。
研究機会SNARK-friendly hash (Poseidon, Reinforced Concrete)、native field 整数演算、custom gates、ZK-rollup × privacy のハイブリッド設計。
Circom / Noir / Halo2 の習得には数ヶ月。デバッガがない、エラーは「constraint not satisfied」のみ、step debug 不可。Solidity 開発者を ZK 化するには再教育コストが prohibitive。
既存試みzkay/ZeeStar の DSL アプローチ、Noir (Aztec) の Rust-like syntax、Halo2 IDE、ZoKrates。Sapphire は ZK 不要で Solidity 流用可能 (TEE side)。
研究機会ZK 回路 step debugger、symbolic execution × constraint solver、AI-assisted circuit synthesis、formal verification × DSL 統合 (Lean/Coq pipeline)。
private SC の状態が「誰にも見えない」場合、規制対応 (AML/CFT) や internal audit が成立しない。Tornado.cash 制裁 (OFAC 2022) はこの問題の象徴。完全な privacy は規制との両立が困難。
既存試みPrivacy Pools (Buterin et al. 2023) の association set、selective disclosure (zkLedger)、Compliance Manager パターン (Derecho, ZEBRA)、view key (Zcash)。
研究機会auditable mixing scheme、threshold view key (t-of-n の auditor 集合)、ZK proof of compliance (regulator が読める証明)、Compliance Manager の標準化。
state opacity と表裏一体だが、より具体的に「監査ログをどう作るか」「誰が何を見られるか」の設計問題。複数管轄 (US/EU/JP/SG) で要求が異なる。selective disclosure を間違えると 過大開示が起こる。
既存試みEkiden の attestation log、zkLedger の auditable transactions、Sapphire の selective public state、PEReDi (CBDC × KYC)、PARScoin、Coconut credentials。
研究機会差分プライバシー × audit log、policy-language で disclosure 制御、regulator 視点の formal model、cross-jurisdiction policy enforcement。
private SC でも、tx の 順序 がリークすれば MEV bot が攻撃可能。encrypted mempool (Shutter, F3B, Aztec) は順序を秘匿するが、復号タイミングと private state 更新の整合性は未解決。cross-tx leakage (A の暗号化 tx と B の挙動の相関) も定量化されていない。
既存試みShutter Network (threshold encryption based)、F3B (Bertrand & Shoshitaishvili 2024)、CoW Protocol の batch auction、Penumbra の sealed-bid auction。FHE-MEV PoC (Flashbots/Imperial)。
研究機会commit-reveal × private state の整合性証明、cross-tx leakage の定量モデル、time-lock encryption の trustless 化、batch auction × MEV ROI 分析。
図7: 6 大課題 × 4 アプローチのマトリクス。FHE は 4 課題で × — 性能改善まで本格採用は困難。DSL は composability/audit が弱点。
SC privacy 研究の主要論文を、アプローチ別 (ZK / TEE / FHE / MPC / Lang / UC) にカード化。各論文に 著者の貢献、limitation、今後の課題 を明示。
「private contract」概念を初めて形式化。trusted manager + on-chain commitment + ZK proof のテンプレートを確立。
著者の貢献trusted manager を排除した DPC モデル。birth-death predicate で任意 private state machine を表現。Aleo の前身。
著者の貢献ZEXE の verifier gas を 10x 削減。Plonk-like + proof aggregation で Ethereum mainnet で実用可能なレベルに。
著者の貢献MPC ベースで「decentralized private compute」を提唱した最初期。後の Secret Network へ進化。
著者の貢献UTXO ベース anonymous coin の革新的設計。account 不要、constant-size proof。
著者の貢献Aztec rollup から外部 DeFi (Uniswap, Lido 等) へ private 接続する bridge contract 設計。
著者の貢献Bulletproofs の改良版。range proof / set membership を 2-3x 効率化。
著者の貢献複数 prover が共同で SNARK を生成する collaborative ZK-SNARK の実証。MPC × ZK の橋渡し。
著者の貢献Anonymous Zether の効率化。one-out-of-many を多数選択に拡張、proof size を log scale に。
著者の貢献Zcash Sapling を multi-asset 化。Namada / Penumbra で採用。
著者の貢献account-based EVM 上の private payment scheme。Σ-Bullets による amount 秘匿。
著者の貢献DeFi tx に対する compliance-aware privacy。selective disclosure を ZK で実現。
著者の貢献accumulator + Σ-protocol で anonymous coin。trusted setup 不要、効率良い。
著者の貢献DeFi 全般に適用可能な privacy stack。AMM / Lending / DAO の private 化。
著者の貢献DeFi の privacy リスクを実証分析。on-chain leakage の定量化、対策提案。
著者の貢献TEE (SGX) × blockchain の決定的論文。Compute / Consensus / Key Manager 分離アーキテクチャ。Oasis Sapphire の前身。
著者の貢献EVM precompile として FHE op を提供する初の formal proposal。TFHE ベース、euint/ebool 型導入。
著者の貢献世界初の Solidity-like privacy DSL。@owner annotation で変数の所有者を宣言、compiler が ZK 回路自動生成。
著者の貢献zkay の一般化。multi-owner state、homomorphic op、混在計算をサポート。
著者の貢献zkay/ZeeStar の compile 効率に着目。dead code elimination + 回路 reuse で 30-60% constraint 削減。
著者の貢献Solana program で FHE primitive と通常 tx を混在記述する DSL。MEV 緩和を意識。
著者の貢献SC privacy への Universal Composability 適用。ideal contract functionality 𝓕_C と composition theorem を定式化。
著者の貢献Bitcoin script を使った MPC の最初期論文。fair MPC を financial penalty で実現。
著者の貢献aborting party に financial penalty を課す MPC。SC との統合で fair な auction/DEX を実現。
著者の貢献anonymous credential の基礎技術。後の Coconut / SyRA / DeFi KYC 系に影響。
著者の貢献