📘 Academy原文準拠 | Phase 2 · Unit 3 · Lesson 3.3 Zswap and Atomic Swaps 内容に忠実な日本語版です。原文(英語)・図・動画は公式 Academy(外部リンク・別タブで開きます)を正本に。
Midnight がトークン・プライバシー・NIGHT/DUST の分担をどう扱うかは、ここまでで見てきました。ここからは、資産が実際にどうやって交換されるのかを見ます。その主役が Zswap です。
公開スワップの困りごと
たとえば Alice が、自分のトークン A を 7,000,000 枚出して、Bob の持つトークン B1 を 600、B2 を 300、B3 を 100 と交換したいとします。これを透明な(中身が丸見えの)ブロックチェーンでやると、3つの困りごとが出てきます。
1つめ。取引の中身が誰にでも見えてしまうこと。Alice の買い注文を先に見たマイナーやバリデーターは、Alice の注文で値段が上がる前に、その資産を安いうちに先回りで買えてしまいます。これが MEV 抽出(front-running、先回り)で、公開チェーンでは絶えず起きています。
2つめ。スワップは atomic(アトミック、不可分)である必要があること。両方そろって成立するか、どちらも成立しないかのどちらかでなければいけません。Alice だけがトークンを送って、Bob が逃げる、というのは許されません。中途半端な状態は受け入れられないのです。
3つめ。正当なプライバシーの必要があること。Bob は、会計士や税務署には中身を見せてもよいけれど、競合相手には見せたくない、ということがあります。Alice も、自分の取引活動を一部の人には知られたくない、ということがあります。
Midnight は、この3つの問題をすべて Zswap で解決します。
Zswap とは何か

Zswap は、証明可能なほど安全(provably secure)で、プライバシーを守るアトミックスワップを提供するトランザクションの仕組みです。Zerocash プロトコルをベースにしていて、次のことを可能にします。
- 1つのトランザクションの中で複数の資産タイプを扱える
- アトミックな交換(all-or-nothing、全部成立かゼロか)
- 取引の詳細を秘匿できる
- トランザクションの非対話的(non-interactive)なマージができる
図(原文):トークン A を持つ Alice と、B1・B2・B3 を持つ Bob のあいだで、複数資産がまとめて1回のアトミックスワップに合流していくイメージ。
簡単な例で考えましょう。Alice は「3ドル払って5ユーロが欲しい」。Bob は「5ユーロ払って3ドルが欲しい」。これらの取引が誰かの目に見えるようになる前に、両者はゼロ知識証明を使って匿名性を確保します。そのうえで Zswap が、この2つの取引を1つのアトミックスワップに統合(merge)します。交換された資産は完全に隠されたままです。
どう動くのか

図(原文):トランザクションのデータ部分と署名部分を切り離す Zswap の設計。データと署名を分けることで、検証を非対話的なゼロ知識証明で行えるようになる様子。
Zswap は、Zcash エコシステム由来の巧みな設計を借りています。すなわち、トランザクションのデータと署名を分離するという設計です。この分離のおかげで、検証を非対話的ゼロ知識証明(non-interactive zero-knowledge proofs)で行えるようになり、遅いマルチパーティ計算(multi-party computation)プロトコルが不要になります。
カギになる構成要素は次の3つです。
疎なマルチ値 Pedersen コミットメント(Sparse multi-value Pedersen commitments):これがトランザクションの非対話的なマージを可能にします。お互いを知らない当事者どうしでも、それぞれのオファーをマッチングして統合できます。
インバランスマップ(Imbalance maps):トランザクションは、各資産タイプについて「入力と出力が一致しない差分(imbalance)」だけを公開します。この差分は、具体的な金額や資産タイプを明かしません。送り手・受け手の秘匿性(confidentiality)はそのまま保たれます。
オフチェーンのマッチング(Off-chain matching):ユーザーは交換オファーを送り、選ばれた参加者が、ブロックチェーンに提出する前にオフチェーンでオファーをマッチング・統合できます。マッチング中に明かされる情報は最小限で、トランザクションが釣り合った(balanced)時点で消去されます。
なぜアトミックスワップなのか
アトミックスワップは all-or-nothing(全部成立かゼロか)です。釣り具の例で考えましょう。Alice は Bob から、釣り竿($600)・リール($300)・仕掛け($100)を買います。支払いは現金 $700 とクレジット $300。この取引は、Alice がすべての道具を手にし、なおかつ Bob が現金と電子資金の両方を受け取るまで、完了とはみなされません。
ブロックチェーンの世界では、これは UTXO の交換として表現されます。スワップは、完全に成立するか、完全に巻き戻る(revert)かのどちらかでなければいけません。部分的な状態(partial state)はなし。片方が相手の資産を持ち逃げすることもなし。
Zswap は、詳細をプライベートに保ったまま、このアトミック性を保証します。
主な特徴
図(原文):Zswap の主な特徴(複数資産・アトミック性・秘匿性・非対話的マージ)をまとめたイメージ。
これで何が作れるのか

Zswap を使うと、次のようなものが作れます。
- ローカルな交換市場(Local exchange markets):ユーザーが交換オファーを送り、参加者がオフチェーンでマッチング・統合し、釣り合ったトランザクションを台帳に提出する。
- プライベートな DeFi(Private DeFi):分散型取引所、流動性プール、そして自分の戦略を先回り業者に漏らさずに行うトレーディング。
- マルチパーティ取引(Multi-party transactions):複数の資産・複数の当事者がからむ複雑な取引を、すべてアトミックに決済する。
- 資産をまたいだプライバシー(Cross-asset privacy):Midnight 上でラップした ETH を、Ethereum 側に意図を知らせずに取引できる。あなたの取引活動は、元のチェーンからは見えないままです。
秘匿性はユーザーが自分でコントロールします。マッチング中に何を明かすかは、あなたが決めます。トランザクションが釣り合って台帳に送られると、そのマッチング情報は消去されます。
Zswap は、Midnight 上のプライベートな DeFi の土台となるインフラです。トークンの層から得たプライバシー保証(Lesson 20)を、資産の交換にまで拡張します。
シールドトークン・公開メモリプール(public mempool)が存在しないこと・NIGHT/DUST の分担と組み合わさることで、Zswap は透明なチェーンでは存在しえない種類の金融アプリを可能にします。入札が隠れたままのオークション。戦略が漏れない板(order book)。競合に手の内を見られないトレーディング、などです。
技術的な詳細は、研究論文 Zswap: ZK Snark Based Non-Interactive Multi-Asset Swaps(外部リンク・別タブで開きます) を読んでください。
開発者として押さえる点
- 公開スワップの3大問題=①先回り(MEV)②アトミック性の欠如③プライバシーの欠如。Zswap はこれらをまとめて解く
- アトミック性=all-or-nothing。ブロックチェーン上では UTXO の交換として表現され、完全成立か完全巻き戻りのどちらか。部分状態は作らない
- 設計のキモは Zcash 由来の「データと署名の分離」。これで検証を非対話的ゼロ知識証明にでき、遅い MPC が不要になる
- 3つの部品:疎なマルチ値 Pedersen コミットメント(非対話マージ)/インバランスマップ(差分だけ公開・金額や資産タイプは隠す)/オフチェーンマッチング(明かす情報は最小、釣り合い後に消去)
- 用途:プライベート DeFi・ローカル交換市場・マルチパーティ取引・資産をまたいだプライバシー。秘匿のオークションや戦略の漏れない板など、透明チェーンでは作れないものが作れる
やさしい版・公式へ
- やさしい版:台帳と Zswap
- 公式:Academy Courses(外部リンク・別タブで開きます)(Phase 2 / Unit 3 / 3.3)
- 関連 docs:Midnight ドキュメント(外部リンク・別タブで開きます)(トークン/台帳まわりの仕様)
- 研究論文:Zswap: ZK Snark Based Non-Interactive Multi-Asset Swaps(外部リンク・別タブで開きます)
つぎに読むページ
➡️ 原文準拠コースの入口へ戻る。このコースについて(次のレッスンは順次追加します)