重要な中央集権的な取引所が崩壊するたびに、共通の疑問が生じます:暗号化技術を使用して問題を解決できますか? 取引所は、政府の許可、監査人のレビュー、取引所を管理・運営する人々の個人的な背景の確認などの「合法的な」方法に頼るのではなく、オンチェーンで保有している資金がユーザーに対する負債をカバーするのに十分であることを示す暗号証明を作成することができます。 取引所は、預金者の同意なしに預金者の資金を引き出すことが根本的に不可能なシステムを確立する可能性があります。 潜在的には、「悪いことをしない」野心的で善良なCEXと、「悪いことはできない」が現状では非効率的でプライバシーを漏らすオンチェーンDEXの間の全範囲を探求することができます。 この記事では、トランザクションをトラストレスに近づけるための歴史的な試み、これらのテクノロジーの限界、およびZK-SNARKやその他の高度なテクノロジーを使用したより新しく、より強力なアイデアについて掘り下げます。
取引所が暗号方式を使用してユーザーを騙していないことを証明しようとする初期の試みは、長い道のりをさかのぼることができます。 2011年、当時最大のビットコイン取引所であるMtGoxは、事前に発表されたアドレスにBTC 424242送金することで資金があることを証明しました。 2013年、方程式の反対側、つまり顧客預金の総額を証明する方法についての議論が始まりました。 顧客の預金がXに等しいことを証明し(「負債証明」)、Xコインの秘密鍵の所有権を証明(「資産証明」)すれば、支払能力の証明、つまり取引所がすべての預金者に返済する資金を持っていることを証明したことになります。
入金を証明する最も簡単な方法は、(ユーザー名、残高)ペアのリストを公開することでした。 各ユーザーは自分の残高が含まれているかどうかを確認でき、誰でもリスト全体を確認して、(i)各残高がマイナスでないこと、(ii)合計が請求額と等しいことを確認できます。 ただし、これはプライバシーを侵害するため、(hash(username, salt), balance)ペアのリストを公開し、各ユーザーにソルト値を非公開で送信するなど、わずかな変更を加えることができます。 しかし、これでもバランス情報やバランス変化のパターンが漏れてしまいます。 プライバシーを保護したいという願望は、次の発明であるマークルツリー(ハッシュツリーとも呼ばれます)テクノロジーに私たちをもたらします。
緑:チャーリーノード。 青:デビッド・ノード、これはチャーリーが証明の一部として受け取るノードでもある。 黄:ルートノードで、すべての人に公開されています。
マークルツリーテクノロジーでは、クライアントのバランスシートをマークルサムツリーに配置します。 このツリーでは、各ノードは(バランス、ハッシュ)ペアです。 最下層のリーフノードは、個々のクライアントの残高とユーザー名のソルト付きハッシュ値を表します。 上位の各ノードでは、残高は下の 2 つの残高の合計であり、ハッシュ値は下の 2 つのノードのハッシュです。 マークル和証明は、マークル証明と同様に、木の「枝」であり、葉から根への経路上の兄弟ノードで構成されています。
取引所は、各ユーザーに残高のマークル合計証明を送信して、保有額を証明します。 その後、ユーザーは自分の残高が合計の一部として正しく含まれていることを保証できます。 簡単なコード例は ここにあります。
この設計でのプライバシーの漏洩は、完全に公開されているリストよりもはるかに低く、ルートが公開されるたびにブランチをシャッフルすることでさらに減らすことができます。 ただし、プライバシーの漏洩はまだ存在します。 Charlie は、ある人の残高が 164 ETH であること、2 人のユーザーの残高の合計が 70 ETH であることなどを知ることができます。 多くのアカウントを管理している攻撃者は、取引所のユーザーについて多くのことを知ることができます。
このスキームの微妙ではあるが重要な側面は、マイナス残高の可能性です:1390ETHの顧客残高を持つ取引所が890ETHの準備金しか持っておらず、ツリーの架空のアカウントの下に-500ETHの残高を追加することで不足分を補おうとしたらどうなるでしょうか? この可能性はスキームを壊さないことがわかりましたが、これがまさに通常のマークルツリーの代わりにマークルサムツリーが必要な理由です。 Henryが取引所によって管理されている架空のアカウントであり、-500ETHが置かれているとします。
グレタの証明検証は失敗し、取引所はヘンリーの-500ETHノードを提供する必要がありますが、彼女は無効であるため拒否します。 イブとフレッドの検証も、ヘンリーの上の中間ノードのETHの合計が-230であるため失敗し、無効になります。 盗難から逃れるために、取引所はツリー全体の右半分の誰もバランスプルーフをチェックしないことを願う必要があります。
取引所が500ETH相当のユーザーを特定でき、これらのユーザーがわざわざ証拠を確認しないか、証明を受け取っていないことに文句を言っても信じてもらえないと信じれば、取引所は自信を持って盗難の罰を免れることができます。 ただし、交換は、これらのユーザーをツリーから除外することでも同じ効果を得ることができます。
したがって、負債の証明を実証する唯一の目的において、マークルツリー技術は本質的にプルーフ・オブ・ライアビリティ・スキームと同等です。 しかし、そのプライバシー属性はまだ理想的ではありません。 マークルツリーは、例えば、 サトシやウェイをそれぞれ個別の葉にするなど、より賢く利用することもできますが、最終的には、より現代的な技術で、これを実現するためのより良い方法があります。
ZK-SNARKは強力な技術であり、人工知能にとってのトランスフォーマーのように、暗号学にとって潜在的に強力な技術であり、数十年前に開発された特定の技術の多くの問題を完全に圧倒する普遍的に強力な技術です。 当然のことながら、ZK-SNARKsを使用して、責任証明プロトコルのプライバシーを大幅に簡素化および強化することができます。
私たちができる最も簡単なことは、すべてのユーザーの預金をマークルツリー(またはより簡単に言えば、 KZGコミットメント)に入れ、ZK-SNARKを使用して、ツリー内のすべての残高が負ではなく、合計すると主張値になることを証明することです。 プライバシーのためにハッシュ化のレイヤーを追加し、各ユーザーにマークルブランチ(またはKZGプルーフ)を与えても、他のユーザーの残高は公開されません。
KZGコミットメントを使用すると、証拠として「兄弟ノード」を提供する必要がなくなるため、プライバシーの漏洩を回避する方法です。 単純なZK-SNARKを使用して、残高の合計と、各残高が負でないことを証明できます。 専用のZK-SNARKを使用して、前述のKZGの残高の合計と非負性を証明できます。 これを実現する簡単な例を次に示します。 「各残高のビットを確立する」補助多項式を導入し(説明のために、残高が範囲内にあると仮定しましょう)、16桁ごとにオフセット付きの累計を追跡するため、実際の合計が宣言された合計と一致する場合にのみ合計がゼロになります。 z が -128 乗根のユニティであれば、次の方程式を証明できます。
有効なセットアップの最初の値は、0 0 0 0 0 0 0 0 0 0 0 1 2 5 10 20 -165 0 0 0 0 0 0 0 0 0 1 3 6 12 25 50 -300...このような方程式を多項式チェックに変換し、次にZK-SNARKに変換する方法を理解するには、 ZK-SNARKに関する私の記事 を参照してください。最適なプロトコルではありませんが、この種の暗号証明が最近ではそれほど謎に包まれていないことを確かに示しています。
いくつかの式を追加するだけで、このような制約システムは、より複雑なシナリオに適合させることができます。 たとえば、レバレッジ取引システムでは、個々のユーザーが何らかの担保で資金をカバーするのに十分な他の資産を持っている場合、マイナスの残高を持つことは許容されます。 SNARKは、このより複雑な制約を証明するために使用でき、取引所が他のユーザーをルールから密かに免除することで資金を危険にさらすことはないとユーザーを安心させることができます。
長期的には、この種のZKデットプルーフは、取引所での顧客の預金だけでなく、より幅広いローンにも使用できる可能性があります。 誰かがローンを組むときはいつでも、そのローンを含む多項式またはツリーにレコードを入れ、この構造のルートがチェーン上で公開されます。 これにより、ローンを求める人は誰でも、他のローンからあまり借りていないことを貸し手にZKの証拠を提供することができます。 究極的には、法的な革新により、この方法でコミットされたローンは、コミットされていないローンよりも優先順位が高くなることさえあります。 これは、「Decentralized Society: Finding the Soul of Web3」で議論されたアイデア、つまり、ある種の「ソウルバウンドトークン」を通じて、チェーン上にネガティブな評判や担保の概念を確立するという考え方と同じ方向に私たちを導きます。
アセットプルーフの最も単純なバージョンは、上記で見たプロトコルです:X量のコインを保有していることを証明するには、事前に合意された時間にXコインを移動するか、データフィールドに「これらの資金はバイナンスに属しています」というメッセージを含むトランザクションで移動する必要があります。 取引手数料を回避するために、代わりにオフチェーンメッセージに署名することができます。ビットコインとイーサリアムの両方に、オフチェーン署名メッセージの標準があります。
この単純な資産証明手法には、2つの実用的な問題があります。
「冷蔵」加工。
担保のデュアルユース。
セキュリティ上の理由から、ほとんどの取引所は、顧客の資金の大部分を「コールドストレージ」、つまりトランザクションに手動で署名してインターネットに転送する必要があるオフラインのコンピューターに保管しています。 私がかつて個人の資金に使用していたコールドストレージのセットアップでは、永久にオフラインのコンピューターを使用して、署名されたトランザクションを含むQRコードを生成し、携帯電話でスキャンすることができました。 最新の交換プロトコルはより複雑で、多くの場合、複数のデバイス間でマルチパーティ計算が行われます。 このような設定では、アドレスの制御を証明するための追加のメッセージでさえ、コストのかかる操作になります。
トランザクションはいくつかのパスをたどることができます。
公に知られている長期アドレスをいくつか維持します。 取引所は複数のアドレスを生成し、それぞれの所有権の証明を公開し、これらのアドレスを再利用します。 これは最も単純なスキームですが、セキュリティとプライバシーを保護する方法にいくつかの制限が追加されます。
多くのアドレスを設定し、いくつかをランダムに証明します。 取引所は多くのアドレスを持つことができ、おそらくそれぞれを一度だけ使用し、取引後にそれらを廃止します。 この場合、取引所には、所有権を証明するために「開く」必要があるいくつかのアドレスをランダムに選択するプロトコルがある可能性があります。 一部の取引所では、すでに監査人と同様のことを行っていますが、原則として、この手法は完全に自動化されたプロセスになる可能性があります。
より複雑なZKPオプション。 例えば、取引所は、すべてのアドレスを1/2マルチシグとして設定し、各アドレスのキーは異なり、もう一方は12/16マルチシグのような複雑だが安全性の高い方法で保存された「メジャー」緊急バックアップキーのブラインドバージョンとして設定することができます。 プライバシーを保護し、アドレス全体の公開を避けるために、取引所はブロックチェーン上でゼロ知識証明を実行し、チェーン上のこの形式のすべてのアドレスの合計残高を証明することもできます。
もう一つの大きな課題は、担保の二重利用の防止です。 取引所は、準備金の証拠のために互いに担保を簡単に行き来し、そうでない場合は支払能力があるふりをすることができます。 理想的には、ソルベンシー証明はリアルタイムであり、ブロックごとに証明を更新します。 これが現実的でない場合、理想的ではないオプションは、たとえば、毎週火曜日の14:00 UTCに準備金を証明するなど、異なる取引所間で固定スケジュールを調整することです。
最後の質問は、不換紙幣で資産証明を行うことはできるのかということです。 取引所は暗号通貨を保有しているだけではありません。また、銀行システム内で不換紙幣を保有しています。 ここでの答えは「はい」ですが、そのようなプロセスは必然的に「法定通貨」の信託モデルに依存します:銀行自体が残高を証明でき、監査人がバランスシートを証明できるなど。不換紙幣は暗号的に検証できないことを考えると、これはそのフレームワーク内で実行できる最善のことですが、それでもやる価値はあります。
もう一つのアプローチは、取引所を運営し、USDCのような資産担保型ステーブルコインを扱う事業体を、暗号通貨と従来の銀行システム(USDC自体)との間の現金の流入と流出のプロセスを処理する別の事業体から明確に分離することです。 USDCの「負債」はオンチェーンERC20トークンにすぎないため、負債証明は「無料」であり、資産証明のみが必要です。
さらに踏み込んだ場合、取引所がユーザーのお金を返済するための資金を持っていることを証明したいだけではありません。 代わりに、取引所がユーザーの資金を盗むのを完全に防ぎたいと考えています。
この点に関する最初の大きな試みは、2017年と2018年にイーサリアムの研究コミュニティで人気を博した拡張ソリューションであるPlasmaでした。 Plasmaは、天びんを個別の「コイン」のセットに分割し、それぞれにインデックスを割り当て、Plasmaブロックのマークルツリーの特定の位置に配置することで機能します。 コインの有効な転送には、ツリー内の正しい位置にトランザクションを配置し、ツリーのルートをチェーン上に公開する必要があります。
Plasma のバージョンの簡略化された回路図。 コインはスマートコントラクトに保存され、出金時にPlasmaプロトコルのルールが強制的に実行されます。
OmiseGoは、このプロトコルで分散型取引所を構築しようとしましたが、その後、他のアイデアに移行しました。 この点で、Plasmaグループ自体も進化し、現在は楽観的なEVMロールアップに焦点を当てたOptimismプロジェクトになっています。
2018年に考案されたプラズマの技術的限界(コインの断片化の証明など)は、検討する価値がありません。 2018年のプラズマの言説のピーク以来、ZK-SNARKは拡張に関連するユースケースでより実行可能になりました。 前述したように、ZK-SNARKはすべてを変えました。
Plasmaのコンセプトのより現代的なバージョンは、Starkwareがバリディウムと呼ぶもので、データがオフチェーンに保存されることを除いて、基本的にZKロールアップと同じです。 この構造は、特に集中型サーバーがコードを実行し、その正しい実行を証明する必要がある場合など、多くのユースケースで使用できます。 バリディウムでは、オペレーターは資金を盗むことはできませんが、実装の詳細によっては、オペレーターが姿を消した場合、一部のユーザー資金が滞留する可能性があります。
CEXとDEXの関係は、二項対立とは程遠いものです。 実際、さまざまな形態のハイブリッド集中化など、さまざまなオプションがあり、効率性などのメリットを享受しながら、中央集権的なオペレーターがほとんどの形態の悪用を防ぐための多数の暗号化保護手段を備えています。
ただし、この設計空間の右半分では、ユーザーエラーの処理という根本的な問題について議論する必要があります。 これまでのところ、最も重要なタイプのエラーは、ユーザーがパスワードを忘れたり、デバイスを紛失したり、ハッキングされたり、アカウントにアクセスできなくなったりした場合に何をすべきかということです。
取引所はこの問題に対処できます:まず電子メールの回復を通じて、それが失敗した場合は、KYCによるより複雑な形式の回復を通じて。 しかし、このような問題を解決するためには、取引所がコインを実際に管理する必要があります。 ユーザーアカウントへのアクセスを正当に復元するには、取引所がそれらのアカウントから資金を盗むために悪用される可能性のある力を持っている必要があります。 これは避けられないトレードオフです。
理想的な長期的ソリューションは、ユーザーが緊急事態に対処できるように、マルチシグネチャやソーシャルリカバリーウォレットなどのテクノロジーによって補完されたセルフカストディに依存しています。 しかし、短期的には、2つの明らかな代替ソリューションがあり、それぞれに明らかに異なるコストとメリットがあります。
短期的には、カストディアルとノンカストディアルの2つの異なるカテゴリーの取引所があります。 現在、後者はUniswapのようなDEXに代表されています。 将来的には、ユーザーの資金がバリディウムのスマートコントラクトのようなものに保持される、暗号的に「制約された」CEXも登場するかもしれません。 また、暗号通貨ではなく法定通貨で信頼するセミカストディアル取引所の出現を目撃するかもしれません。
どちらのタイプの取引所も引き続き存在します。 カストディアル取引所のセキュリティを強化するための最も簡単な下位互換性のある方法は、準備金の証明を増やすことです。 これには、資産証明と責任証明の組み合わせが含まれます。 両者の適切に構造化されたプロトコルを開発することは技術的な課題をもたらしますが、両方の分野で可能な限り進歩し、すべての取引所が利益を得られるようにソフトウェアとプロセスをオープンソース化する必要があります。
長期的には、少なくとも暗号通貨に関しては、すべての取引所が非カストディアルになる方向にますます移行することを願っています。 ウォレットの回復は、少額を扱う新規ユーザーや、法的な理由でそのような取り決めを必要とする機関のために存在します。 高度に中央集権的な回復オプションが必要な場合がありますが、これは取引所自体ではなく、ウォレットレベルで行うことができます。 magic.link がPolymarketのようなプラットフォームとやり取りする方法は、このアプローチの一例です。 法定通貨に関しては、従来の銀行システムと仮想通貨エコシステムの間のフローは、USDCのような資産担保型ステーブルコインのローカルな現金流入/流出プロセスによって促進することができます。 ただし、この目標を完全に達成するには時間がかかります。
Balaji Srinivasan氏、Coinbase、Kraken、Binanceのスタッフの皆さん、議論に心から感謝します。
重要な中央集権的な取引所が崩壊するたびに、共通の疑問が生じます:暗号化技術を使用して問題を解決できますか? 取引所は、政府の許可、監査人のレビュー、取引所を管理・運営する人々の個人的な背景の確認などの「合法的な」方法に頼るのではなく、オンチェーンで保有している資金がユーザーに対する負債をカバーするのに十分であることを示す暗号証明を作成することができます。 取引所は、預金者の同意なしに預金者の資金を引き出すことが根本的に不可能なシステムを確立する可能性があります。 潜在的には、「悪いことをしない」野心的で善良なCEXと、「悪いことはできない」が現状では非効率的でプライバシーを漏らすオンチェーンDEXの間の全範囲を探求することができます。 この記事では、トランザクションをトラストレスに近づけるための歴史的な試み、これらのテクノロジーの限界、およびZK-SNARKやその他の高度なテクノロジーを使用したより新しく、より強力なアイデアについて掘り下げます。
取引所が暗号方式を使用してユーザーを騙していないことを証明しようとする初期の試みは、長い道のりをさかのぼることができます。 2011年、当時最大のビットコイン取引所であるMtGoxは、事前に発表されたアドレスにBTC 424242送金することで資金があることを証明しました。 2013年、方程式の反対側、つまり顧客預金の総額を証明する方法についての議論が始まりました。 顧客の預金がXに等しいことを証明し(「負債証明」)、Xコインの秘密鍵の所有権を証明(「資産証明」)すれば、支払能力の証明、つまり取引所がすべての預金者に返済する資金を持っていることを証明したことになります。
入金を証明する最も簡単な方法は、(ユーザー名、残高)ペアのリストを公開することでした。 各ユーザーは自分の残高が含まれているかどうかを確認でき、誰でもリスト全体を確認して、(i)各残高がマイナスでないこと、(ii)合計が請求額と等しいことを確認できます。 ただし、これはプライバシーを侵害するため、(hash(username, salt), balance)ペアのリストを公開し、各ユーザーにソルト値を非公開で送信するなど、わずかな変更を加えることができます。 しかし、これでもバランス情報やバランス変化のパターンが漏れてしまいます。 プライバシーを保護したいという願望は、次の発明であるマークルツリー(ハッシュツリーとも呼ばれます)テクノロジーに私たちをもたらします。
緑:チャーリーノード。 青:デビッド・ノード、これはチャーリーが証明の一部として受け取るノードでもある。 黄:ルートノードで、すべての人に公開されています。
マークルツリーテクノロジーでは、クライアントのバランスシートをマークルサムツリーに配置します。 このツリーでは、各ノードは(バランス、ハッシュ)ペアです。 最下層のリーフノードは、個々のクライアントの残高とユーザー名のソルト付きハッシュ値を表します。 上位の各ノードでは、残高は下の 2 つの残高の合計であり、ハッシュ値は下の 2 つのノードのハッシュです。 マークル和証明は、マークル証明と同様に、木の「枝」であり、葉から根への経路上の兄弟ノードで構成されています。
取引所は、各ユーザーに残高のマークル合計証明を送信して、保有額を証明します。 その後、ユーザーは自分の残高が合計の一部として正しく含まれていることを保証できます。 簡単なコード例は ここにあります。
この設計でのプライバシーの漏洩は、完全に公開されているリストよりもはるかに低く、ルートが公開されるたびにブランチをシャッフルすることでさらに減らすことができます。 ただし、プライバシーの漏洩はまだ存在します。 Charlie は、ある人の残高が 164 ETH であること、2 人のユーザーの残高の合計が 70 ETH であることなどを知ることができます。 多くのアカウントを管理している攻撃者は、取引所のユーザーについて多くのことを知ることができます。
このスキームの微妙ではあるが重要な側面は、マイナス残高の可能性です:1390ETHの顧客残高を持つ取引所が890ETHの準備金しか持っておらず、ツリーの架空のアカウントの下に-500ETHの残高を追加することで不足分を補おうとしたらどうなるでしょうか? この可能性はスキームを壊さないことがわかりましたが、これがまさに通常のマークルツリーの代わりにマークルサムツリーが必要な理由です。 Henryが取引所によって管理されている架空のアカウントであり、-500ETHが置かれているとします。
グレタの証明検証は失敗し、取引所はヘンリーの-500ETHノードを提供する必要がありますが、彼女は無効であるため拒否します。 イブとフレッドの検証も、ヘンリーの上の中間ノードのETHの合計が-230であるため失敗し、無効になります。 盗難から逃れるために、取引所はツリー全体の右半分の誰もバランスプルーフをチェックしないことを願う必要があります。
取引所が500ETH相当のユーザーを特定でき、これらのユーザーがわざわざ証拠を確認しないか、証明を受け取っていないことに文句を言っても信じてもらえないと信じれば、取引所は自信を持って盗難の罰を免れることができます。 ただし、交換は、これらのユーザーをツリーから除外することでも同じ効果を得ることができます。
したがって、負債の証明を実証する唯一の目的において、マークルツリー技術は本質的にプルーフ・オブ・ライアビリティ・スキームと同等です。 しかし、そのプライバシー属性はまだ理想的ではありません。 マークルツリーは、例えば、 サトシやウェイをそれぞれ個別の葉にするなど、より賢く利用することもできますが、最終的には、より現代的な技術で、これを実現するためのより良い方法があります。
ZK-SNARKは強力な技術であり、人工知能にとってのトランスフォーマーのように、暗号学にとって潜在的に強力な技術であり、数十年前に開発された特定の技術の多くの問題を完全に圧倒する普遍的に強力な技術です。 当然のことながら、ZK-SNARKsを使用して、責任証明プロトコルのプライバシーを大幅に簡素化および強化することができます。
私たちができる最も簡単なことは、すべてのユーザーの預金をマークルツリー(またはより簡単に言えば、 KZGコミットメント)に入れ、ZK-SNARKを使用して、ツリー内のすべての残高が負ではなく、合計すると主張値になることを証明することです。 プライバシーのためにハッシュ化のレイヤーを追加し、各ユーザーにマークルブランチ(またはKZGプルーフ)を与えても、他のユーザーの残高は公開されません。
KZGコミットメントを使用すると、証拠として「兄弟ノード」を提供する必要がなくなるため、プライバシーの漏洩を回避する方法です。 単純なZK-SNARKを使用して、残高の合計と、各残高が負でないことを証明できます。 専用のZK-SNARKを使用して、前述のKZGの残高の合計と非負性を証明できます。 これを実現する簡単な例を次に示します。 「各残高のビットを確立する」補助多項式を導入し(説明のために、残高が範囲内にあると仮定しましょう)、16桁ごとにオフセット付きの累計を追跡するため、実際の合計が宣言された合計と一致する場合にのみ合計がゼロになります。 z が -128 乗根のユニティであれば、次の方程式を証明できます。
有効なセットアップの最初の値は、0 0 0 0 0 0 0 0 0 0 0 1 2 5 10 20 -165 0 0 0 0 0 0 0 0 0 1 3 6 12 25 50 -300...このような方程式を多項式チェックに変換し、次にZK-SNARKに変換する方法を理解するには、 ZK-SNARKに関する私の記事 を参照してください。最適なプロトコルではありませんが、この種の暗号証明が最近ではそれほど謎に包まれていないことを確かに示しています。
いくつかの式を追加するだけで、このような制約システムは、より複雑なシナリオに適合させることができます。 たとえば、レバレッジ取引システムでは、個々のユーザーが何らかの担保で資金をカバーするのに十分な他の資産を持っている場合、マイナスの残高を持つことは許容されます。 SNARKは、このより複雑な制約を証明するために使用でき、取引所が他のユーザーをルールから密かに免除することで資金を危険にさらすことはないとユーザーを安心させることができます。
長期的には、この種のZKデットプルーフは、取引所での顧客の預金だけでなく、より幅広いローンにも使用できる可能性があります。 誰かがローンを組むときはいつでも、そのローンを含む多項式またはツリーにレコードを入れ、この構造のルートがチェーン上で公開されます。 これにより、ローンを求める人は誰でも、他のローンからあまり借りていないことを貸し手にZKの証拠を提供することができます。 究極的には、法的な革新により、この方法でコミットされたローンは、コミットされていないローンよりも優先順位が高くなることさえあります。 これは、「Decentralized Society: Finding the Soul of Web3」で議論されたアイデア、つまり、ある種の「ソウルバウンドトークン」を通じて、チェーン上にネガティブな評判や担保の概念を確立するという考え方と同じ方向に私たちを導きます。
アセットプルーフの最も単純なバージョンは、上記で見たプロトコルです:X量のコインを保有していることを証明するには、事前に合意された時間にXコインを移動するか、データフィールドに「これらの資金はバイナンスに属しています」というメッセージを含むトランザクションで移動する必要があります。 取引手数料を回避するために、代わりにオフチェーンメッセージに署名することができます。ビットコインとイーサリアムの両方に、オフチェーン署名メッセージの標準があります。
この単純な資産証明手法には、2つの実用的な問題があります。
「冷蔵」加工。
担保のデュアルユース。
セキュリティ上の理由から、ほとんどの取引所は、顧客の資金の大部分を「コールドストレージ」、つまりトランザクションに手動で署名してインターネットに転送する必要があるオフラインのコンピューターに保管しています。 私がかつて個人の資金に使用していたコールドストレージのセットアップでは、永久にオフラインのコンピューターを使用して、署名されたトランザクションを含むQRコードを生成し、携帯電話でスキャンすることができました。 最新の交換プロトコルはより複雑で、多くの場合、複数のデバイス間でマルチパーティ計算が行われます。 このような設定では、アドレスの制御を証明するための追加のメッセージでさえ、コストのかかる操作になります。
トランザクションはいくつかのパスをたどることができます。
公に知られている長期アドレスをいくつか維持します。 取引所は複数のアドレスを生成し、それぞれの所有権の証明を公開し、これらのアドレスを再利用します。 これは最も単純なスキームですが、セキュリティとプライバシーを保護する方法にいくつかの制限が追加されます。
多くのアドレスを設定し、いくつかをランダムに証明します。 取引所は多くのアドレスを持つことができ、おそらくそれぞれを一度だけ使用し、取引後にそれらを廃止します。 この場合、取引所には、所有権を証明するために「開く」必要があるいくつかのアドレスをランダムに選択するプロトコルがある可能性があります。 一部の取引所では、すでに監査人と同様のことを行っていますが、原則として、この手法は完全に自動化されたプロセスになる可能性があります。
より複雑なZKPオプション。 例えば、取引所は、すべてのアドレスを1/2マルチシグとして設定し、各アドレスのキーは異なり、もう一方は12/16マルチシグのような複雑だが安全性の高い方法で保存された「メジャー」緊急バックアップキーのブラインドバージョンとして設定することができます。 プライバシーを保護し、アドレス全体の公開を避けるために、取引所はブロックチェーン上でゼロ知識証明を実行し、チェーン上のこの形式のすべてのアドレスの合計残高を証明することもできます。
もう一つの大きな課題は、担保の二重利用の防止です。 取引所は、準備金の証拠のために互いに担保を簡単に行き来し、そうでない場合は支払能力があるふりをすることができます。 理想的には、ソルベンシー証明はリアルタイムであり、ブロックごとに証明を更新します。 これが現実的でない場合、理想的ではないオプションは、たとえば、毎週火曜日の14:00 UTCに準備金を証明するなど、異なる取引所間で固定スケジュールを調整することです。
最後の質問は、不換紙幣で資産証明を行うことはできるのかということです。 取引所は暗号通貨を保有しているだけではありません。また、銀行システム内で不換紙幣を保有しています。 ここでの答えは「はい」ですが、そのようなプロセスは必然的に「法定通貨」の信託モデルに依存します:銀行自体が残高を証明でき、監査人がバランスシートを証明できるなど。不換紙幣は暗号的に検証できないことを考えると、これはそのフレームワーク内で実行できる最善のことですが、それでもやる価値はあります。
もう一つのアプローチは、取引所を運営し、USDCのような資産担保型ステーブルコインを扱う事業体を、暗号通貨と従来の銀行システム(USDC自体)との間の現金の流入と流出のプロセスを処理する別の事業体から明確に分離することです。 USDCの「負債」はオンチェーンERC20トークンにすぎないため、負債証明は「無料」であり、資産証明のみが必要です。
さらに踏み込んだ場合、取引所がユーザーのお金を返済するための資金を持っていることを証明したいだけではありません。 代わりに、取引所がユーザーの資金を盗むのを完全に防ぎたいと考えています。
この点に関する最初の大きな試みは、2017年と2018年にイーサリアムの研究コミュニティで人気を博した拡張ソリューションであるPlasmaでした。 Plasmaは、天びんを個別の「コイン」のセットに分割し、それぞれにインデックスを割り当て、Plasmaブロックのマークルツリーの特定の位置に配置することで機能します。 コインの有効な転送には、ツリー内の正しい位置にトランザクションを配置し、ツリーのルートをチェーン上に公開する必要があります。
Plasma のバージョンの簡略化された回路図。 コインはスマートコントラクトに保存され、出金時にPlasmaプロトコルのルールが強制的に実行されます。
OmiseGoは、このプロトコルで分散型取引所を構築しようとしましたが、その後、他のアイデアに移行しました。 この点で、Plasmaグループ自体も進化し、現在は楽観的なEVMロールアップに焦点を当てたOptimismプロジェクトになっています。
2018年に考案されたプラズマの技術的限界(コインの断片化の証明など)は、検討する価値がありません。 2018年のプラズマの言説のピーク以来、ZK-SNARKは拡張に関連するユースケースでより実行可能になりました。 前述したように、ZK-SNARKはすべてを変えました。
Plasmaのコンセプトのより現代的なバージョンは、Starkwareがバリディウムと呼ぶもので、データがオフチェーンに保存されることを除いて、基本的にZKロールアップと同じです。 この構造は、特に集中型サーバーがコードを実行し、その正しい実行を証明する必要がある場合など、多くのユースケースで使用できます。 バリディウムでは、オペレーターは資金を盗むことはできませんが、実装の詳細によっては、オペレーターが姿を消した場合、一部のユーザー資金が滞留する可能性があります。
CEXとDEXの関係は、二項対立とは程遠いものです。 実際、さまざまな形態のハイブリッド集中化など、さまざまなオプションがあり、効率性などのメリットを享受しながら、中央集権的なオペレーターがほとんどの形態の悪用を防ぐための多数の暗号化保護手段を備えています。
ただし、この設計空間の右半分では、ユーザーエラーの処理という根本的な問題について議論する必要があります。 これまでのところ、最も重要なタイプのエラーは、ユーザーがパスワードを忘れたり、デバイスを紛失したり、ハッキングされたり、アカウントにアクセスできなくなったりした場合に何をすべきかということです。
取引所はこの問題に対処できます:まず電子メールの回復を通じて、それが失敗した場合は、KYCによるより複雑な形式の回復を通じて。 しかし、このような問題を解決するためには、取引所がコインを実際に管理する必要があります。 ユーザーアカウントへのアクセスを正当に復元するには、取引所がそれらのアカウントから資金を盗むために悪用される可能性のある力を持っている必要があります。 これは避けられないトレードオフです。
理想的な長期的ソリューションは、ユーザーが緊急事態に対処できるように、マルチシグネチャやソーシャルリカバリーウォレットなどのテクノロジーによって補完されたセルフカストディに依存しています。 しかし、短期的には、2つの明らかな代替ソリューションがあり、それぞれに明らかに異なるコストとメリットがあります。
短期的には、カストディアルとノンカストディアルの2つの異なるカテゴリーの取引所があります。 現在、後者はUniswapのようなDEXに代表されています。 将来的には、ユーザーの資金がバリディウムのスマートコントラクトのようなものに保持される、暗号的に「制約された」CEXも登場するかもしれません。 また、暗号通貨ではなく法定通貨で信頼するセミカストディアル取引所の出現を目撃するかもしれません。
どちらのタイプの取引所も引き続き存在します。 カストディアル取引所のセキュリティを強化するための最も簡単な下位互換性のある方法は、準備金の証明を増やすことです。 これには、資産証明と責任証明の組み合わせが含まれます。 両者の適切に構造化されたプロトコルを開発することは技術的な課題をもたらしますが、両方の分野で可能な限り進歩し、すべての取引所が利益を得られるようにソフトウェアとプロセスをオープンソース化する必要があります。
長期的には、少なくとも暗号通貨に関しては、すべての取引所が非カストディアルになる方向にますます移行することを願っています。 ウォレットの回復は、少額を扱う新規ユーザーや、法的な理由でそのような取り決めを必要とする機関のために存在します。 高度に中央集権的な回復オプションが必要な場合がありますが、これは取引所自体ではなく、ウォレットレベルで行うことができます。 magic.link がPolymarketのようなプラットフォームとやり取りする方法は、このアプローチの一例です。 法定通貨に関しては、従来の銀行システムと仮想通貨エコシステムの間のフローは、USDCのような資産担保型ステーブルコインのローカルな現金流入/流出プロセスによって促進することができます。 ただし、この目標を完全に達成するには時間がかかります。
Balaji Srinivasan氏、Coinbase、Kraken、Binanceのスタッフの皆さん、議論に心から感謝します。