web3暗号通貨ユーザーにとっての主要な課題の1つは、プライバシーの欠如です。すべてのトランザクションが公開台帳上で可視化され、ますますシングルで読みやすいENS名と関連付けられるという事実は、ユーザーが特定の活動を行うことをためらわせる要因であり、またはそれらの活動を行った結果、UXの摩擦が増加する原因となります。たとえば、ホットウォレットからコールドウォレットまたはその逆に資金を移動するだけでも、これが一例です。ユーザーは、コールドウォレットの残高が見えることを望まない場合があり、1つのウォレットが別のウォレットにリンクされることを望まないかもしれません。現在、イーサリアムアドレスはプライベート銀行口座のように機能していないため、誰でもあなたのウォレット、そしてますますあなたのソーシャルアクティビティ(SBT、証明書、さまざまなDAppでの活動など)を見ることができます。これらの理由から、Vitalikはプライバシーを重要な要素の1つとしました。3つの主要な技術的な移行一般ユーザーに有用であるためにイーサリアムが必要とする変革
既存のプライバシーソリューション、例えばTornado Cashを使用することは、いくつかの理由である意味で最適ではありません。まず、ユーザーは正当に中央集権取引所や他のプラットフォームでアドレスがブラックリスト入りすることを心配するでしょう。さらに、Tornado Cashなどのサービスとのやり取りは、非常にユーザーフレンドリーではなく、高度なユーザーにしか向いていません。
ステルスアドレスは、ユーザーにプライベート銀行口座と同等のプライバシーを提供する方法を提供し、理解しやすい方法で実現することができます。さらに、ステルスアドレスに関するイノベーションにより、多くの管轄区域でAML規制に準拠した方法でこれを実現する可能性があります。
WebおよびWeb3ユーザーのプライバシーに対する態度に関する研究は広く利用可能ではありませんが、以下の研究はWeb全体を横断して検索した結果、広く一致し、取引のプライバシーに対する明確な需要があることを示しています。
レールガン印象的な数字を持っており、プロトコルの使用は時間とともに着実に成長しており、2024年11月時点で70億ドルを超えるTVLと200億ドルを超える取引高のピークを記録しています。
TVL (USD) イーサリアムメインのレールガン - ソース:レールガン — DefiLlama
ウンブラ2024年11月時点で、彼らのプロトコルを使用する人々(ステルスアドレスをENSに登録する人々)も着実に増加しており、ほぼ77,000人に達しています。
アンブラ累積登録者数(クロスチェーン) — source: dune.com
最も広く知られている(そして今や不名誉な)プライバシープロトコルであるイーサリアムのTornado cashを見てみると、契約アドレスが技術的にOFACのSDNリストにあるにも関わらず、それはまだかなりの使用が見られます。
以下のチャートは、時間の経過とともにTornado CashのTVLを示しています。2021年10月頃のピークからの最初の大幅なTVLの減少は、仮想通貨市場全体の売り込みと重なっていることが観察されます。2022年8月の2番目の大幅な減少は、OFACがTornado CashをSDNリストに掲載したことに対応し、3番目の大幅な減少は、2022年11月のOFACの再指定に対応しています。それ以降、制裁にもかかわらず、Tornado Cashは着実な成長を遂げており、TVLは約6億ドルに達しています。これは、Ethereumで基本的なトランザクションのプライバシーに対する需要があるというかなり強力な証拠です。
TVL (USD) イーサリアムメインのTornado Cash — 出典:Tornado Cash — DefiLlama
この調査では、本日現在、EVMチェーンの本番環境での主な解決策が4つ特定されました。それらは次のとおりです:
FluidkeyとUmbraはどちらもEthereumの標準に基づいています。
LabyrinthとRailgunは基づいていますゼロキャッシュプロトコル (which zcashまた、ユーザーが資金を預け入れるためのシールドプールを使用するZerocashは、「ノート」という概念を使用しており、これは基本的に価値の暗号的表現を可能にするもので、プライベートな取引を可能にします。各ノートには、隠された値、オーナーキー、およびユニークな番号(無効化子)が含まれており、zk-SNARKsが詳細を明らかにせずに所有権を検証し、ノート内の価値を転送することができます。ノートが使われると、その無効化子が明らかになり、二重支払いを防ぐために、受信者のために新しいノートが作成されます。これにより、シールドプール内でUTXOシステムが形成されます。
高いレベルで、ステルスアドレスは、第三者が存在しなかったアドレスに資金を送金できる基本原則に基づいていますが、意図された受取人がそのことを知り、制御(つまりその後その資金を使えるように)できるという仕組みです。
erc-5564標準では、受信者がステルスメタアドレスを公開し、そこから新しいEthereumアドレスを導出できるメカニズムが指定されています。受信者に資金を送金したい場合、ステルスメタアドレスから新しいアドレスを生成し、直接のコミュニケーションが行われることなく、受信者がこれらの資金について知ることができます。すべてのステルスアドレスの実装はこの基本的な前提に基づいています。
ステルスメタアドレスは実質的に2つの圧縮された公開鍵、つまり「支出鍵」と「閲覧鍵」として言及されるものを連結したものです。ステルスメタアドレスは、EIP-3770チェーン固有のアドレス形式を使用し、「st:」接頭辞の追加があります。次に、ステルスアドレスの例を示します:
st:eth:0x036ffa94a70a5b9608aca693e12da815fe0295f3739c7b22b0284c6d85c464ba4a02c0521b6fe31714b2ca0efa159402574355b754e0b50406b0b5fb33128eec3507
簡単に言うと、このステルスアドレスは通常のイーサリアムアドレス(したがってENS)と関連付けることができ、そのためステルスアドレスの所有者に資金を送信することが容易になります。資金を送信するには、送信者は上記のアドレスを解決し、EIP-5564標準を使用して、一時的な公開鍵を作成し、それからステルスアドレスを導出します。送信者は新しいステルスアドレスに資金を送金し、通常はすべてのステルスアドレスの受信者がイベントを聞くためのシングルトン契約を介して行います。この契約は受信者が購読する「アナウンスメント」イベントを発行します。アナウンスメントイベントが発行されるたびに、受信者はアナウンスメント内の一時的な公開鍵をチェックし、それを閲覧プライベートキーと組み合わせ、ステルスアドレスに送信された資金を使う能力があるかどうかを確認します。もしある場合、使用しているウォレット/クライアントはステルスアドレスとそれに対応する資金を記憶し、ユーザーの表示残高に追加します。実際に資金を使うには、彼らはプライベート支出キーを使用して取引に署名することができます。
以下の図は、プロセスの始めから終わりまでをより明確に説明しています。
このプロセスは完全に非対話的に行われることに注意してください。つまり、送信者と受信者は直接の通信を行わないため、実質的には第三者が観察できる送信者と受信者の間にはまったくリンクがありません。
ただし、これが最初に機能するためには、受信者はそのステルスアドレスを送信者に知らせる必要があります。これを行う一つの方法は、eip-6538 Stealth Meta-Address Registry. これは、ユーザーがステルスメタアドレスを通常のイーサリアムアドレスに登録できるシングルトン契約です。送信者はその後、このアドレスを検索することができます。これにより、送信者はENSから通常のアドレスを解決し、その後、レジストリから関連するステルスメタアドレスを検索できるようになります。
このスキームは、送信者と受信者の間のリンクを断ち切り、彼らに世界中が彼らのビジネスを知ることなくプライバシーを提供します。いくつかの注意点があります:
この記事で探求されているステルスアドレスの4つの実装を比較するためには、さまざまな方法があります。すべての実装には微妙な違いとトレードオフがありますが、おそらく最も重要なポイントは、トレース可能性と価値の曖昧さについてです。
FluidkeyとUmbraの両方は、受信者のアイデンティティとのリンクを断ち切りながら、資金を標準のイーサリアムアドレスに送金することを可能にしますが、トランザクションの追跡可能性は保持されます。つまり、ステルスアドレスのトランザクション履歴を調べることができる誰にでも送信者が見えるということです。これはつまり、ステルスアドレスで資金を受け取った場合、その資金を送る相手はどこから来たのかがわかるということです。さらに、送られる実際の価値もわかります。一方、RailgunとLabyrinthは、送信者と送信される価値を隠しますが、その代わりにこれは通常のトランザクションではなく、単一の契約内で行われるというトレードオフがあります。
この図は、この投稿で見ているプロトコルが、比較の重要な側面でお互いにどのように比較されているかを示しています。
詳細を少し探ってみると、以下は6つの主要なステルスアドレスプロトコルを6つの主要な次元で比較した比較マトリックスです。
| プロトコル | E2Eプライバシー | フォワードシークレシー | オープンスタンダード | モジュラーアーキテクチャ | SDK | 匿名化解除サポート | 金額非表示 |
|—————-|——————-|————————-|————————|———————————|———|—————————————|————————|
| Umbra | ✅ | ⛔️ | ✅ | ⛔️ | ⛔️ | ⛔️ | ⛔️ |
| Fluidkey | ⛔️ | ⛔️ | ✅ | ✅ | soon | ✅ | ⛔️ |
| 迷宮 | ✅ | ✅ | ⛔️ | ✅ | ✅ | ✅ | ✅ |
| Railgun | ✅ | ✅ | ⛔️ | ✅ | ✅ | 自発的 | ✅ |
他のニュアンスや違いのいくつかは、次のセクションで詳しく説明されています。各実装には興味深い微妙な違いがあり、それがあるいはないかは、使用ケースによって異なるかもしれません。
例えば:Fluidkeyでは、すべての送金が直接ステルスアドレスにチェーン上で行われます。一方、Umbraでは、ETHのみがステルスアドレスにチェーン上で送金され、トークンは中央契約に送金されます。そして、RailgunとLabyrinthでは、すべての取引が直接ステルスアドレスではなく、コア契約に送金されます。
FluidkeyFluidkeyは、ユーザーがETHおよびERC-20トークンを送受信、交換、ブリッジすることができるerc-5564の実装です。執筆時点では、FluidkeyはBase、Optimism、Arbitrum、Polygon、Gnosis、およびEthereumメインネット上で展開されています。
ユーザーはFluidkeyのWeb UIを介して操作します。ウォレットを使用して最初にログインすると、鍵生成メッセージに署名し、表示キーと支出キーが派生します。これらの同じキーは、ユーザーがアプリに入るたびに同じ方法で再生成されます。
Fluidkeyは他の実装と異なる点がいくつかあります。Fluidkeyが他のステルスアドレスの実装と異なる方法の1つは、ユーザーがプライベートな閲覧キーをFluidkeyと共有することです(実際には、BIP-32キーの派生ノード(厳密であることを強要する)を生成することで、Fluidkeyはユーザーのためにステルスアドレスを生成し、また、それらのアドレスに支払いを受け取ったときにユーザーに通知することができます。ただし、これはFluidkeyがユーザーの着金取引と残高を表示する立場にあることを意味します。これはトレードオフです。しかし、それでも完全に自己保管です。
Fluidkeyのデザインのもう一つの興味深い側面は、新しいステルスアドレスごとにスマートコントラクトアカウントを展開することです。これは、ステルスアドレスから資金を支出する際にのみ、事実に反する形で行われます。スマートアカウントは1/1のセーフアカウントであり、ガスのスポンサーシップなどの機能を提供し、さまざまなステルスアドレスを簡単に管理することができます。詳細については、彼らのドキュメントに詳細が記載されています。技術的なウォークスルー.
Fluidkeyには、ユーザーのアカウントへの可視性を保持するトレードオフがありますが、これは実際にはコンプライアンスにおいて潜在的な利点となる場合があります。ただし、Fluidkeyが将来的に潜在的な法執行要請などにどのように対処するかの具体的なフレームワークはまだ公には公開されていません。ただし、彼らはスイスに拠点を置いており、地元の法律に従う必要がありますが、データ保護法は非常に明確かつ強力です。データを共有するには非常に明確なケースが必要であり、また裁判所で審査される必要があります。この投稿を見るスイスのプライバシー法に関する優れた概要をご覧ください)。
ユーザーは、トランザクションをエクスポートするか、表示キーを第三者(たとえば、会計士)と共有することも自由です。これは特にビジネスにとって非常に便利です。ただし、erc-5564仕様では、公開鍵の共有は「すべてまたは何も」であり、単独の個々のトランザクションを単独で明らかにすることはできません。また、erc-5564のすべての実装と同様に、トレース可能性は維持されており、ユーザーに対するリンク性のみが失われているため、各ステルスアドレスのトランザクション履歴は表示キーを持つ人物に公開されます。これらのトレードオフを緩和するFluidkeyのあまり知られていない機能の1つは、表示キーの回転機能です。これにより、ユーザーは毎月新しい表示キーを使用し、特定の月のビューアクセスのみを第三者と共有することができます。
Fluidkeyのアプローチの素晴らしい利点の1つは、ステルスアドレス自体が送信者によって生成されるのではなく、Fluidkey自体が疑似ランダムに生成されるたびにENSがクエリされます。これにより、ユーザーは受信者であるトランザクションを特定するためにアナウンスメントイベントをスキャンする必要がなくなり、処理がはるかに迅速になります。これはまた、送信者が受信者のためにステルスアドレスを生成するためにステルスアドレスウォレットが必要ないことを意味します。彼らは他のアドレスに資金を送金するようにアドレスに送金するだけで済みます。これはまた、Fluidkeyの設計には関連する登録契約がないことを意味し、大きな利点となっています。
Fluidkeyは完全に自己保管にコミットしており、Stealth Account Kitライブラリをオープンソース化しています。また、Fluidkeyが一夜にして消えてしまうという考えに備え、複数の独自に開発されたリカバリーインターフェースも利用可能です。これにより、資金がロックされたり立ち往生することはありません。
アドレス抽象化
スマートコントラクトアカウントをカウンターファクチュアルに使用することで、Fluidkeyは個々のステルスアドレスの管理を自動的に抽象化できます。つまり、さまざまなステルスアドレスの残高から特定の受信者に特定の金額を送金したい場合、Fluidkeyは送金のためにどの組み合わせのアドレスを使用するかを自動的に把握し、すべてのガスコストと契約展開を処理し、すべて裏で行います。Fluidkeyはまた、ユーザーがラベルと呼ばれるクールな機能を使用して、どのアドレスを組み合わせるかに一定の制御を行うことも可能です。この機能により、ユーザーはアドレスを異なるカテゴリにタグ付けすることができます。
ENS 解決
Fluidkeyは、Fluidkeyに特化したENS名をユーザーに作成するよう要求します。これらの静的な名前は2つの形式を取ります: username.fkey.idとusername.fkey.eth。1つは、誰かに資金を送信するためのWebインターフェースへのURLであり、もう1つはウォレットで使用できる標準のENS名です。
ENSのセットアップは、ENS オフチェーンリゾルバー (aka erc-3668: CCIP 読み取り)を返すために使用されます。オフチェーンのリゾルバがクエリされるたびに、対応するENS名の新しいステルスアドレスを生成して返します。これは便利な機能であり、ユーザーは単一の人間が読めるENS名を持つことができる一方で、生成されたステルスアドレスはENS名と関連付けることはできないため、プライバシーが保持されます。
コスト
Fluidkeyは無料で利用でき、手数料はかかりません。ただし、資金を使いたいアドレスごとにSafeコントラクトを展開するコストが発生します。ただし、メインネットでは比較的高価ですが、L2では非常に小さいため、複数のステルスアドレスを1つの転送に組み合わせても、通常1セント未満です。
彼らはまた、セーフデプロイメントを通じてガスのスポンサーシップも行うことができます。彼らはガスの費用を計算し、それをユーザーの残高から差し引きます。これはトークンであっても有効です。この場合、リレーヤーがユーザーの代わりにセーフを展開し、トークンを転送します。
ウンブラはEIP-5564 + EIP6538の実装です。ScopeliftユーザーがUmbraアプリにログインすると、セットアップフェーズを経て、メッセージに署名し、そこから支出とビューキー、およびそれに対応するステルスメタアドレスが派生します。その後、このステルスメタアドレスをオンチェーンのレジストリにメインウォレットアドレスに登録します。これがFluidkeyとの実装の違いです。
Umbraのerc-5564の実装は、ユーザーの鍵にアクセスできないという点で、仕様に最も近いものです。これは、Umbra(または他の誰か)がユーザーの資金を見ることができないことを意味しますが、これは、資金が送金されるためには、送信者がステルスメタアドレスを生成するためにerc-5564互換のウォレット(またはUmbraアプリ)を持っている必要があることを意味します。
誰かが欲しいと思うとき送信するユーザーに資金を送る場合、通常、Umbraアプリを使用します。基本的に、UmbraアプリはENS名/ウォレットアドレスに登録されたステルスメタアドレスを検索し、ステルスアドレスを生成します。受信者はUmbraアプリにログインし、最後にログインした時点以降に彼らに属するステルスアドレスに送信された資金をスキャンすることができます。クレバーなキャッシングのおかげで、週次スキャンにはわずか10~15秒しかかかりませんが、ユーザーはスキャンを狭めるためにオプションでブロックの範囲を指定することもできます。Umbra v2では、viewtagsの使用も含まれ、プロセスのスピードアップがさらに図られます。
リレーア
ステルスアドレスに関する1つの問題は、ステルスアドレスに送信された資金を受信者が使用するためには、そのアドレスにETHまたは他の必要なガストークンが必要であるということです。ほとんどのネットワークでは、ステルスアドレスに最初にETHが送信された場合、通常は問題ありません。ただし、ステルスアドレスにerc-20トークンまたはNFTが送信された場合、ガス料金を支払うためにETHでアドレスに資金を提供する行為は、そのアドレスをユーザーの他のアドレスにリンクさせ、プライバシーを削除する可能性があります。
これを回避するために、Umbraはリレーを使用した構築を行います。ETH以外の資産がUmbraユーザーに送信される場合、ステルスアドレスに直接送信される代わりに、特別な契約に送信されます。ユーザーは、Umbraのリレーにメタトランザクション(Umbraアプリから)を送信して、ステルスアドレスに送信された資金を自分自身の代わりにスマートコントラクトから転送できます。リレーは、ガス料金の費用をカバーするためにいくつかのトークンを差し引きます。最初にサポートされるトークン数には制限があります。
コスト
また、Umbraのコントラクトでは、スパムを阻止するために、取引手数料の低いネットワークで資金を送金する際に少額の手数料が適用されます。その理論的根拠は、スパムは関連するトランザクションを特定するためにトランザクションをスキャンするコストを増加させるため、これは許容できるトレードオフと見なされるということです。
サポートされているネットワーク
アンブラは現在、イーサリアムメインネット、Optimism、Polygon、Gnosis Chain、およびArbitrumに展開されています。
Umbraの登録契約は興味深いデザインを持っています。デプロイメントメソッドはcreate2と標準的なcreate2 deployerを使用し、スマートコントラクトアドレスはどのネットワークでも同じです。これはつまり、契約が特定のネットワークに存在する場合、クライアントはそれが正しい契約であることを確信することができます。クライアントはネットワークを追加するように設定することができ、誰でもどのネットワークにでもデプロイすることができます。彼らはバイトコードを正規化し、契約にはオーナーがいないため、誰でもどのチェーンでも登録とアナウンス契約を許可なくデプロイすることができます。
Umbra v2
Scopeliftは現在開発中ですバージョン2のウンブラ, コア契約をサポートするために拡張できる新しいモジュラーアーキテクチャを導入します。この新しいアーキテクチャを使用すると、サードパーティの開発者は任意のトークン規格(例:erc-1155、erc-7621、erc-4337のペイマスターのサポートなど)のためのモジュールを構築できます。現在、Umbraコア契約はETHおよびerc-20の2つのシナリオをサポートしています。V2では、さまざまなシナリオをサポートします。
迷宮イーサリアムを基にしないプロトコルですが、ゼロ知識証明を使用してトランザクションに匿名性とプライバシーを追加します。Labyrinthのホワイトペーパーでは、「zkFi」というミドルウェアとして説明されており、「zkFiは、組み込みのコンプライアンスを備えたプライバシーミドルウェアとして機能するパッケージ化されたソリューションを提供します。組み込みのコンプライアンスは、Labyrinthの「選択的な匿名解除」と呼ばれる洗練されたソリューションを指し、特定の認可されたアクター(例:国際刑事警察機構などの法的機関)に対して特定のトランザクションを匿名解除することを可能にし、透明性と公開性を維持します。
Labyrinthが使用するコアスマートコントラクトには、ユーザーが1つの取引で複数の資産を取引できるマルチトランザクションおよびマルチアセットプールが含まれています。資産を使うために、ユーザーはネットワークをスキャンし、暗号化されたノートデータを取得し、ノートを復号化し、使用したい資産にフィルタリングします。その後、ユーザーは取引と、使用したい取引からのノートに関連付けられた署名を含むZKPを作成します。
Labrynthのコア契約の一部には、モジュラープロキシ契約にインターフェイスするコンバーター契約が含まれており、これらは基本的に外部契約へのプロキシです。たとえば、ユーザーがUniswapとやり取りするためにLabrynthを使用したい場合、ユーザーは、コンバーター契約を使用してUniswapのプロキシ契約経由でUniswapプールでのスワップ操作を呼び出すトランザクションを作成することになります。
LabyrinthのzkFiプロトコルは、「ノート」を使用して残高と転送を追跡します。ノートは、ある資産の一部とその所属アドレスを説明するデータ構造です。クライアントは、ノートを再作成するために必要な情報を保存し、これを使用して資産を使用します。ノートへのコミットメント(資産ID、所有者、および値のハッシュ)は、オンチェーンのメルクルツリーに格納されます。実際に、Labyrinthでは、ノート用とルートアドレス用の2つのメルクルツリーを使用しています。
ノートデータ構造には次のものが含まれています:
上記のデータ構造には、資産の所有者に関する参照が含まれていないことに気付くでしょう。これは奇妙です。なぜなら、メモリツリーに記録されたコミットメントは、資産ID、値、所有者のハッシュであり、実際の所有者はルートアドレス、リボーカー、およびランダムなブラインディングファクターから計算されるからです。したがって、外部の観察者にとっては、所有者は実際には新しく作成されたアドレスです。
シールドプール
Labyrinthの本当に興味深い点は、バニラのステルスアドレスベースのプロトコルとは異なり、資産プールが実際にはシールドされたプールであることであり、ノートの概念を使用して、トランザクションに先読み保密性を提供するようなシールドされたUTXOプールを作成します。 EIP-5564の実装では、ユーザーが資金を送金する相手は、その資金の出所を見ることができます。つまり、Aliceがステルスアドレスを使用してBobに支払いを行い、BobがCharlieに支払いを行った場合、Charlieは最初にBobがAliceから資金を受け取ったことを見ることができます。これはLabyrinthのシールドされたプールではありません。
このシールドされたプールがどのように機能するかを理解するには、プロトコル内で資金がどのように移動されるかを見る必要があります:
ユーザーのシールドプールの残高は、対応するアセットのノートの合計です。これらのノートを使用するには、ユーザーはそれらのノートの「nullifiers」を公開する必要があります。nullifierはノートに固有のものであり、ノートが使用されると、二重支払いを防ぐためにnullifierはマークされ、その使用済みのノートから新しいノートが作成されます。同じアセットの複数のノートを組み合わせることもでき、複数の新しいノートを作成することもできます。nullifierは単純に(𝑙, 𝑐, 𝛿)のハッシュです。ここで、𝑙はノートコミットメントのインデックスであり、𝑐はコミットメント、𝛿はブラインディングファクターとも呼ばれるランダムな要素です。
ステルストランザクション転送の受信者は、eip-5564と同じ手段で転送を識別します。つまり、彼らはコア契約から発行されたイベントを監視し、どのステルスアドレスから資金を送信できるかをローカルに記録します。受信資金の識別は、ビュータグの利用と、アプリのライフタイム中にノートの非同期的なローカルキャッシュと同期を利用して、より迅速に行われます。
受け取った資金を発見するプロセスをより高速化するための研究が進行中です。たとえば、Aztecの提案を参考にしてください。Request for Proposals: ノートディスカバリープロトコル — Aztec.
資金を使うためには、ユーザーはzk-proofを生成する必要もありますが、基本的には通常のEthereumアドレスであるerc-6654の実装とは異なります。プルーフを生成するには、パフォーマンスが比較的良好な互換性のあるウォレットが必要で、中程度のAndroidデバイスでは約20秒程度かかります。
バンドラーとコンバーター
Labyrinthが提供する素晴らしい機能には、ステルス取引の痛みを解消するものがいくつかあります。 Labyrinthコア契約に送信されたトランザクションは、erc-4337バンドラーを介してユーザーオペレーションとして送信されます。この設定により、ユーザーはトランザクションにETHを必要とせず、ガストークンを必要とせずにノートを支出できます。また、ユーザーはerc-4337ペイマスターを利用して自分の代わりにガス料金を支払うことができ、これによりさらにプライバシーのレイヤーが追加されます。ただし、最初の入金はuseropとして送信されない唯一の例外です。このer-4337ペイマスターの使用により、転送される資産でガス料金を支払うこともできるため、erc-20トークンであってもガス料金オラクルAPIを公開しています。
Labyrinthのもう1つの非常に素晴らしい機能は、コンバータ契約がサードパーティのdappsへのプロキシとして機能するモジュラーアーキテクチャです。これにより、ユーザーはステルストランザクションを使用して資金を転送するだけでなく、Uniswap、Aave、LidoなどのDEXなどのサードパーティのdappsともやり取りすることができます。これらのプロキシ「コンバータ」契約は、基になるロジックがいくつかのサードパーティ契約に存在するため、いくらかの資産が入力され、いくらかの資産が出力される関数を実装しています。
コンプライアンスソリューション
Labyrinthは、選択的匿名化解除(SeDe)と呼ばれるフレームワークを通じて、コンプライアンスと規制の遵守を保証します。
メモのデータ構造には「revoker」というフィールドが含まれていることを思い出してください。取り消し者は、匿名化解除のプロセスを開始できる特定のエンティティのアドレスです。ユーザーは、事前定義されたリストから少なくとも 1 つのリボーカーを選択する必要があります。取り消し者は、違法または違法な可能性のある活動を特定する責任を単独で負うのではなく、法執行機関からの要求に対応することができます。
取り消し者は、取引を直接匿名化解除する一方的な能力を持っていませんが、匿名化解除の要求を開始する責任があります。これらの要求は、プライバシーとコンプライアンスを監督する団体の委員会であるガーディアンに公開されます。ガーディアンは、取引の匿名化を解除する許可を与えるかどうかについて投票することにより、要求に応答する必要があります。ガーディアンが定足数に達して賛成票を投じることができれば、取り消し者はトランザクションデータを復号化し、トランザクションチェーンが完全に匿名化解除されるまで、問題のトランザクションを以前のトランザクションにリンクすることができます。
このシステムは、ガーディアンが取引データを単独で公開することを一方的に決定することはできず、また、彼らが共謀しても、リボーカーなしでは何もできません。また、リボーカーだけではガーディアンの多数決によって何もできません。
レールガンイーサリアム、BSC、Polygon、およびArbitrumに展開されたステルス取引プライバシーシステムです。このプロトコルは、ノートに基づいており、ノートはコミットメントとしてMerkleツリーに格納され、UTXOセットを形成します。つまり、ノートは他の受信者のために新しいノートを作成することで支出できます。ノートを支出するには、そのノートのためのヌリファイアが状態に追加され、二重支出が防止されます。ノートの所有者だけがそのノートのヌリファイアを計算できます。これは支出キーのハッシュとMerkleツリー上のノートのインデックスに基づいており、そのノートの所有者だけがそれを支出できます(そして一度だけ支出できます)。
Railgunのステルスメタアドレスは、「0zk」の接頭辞を使用し、eip-5564と同様に、公開閲覧キーと公開支出キーの連結です。ただし、RailgunではECDSAおよびsecp256k1の代わりに、BabyJubJub曲線上のEd25519キーを使用しています。eip-5564と同様に、ユーザーはRailgun契約から発行されるすべてのイベントをスキャンし、彼らの閲覧キーを使用して、どのイベントが彼らのウォレットへの転送を表しているかを判断します。
Railgunは、基本的にユーザーからのメタトランザクションを受け入れ、実際のトランザクションをそれぞれのブロックチェーンにブロードキャストし、ユーザーに代わってガス料金を支払うリレイヤーである放送局のネットワークを使用しています。Railgunの契約との直接的なやり取りは、この放送局のネットワークから行われ、エンドユーザーの匿名性が保護されます。ユーザーからブロードキャスターに送信されるトランザクションは、特定のブロードキャスターの公開鍵に暗号化され、Wakuプロトコル.
Railgunは、外部スマートコントラクトとの相互作用を可能にするモジュラーアーキテクチャを持っており、単純なトランスファーを超えた機能を提供します。これは、AdaptRelayコントラクトを介して行われます。このコントラクトは、外部コントラクトとの相互作用前後にトークンを保護および解除します。例えば、トークンAを解除し、あるAMMでトークンBと交換し、トークンBを元のオーナーに保護します。
バージョン3では、Railgunはeip-4337を活用し、レガシーメタトランザクションもサポートする予定です。Railgunの専用eip-4337ユーザーオプメンプールを維持することにより、独立したソルバーが放送者として参加できることを期待しています。現在、Umbraと協力してこれを研究し、エッジケースとそれらに対処する方法を特定しています。詳細については、以下のセクション「Railgun v3」を参照してください。
料金
Railgunプロトコルでは、預入金および引き出しに0.25%の手数料がかかります。これらの手数料はDAOの財務に送られ、RAILガバナンストークンのステーカーに時間経過で支払われます。0.25%の預入金および引き出し手数料に加えて、放送者は通常、実際のオンチェーントランザクションのガス手数料の約10%に相当する独自の手数料も適用します。
ガバナンス
Railgunには、どのような提案でも提出できるガバナンスシステムがあり、トレジャリーおよびガバナンス契約を含むいかなるコア契約の変更もDAOの提案なしには行われません。異例なことに、Railgunの別々のインスタンスには独自のガバナンスシステムとトークンがあります。たとえば、イーサリアム、Polygon、およびバイナンスチェーン上のRailgunには、それぞれ独自のガバナンスシステムとトークンがあります。
SDKとCookbook
Railgunは、ウォレットやDAppの開発者がRailgunをサポートすることでステルスアドレス機能を組み込むために使用できる包括的でよくドキュメント化されたSDKを提供しています。Railgunには、コミュニティによって維持されているものもあります。料理本Railgunを使用して、dapp開発者がRailgunを使用してユーザーが彼らのdappとやり取りできるモジュールを提供する「レシピ」を使用します。たとえば、開発者は、Railgun内のトークン残高を持つユーザーがトークンをプライベートに交換できるDEXのためのレシピを書くことができます。
RailGun v3
Railgunの次のバージョンでは、トランザクションが約50%〜60%安くなります。バージョン3の他の変更点は、専用のメンプールを介してeip-4337 useropsのサポートに移行することです。また、v3では、意図に基づいたアーキテクチャのサポートも提供されます。これにより、ソルバーが最良の実行を競うことができますが、詳細は執筆時点では非常に高レベルです。彼らは現在、と協力しています。CowSwapこれについて、事前フックと事後フックを使用して、ソルバーが資金にアクセスできるようにすることを計画しています。
レールガン コネクト
提案されている中でおそらく最も興味深い変更は、Railgun Connectと呼ばれるもので、これはWalletConnectと似たツールとして説明されており、これにより0zkアドレスを使用して、特定のdappsがカスタムモジュールを介してRailgunと明示的に統合することなく、ほとんどのフロントエンドに接続できるようになります。
Railgun Connectはブラウザ拡張機能であり、実際には内部でHardHatを使用してチェーンの状態をローカルにフォークし、独自のWeb3プロバイダーをdappに挿入し、ローカルのHardHatバージョンのチェーンのRPCエンドポイントを使用します。これにより、通常どおりにdappsコントラクトとのインタラクションを実行し、トランザクションを記録し、それらをバッチ処理してスナークプルーフを作成し、これを実際のチェーン上の実際のRailgunコントラクトに送信することができます。この説明は少し単純化しすぎていますが、一般的な考え方を伝えています。これにより、基本的にほぼすべてのdappと対話できます(追加のオフチェーン処理を行うdappsのエッジケースもあります)。注意点は、チェーンの状態をローカルに保存するのは重い操作ですが、一度行うと、通常のウォレットを使用する場合との違いを感じることなく、Railgunのステルスアドレスを使用してdappsを操作できることを意味します。
イーサリアムプロトコルにはステルスアドレスを確立するための興味深い提案がいくつかあります。例えば、IncoIncoは、通常のerc-20契約を包むerc-20「ラッパー」のアイデアを使用し、すべての残高を暗号化します。転送と承認は、完全同型暗号化を介して暗号化された状態で実行されます。Incoは、現在は独自のネットワーク上でのみ存在するプリコンパイルに依存していますが、将来的にはEthereumにも導入されるかもしれません。
もう1つの提案は「」と呼ばれていますEIP-7503: ゼロ知識ワームホールこれは「proof-of-burn」というデザインに基づいていますが、これはあまり注目されていないようです。おそらく、EVMの更新が必要であり、その更新がなければ、トークンレベルでのみ実装でき、特にeip-7503をサポートするerc-20デザインを使用することができます(またはL2が自分たちのEVMオペコードにサポートを追加することを決定した場合)。
アステカおそらく、最も洗練されたプライバシーテクノロジーの1つですが、使用するにはユーザーがAztecに資金を架け橋する必要があります。これは、多くのユーザーにとって受け入れがたいUXかもしれません。ただし、Ethereumユーザーの間で基本的な取引プライバシーへの需要が高まる場合、Aztecは、デフォルトでプライバシーが提供されるプラットフォームに移行するdappsやユーザーにとって非常に価値のあるL2となるかもしれません。
同様に、Intmax(整数)イーサリアムL2(プラズマ設計に基づく)は、プライバシーに焦点を当てたものであり、ZKPベースのAML証拠を通じて個々の資金の正統性を検証し、取引金額に制限を課すことで規制に準拠しています。Intmaxは送金のプライバシーを提供することには制限があり、EVMスマートコントラクト操作はプライベートではありません。ただし、Aztecとは異なり、スマートコントラクトはSolidityで書くことができます。これは、開発者によって好まれる場合があります(ユースケースに応じて)。
ウォレットサポート
ステルスアドレスプロトコルの採用拡大が見られる一方で、まだいくつかの課題が残っています。最も重要な課題は、メインストリームのEthereumウォレットで完全にサポートされていないことです(まだですが)。メインストリームのウォレットは、ステルスアドレスのサポートを提供する場合、いくつかの選択肢を考える必要があります。これらの選択肢には、以下のようなものがあります:
ユーザーのプライバシーの衛生状態を改善する余地もあります。この論文をご覧ください: “イーサリアム上のUmbraステルスアドレススキームの匿名性分析イーサリアムメインネット上でステルス取引の48.5%を成功裏に匿名解除した方法について、プロトコルとは何の関係もなく、プライバシーの衛生面に関するものであった。たとえば、ユーザーが自分がコントロールするステルスアドレスに資金を送り、それらの資金を元のアドレスに誤って返送し、トレーサビリティが破られたと思い込むことが挙げられます。全体的に、著者らはステルスアドレス取引を匿名解除するために使用できる6つの異なるヒューリスティックスを特定しましたが、ほとんどが最善の慣行に従わないことを基盤としています。しかし、これらは改善すべき重要なUXの問題です。
全体として、私はステルスアドレスとイーサリアムのプライバシー全般についてかなり強気です。私たちはかなり目覚ましい進歩を遂げたと思いますし、修正可能な課題もいくつか見つかりました。主流のウォレットは、ユーザーが最小限の摩擦と思考でステルスアドレスを使用でき、ユーザーが期待し、それに値する通常のレベルのプライバシーを提供するステルスアドレスのサポートレベルを提供する方法を見つけ出すと確信しています。
イーサリアムに大きな影響を与えるであろう、このポストで話した4つのプロトコルを含む、ステルスアドレスインフラを研究し構築するために時間と努力を捧げたすべてのチームに大きなシャウトアウト!彼らの努力と粘り強さは、イーサリアムに大きな違いをもたらすでしょう!
web3暗号通貨ユーザーにとっての主要な課題の1つは、プライバシーの欠如です。すべてのトランザクションが公開台帳上で可視化され、ますますシングルで読みやすいENS名と関連付けられるという事実は、ユーザーが特定の活動を行うことをためらわせる要因であり、またはそれらの活動を行った結果、UXの摩擦が増加する原因となります。たとえば、ホットウォレットからコールドウォレットまたはその逆に資金を移動するだけでも、これが一例です。ユーザーは、コールドウォレットの残高が見えることを望まない場合があり、1つのウォレットが別のウォレットにリンクされることを望まないかもしれません。現在、イーサリアムアドレスはプライベート銀行口座のように機能していないため、誰でもあなたのウォレット、そしてますますあなたのソーシャルアクティビティ(SBT、証明書、さまざまなDAppでの活動など)を見ることができます。これらの理由から、Vitalikはプライバシーを重要な要素の1つとしました。3つの主要な技術的な移行一般ユーザーに有用であるためにイーサリアムが必要とする変革
既存のプライバシーソリューション、例えばTornado Cashを使用することは、いくつかの理由である意味で最適ではありません。まず、ユーザーは正当に中央集権取引所や他のプラットフォームでアドレスがブラックリスト入りすることを心配するでしょう。さらに、Tornado Cashなどのサービスとのやり取りは、非常にユーザーフレンドリーではなく、高度なユーザーにしか向いていません。
ステルスアドレスは、ユーザーにプライベート銀行口座と同等のプライバシーを提供する方法を提供し、理解しやすい方法で実現することができます。さらに、ステルスアドレスに関するイノベーションにより、多くの管轄区域でAML規制に準拠した方法でこれを実現する可能性があります。
WebおよびWeb3ユーザーのプライバシーに対する態度に関する研究は広く利用可能ではありませんが、以下の研究はWeb全体を横断して検索した結果、広く一致し、取引のプライバシーに対する明確な需要があることを示しています。
レールガン印象的な数字を持っており、プロトコルの使用は時間とともに着実に成長しており、2024年11月時点で70億ドルを超えるTVLと200億ドルを超える取引高のピークを記録しています。
TVL (USD) イーサリアムメインのレールガン - ソース:レールガン — DefiLlama
ウンブラ2024年11月時点で、彼らのプロトコルを使用する人々(ステルスアドレスをENSに登録する人々)も着実に増加しており、ほぼ77,000人に達しています。
アンブラ累積登録者数(クロスチェーン) — source: dune.com
最も広く知られている(そして今や不名誉な)プライバシープロトコルであるイーサリアムのTornado cashを見てみると、契約アドレスが技術的にOFACのSDNリストにあるにも関わらず、それはまだかなりの使用が見られます。
以下のチャートは、時間の経過とともにTornado CashのTVLを示しています。2021年10月頃のピークからの最初の大幅なTVLの減少は、仮想通貨市場全体の売り込みと重なっていることが観察されます。2022年8月の2番目の大幅な減少は、OFACがTornado CashをSDNリストに掲載したことに対応し、3番目の大幅な減少は、2022年11月のOFACの再指定に対応しています。それ以降、制裁にもかかわらず、Tornado Cashは着実な成長を遂げており、TVLは約6億ドルに達しています。これは、Ethereumで基本的なトランザクションのプライバシーに対する需要があるというかなり強力な証拠です。
TVL (USD) イーサリアムメインのTornado Cash — 出典:Tornado Cash — DefiLlama
この調査では、本日現在、EVMチェーンの本番環境での主な解決策が4つ特定されました。それらは次のとおりです:
FluidkeyとUmbraはどちらもEthereumの標準に基づいています。
LabyrinthとRailgunは基づいていますゼロキャッシュプロトコル (which zcashまた、ユーザーが資金を預け入れるためのシールドプールを使用するZerocashは、「ノート」という概念を使用しており、これは基本的に価値の暗号的表現を可能にするもので、プライベートな取引を可能にします。各ノートには、隠された値、オーナーキー、およびユニークな番号(無効化子)が含まれており、zk-SNARKsが詳細を明らかにせずに所有権を検証し、ノート内の価値を転送することができます。ノートが使われると、その無効化子が明らかになり、二重支払いを防ぐために、受信者のために新しいノートが作成されます。これにより、シールドプール内でUTXOシステムが形成されます。
高いレベルで、ステルスアドレスは、第三者が存在しなかったアドレスに資金を送金できる基本原則に基づいていますが、意図された受取人がそのことを知り、制御(つまりその後その資金を使えるように)できるという仕組みです。
erc-5564標準では、受信者がステルスメタアドレスを公開し、そこから新しいEthereumアドレスを導出できるメカニズムが指定されています。受信者に資金を送金したい場合、ステルスメタアドレスから新しいアドレスを生成し、直接のコミュニケーションが行われることなく、受信者がこれらの資金について知ることができます。すべてのステルスアドレスの実装はこの基本的な前提に基づいています。
ステルスメタアドレスは実質的に2つの圧縮された公開鍵、つまり「支出鍵」と「閲覧鍵」として言及されるものを連結したものです。ステルスメタアドレスは、EIP-3770チェーン固有のアドレス形式を使用し、「st:」接頭辞の追加があります。次に、ステルスアドレスの例を示します:
st:eth:0x036ffa94a70a5b9608aca693e12da815fe0295f3739c7b22b0284c6d85c464ba4a02c0521b6fe31714b2ca0efa159402574355b754e0b50406b0b5fb33128eec3507
簡単に言うと、このステルスアドレスは通常のイーサリアムアドレス(したがってENS)と関連付けることができ、そのためステルスアドレスの所有者に資金を送信することが容易になります。資金を送信するには、送信者は上記のアドレスを解決し、EIP-5564標準を使用して、一時的な公開鍵を作成し、それからステルスアドレスを導出します。送信者は新しいステルスアドレスに資金を送金し、通常はすべてのステルスアドレスの受信者がイベントを聞くためのシングルトン契約を介して行います。この契約は受信者が購読する「アナウンスメント」イベントを発行します。アナウンスメントイベントが発行されるたびに、受信者はアナウンスメント内の一時的な公開鍵をチェックし、それを閲覧プライベートキーと組み合わせ、ステルスアドレスに送信された資金を使う能力があるかどうかを確認します。もしある場合、使用しているウォレット/クライアントはステルスアドレスとそれに対応する資金を記憶し、ユーザーの表示残高に追加します。実際に資金を使うには、彼らはプライベート支出キーを使用して取引に署名することができます。
以下の図は、プロセスの始めから終わりまでをより明確に説明しています。
このプロセスは完全に非対話的に行われることに注意してください。つまり、送信者と受信者は直接の通信を行わないため、実質的には第三者が観察できる送信者と受信者の間にはまったくリンクがありません。
ただし、これが最初に機能するためには、受信者はそのステルスアドレスを送信者に知らせる必要があります。これを行う一つの方法は、eip-6538 Stealth Meta-Address Registry. これは、ユーザーがステルスメタアドレスを通常のイーサリアムアドレスに登録できるシングルトン契約です。送信者はその後、このアドレスを検索することができます。これにより、送信者はENSから通常のアドレスを解決し、その後、レジストリから関連するステルスメタアドレスを検索できるようになります。
このスキームは、送信者と受信者の間のリンクを断ち切り、彼らに世界中が彼らのビジネスを知ることなくプライバシーを提供します。いくつかの注意点があります:
この記事で探求されているステルスアドレスの4つの実装を比較するためには、さまざまな方法があります。すべての実装には微妙な違いとトレードオフがありますが、おそらく最も重要なポイントは、トレース可能性と価値の曖昧さについてです。
FluidkeyとUmbraの両方は、受信者のアイデンティティとのリンクを断ち切りながら、資金を標準のイーサリアムアドレスに送金することを可能にしますが、トランザクションの追跡可能性は保持されます。つまり、ステルスアドレスのトランザクション履歴を調べることができる誰にでも送信者が見えるということです。これはつまり、ステルスアドレスで資金を受け取った場合、その資金を送る相手はどこから来たのかがわかるということです。さらに、送られる実際の価値もわかります。一方、RailgunとLabyrinthは、送信者と送信される価値を隠しますが、その代わりにこれは通常のトランザクションではなく、単一の契約内で行われるというトレードオフがあります。
この図は、この投稿で見ているプロトコルが、比較の重要な側面でお互いにどのように比較されているかを示しています。
詳細を少し探ってみると、以下は6つの主要なステルスアドレスプロトコルを6つの主要な次元で比較した比較マトリックスです。
| プロトコル | E2Eプライバシー | フォワードシークレシー | オープンスタンダード | モジュラーアーキテクチャ | SDK | 匿名化解除サポート | 金額非表示 |
|—————-|——————-|————————-|————————|———————————|———|—————————————|————————|
| Umbra | ✅ | ⛔️ | ✅ | ⛔️ | ⛔️ | ⛔️ | ⛔️ |
| Fluidkey | ⛔️ | ⛔️ | ✅ | ✅ | soon | ✅ | ⛔️ |
| 迷宮 | ✅ | ✅ | ⛔️ | ✅ | ✅ | ✅ | ✅ |
| Railgun | ✅ | ✅ | ⛔️ | ✅ | ✅ | 自発的 | ✅ |
他のニュアンスや違いのいくつかは、次のセクションで詳しく説明されています。各実装には興味深い微妙な違いがあり、それがあるいはないかは、使用ケースによって異なるかもしれません。
例えば:Fluidkeyでは、すべての送金が直接ステルスアドレスにチェーン上で行われます。一方、Umbraでは、ETHのみがステルスアドレスにチェーン上で送金され、トークンは中央契約に送金されます。そして、RailgunとLabyrinthでは、すべての取引が直接ステルスアドレスではなく、コア契約に送金されます。
FluidkeyFluidkeyは、ユーザーがETHおよびERC-20トークンを送受信、交換、ブリッジすることができるerc-5564の実装です。執筆時点では、FluidkeyはBase、Optimism、Arbitrum、Polygon、Gnosis、およびEthereumメインネット上で展開されています。
ユーザーはFluidkeyのWeb UIを介して操作します。ウォレットを使用して最初にログインすると、鍵生成メッセージに署名し、表示キーと支出キーが派生します。これらの同じキーは、ユーザーがアプリに入るたびに同じ方法で再生成されます。
Fluidkeyは他の実装と異なる点がいくつかあります。Fluidkeyが他のステルスアドレスの実装と異なる方法の1つは、ユーザーがプライベートな閲覧キーをFluidkeyと共有することです(実際には、BIP-32キーの派生ノード(厳密であることを強要する)を生成することで、Fluidkeyはユーザーのためにステルスアドレスを生成し、また、それらのアドレスに支払いを受け取ったときにユーザーに通知することができます。ただし、これはFluidkeyがユーザーの着金取引と残高を表示する立場にあることを意味します。これはトレードオフです。しかし、それでも完全に自己保管です。
Fluidkeyのデザインのもう一つの興味深い側面は、新しいステルスアドレスごとにスマートコントラクトアカウントを展開することです。これは、ステルスアドレスから資金を支出する際にのみ、事実に反する形で行われます。スマートアカウントは1/1のセーフアカウントであり、ガスのスポンサーシップなどの機能を提供し、さまざまなステルスアドレスを簡単に管理することができます。詳細については、彼らのドキュメントに詳細が記載されています。技術的なウォークスルー.
Fluidkeyには、ユーザーのアカウントへの可視性を保持するトレードオフがありますが、これは実際にはコンプライアンスにおいて潜在的な利点となる場合があります。ただし、Fluidkeyが将来的に潜在的な法執行要請などにどのように対処するかの具体的なフレームワークはまだ公には公開されていません。ただし、彼らはスイスに拠点を置いており、地元の法律に従う必要がありますが、データ保護法は非常に明確かつ強力です。データを共有するには非常に明確なケースが必要であり、また裁判所で審査される必要があります。この投稿を見るスイスのプライバシー法に関する優れた概要をご覧ください)。
ユーザーは、トランザクションをエクスポートするか、表示キーを第三者(たとえば、会計士)と共有することも自由です。これは特にビジネスにとって非常に便利です。ただし、erc-5564仕様では、公開鍵の共有は「すべてまたは何も」であり、単独の個々のトランザクションを単独で明らかにすることはできません。また、erc-5564のすべての実装と同様に、トレース可能性は維持されており、ユーザーに対するリンク性のみが失われているため、各ステルスアドレスのトランザクション履歴は表示キーを持つ人物に公開されます。これらのトレードオフを緩和するFluidkeyのあまり知られていない機能の1つは、表示キーの回転機能です。これにより、ユーザーは毎月新しい表示キーを使用し、特定の月のビューアクセスのみを第三者と共有することができます。
Fluidkeyのアプローチの素晴らしい利点の1つは、ステルスアドレス自体が送信者によって生成されるのではなく、Fluidkey自体が疑似ランダムに生成されるたびにENSがクエリされます。これにより、ユーザーは受信者であるトランザクションを特定するためにアナウンスメントイベントをスキャンする必要がなくなり、処理がはるかに迅速になります。これはまた、送信者が受信者のためにステルスアドレスを生成するためにステルスアドレスウォレットが必要ないことを意味します。彼らは他のアドレスに資金を送金するようにアドレスに送金するだけで済みます。これはまた、Fluidkeyの設計には関連する登録契約がないことを意味し、大きな利点となっています。
Fluidkeyは完全に自己保管にコミットしており、Stealth Account Kitライブラリをオープンソース化しています。また、Fluidkeyが一夜にして消えてしまうという考えに備え、複数の独自に開発されたリカバリーインターフェースも利用可能です。これにより、資金がロックされたり立ち往生することはありません。
アドレス抽象化
スマートコントラクトアカウントをカウンターファクチュアルに使用することで、Fluidkeyは個々のステルスアドレスの管理を自動的に抽象化できます。つまり、さまざまなステルスアドレスの残高から特定の受信者に特定の金額を送金したい場合、Fluidkeyは送金のためにどの組み合わせのアドレスを使用するかを自動的に把握し、すべてのガスコストと契約展開を処理し、すべて裏で行います。Fluidkeyはまた、ユーザーがラベルと呼ばれるクールな機能を使用して、どのアドレスを組み合わせるかに一定の制御を行うことも可能です。この機能により、ユーザーはアドレスを異なるカテゴリにタグ付けすることができます。
ENS 解決
Fluidkeyは、Fluidkeyに特化したENS名をユーザーに作成するよう要求します。これらの静的な名前は2つの形式を取ります: username.fkey.idとusername.fkey.eth。1つは、誰かに資金を送信するためのWebインターフェースへのURLであり、もう1つはウォレットで使用できる標準のENS名です。
ENSのセットアップは、ENS オフチェーンリゾルバー (aka erc-3668: CCIP 読み取り)を返すために使用されます。オフチェーンのリゾルバがクエリされるたびに、対応するENS名の新しいステルスアドレスを生成して返します。これは便利な機能であり、ユーザーは単一の人間が読めるENS名を持つことができる一方で、生成されたステルスアドレスはENS名と関連付けることはできないため、プライバシーが保持されます。
コスト
Fluidkeyは無料で利用でき、手数料はかかりません。ただし、資金を使いたいアドレスごとにSafeコントラクトを展開するコストが発生します。ただし、メインネットでは比較的高価ですが、L2では非常に小さいため、複数のステルスアドレスを1つの転送に組み合わせても、通常1セント未満です。
彼らはまた、セーフデプロイメントを通じてガスのスポンサーシップも行うことができます。彼らはガスの費用を計算し、それをユーザーの残高から差し引きます。これはトークンであっても有効です。この場合、リレーヤーがユーザーの代わりにセーフを展開し、トークンを転送します。
ウンブラはEIP-5564 + EIP6538の実装です。ScopeliftユーザーがUmbraアプリにログインすると、セットアップフェーズを経て、メッセージに署名し、そこから支出とビューキー、およびそれに対応するステルスメタアドレスが派生します。その後、このステルスメタアドレスをオンチェーンのレジストリにメインウォレットアドレスに登録します。これがFluidkeyとの実装の違いです。
Umbraのerc-5564の実装は、ユーザーの鍵にアクセスできないという点で、仕様に最も近いものです。これは、Umbra(または他の誰か)がユーザーの資金を見ることができないことを意味しますが、これは、資金が送金されるためには、送信者がステルスメタアドレスを生成するためにerc-5564互換のウォレット(またはUmbraアプリ)を持っている必要があることを意味します。
誰かが欲しいと思うとき送信するユーザーに資金を送る場合、通常、Umbraアプリを使用します。基本的に、UmbraアプリはENS名/ウォレットアドレスに登録されたステルスメタアドレスを検索し、ステルスアドレスを生成します。受信者はUmbraアプリにログインし、最後にログインした時点以降に彼らに属するステルスアドレスに送信された資金をスキャンすることができます。クレバーなキャッシングのおかげで、週次スキャンにはわずか10~15秒しかかかりませんが、ユーザーはスキャンを狭めるためにオプションでブロックの範囲を指定することもできます。Umbra v2では、viewtagsの使用も含まれ、プロセスのスピードアップがさらに図られます。
リレーア
ステルスアドレスに関する1つの問題は、ステルスアドレスに送信された資金を受信者が使用するためには、そのアドレスにETHまたは他の必要なガストークンが必要であるということです。ほとんどのネットワークでは、ステルスアドレスに最初にETHが送信された場合、通常は問題ありません。ただし、ステルスアドレスにerc-20トークンまたはNFTが送信された場合、ガス料金を支払うためにETHでアドレスに資金を提供する行為は、そのアドレスをユーザーの他のアドレスにリンクさせ、プライバシーを削除する可能性があります。
これを回避するために、Umbraはリレーを使用した構築を行います。ETH以外の資産がUmbraユーザーに送信される場合、ステルスアドレスに直接送信される代わりに、特別な契約に送信されます。ユーザーは、Umbraのリレーにメタトランザクション(Umbraアプリから)を送信して、ステルスアドレスに送信された資金を自分自身の代わりにスマートコントラクトから転送できます。リレーは、ガス料金の費用をカバーするためにいくつかのトークンを差し引きます。最初にサポートされるトークン数には制限があります。
コスト
また、Umbraのコントラクトでは、スパムを阻止するために、取引手数料の低いネットワークで資金を送金する際に少額の手数料が適用されます。その理論的根拠は、スパムは関連するトランザクションを特定するためにトランザクションをスキャンするコストを増加させるため、これは許容できるトレードオフと見なされるということです。
サポートされているネットワーク
アンブラは現在、イーサリアムメインネット、Optimism、Polygon、Gnosis Chain、およびArbitrumに展開されています。
Umbraの登録契約は興味深いデザインを持っています。デプロイメントメソッドはcreate2と標準的なcreate2 deployerを使用し、スマートコントラクトアドレスはどのネットワークでも同じです。これはつまり、契約が特定のネットワークに存在する場合、クライアントはそれが正しい契約であることを確信することができます。クライアントはネットワークを追加するように設定することができ、誰でもどのネットワークにでもデプロイすることができます。彼らはバイトコードを正規化し、契約にはオーナーがいないため、誰でもどのチェーンでも登録とアナウンス契約を許可なくデプロイすることができます。
Umbra v2
Scopeliftは現在開発中ですバージョン2のウンブラ, コア契約をサポートするために拡張できる新しいモジュラーアーキテクチャを導入します。この新しいアーキテクチャを使用すると、サードパーティの開発者は任意のトークン規格(例:erc-1155、erc-7621、erc-4337のペイマスターのサポートなど)のためのモジュールを構築できます。現在、Umbraコア契約はETHおよびerc-20の2つのシナリオをサポートしています。V2では、さまざまなシナリオをサポートします。
迷宮イーサリアムを基にしないプロトコルですが、ゼロ知識証明を使用してトランザクションに匿名性とプライバシーを追加します。Labyrinthのホワイトペーパーでは、「zkFi」というミドルウェアとして説明されており、「zkFiは、組み込みのコンプライアンスを備えたプライバシーミドルウェアとして機能するパッケージ化されたソリューションを提供します。組み込みのコンプライアンスは、Labyrinthの「選択的な匿名解除」と呼ばれる洗練されたソリューションを指し、特定の認可されたアクター(例:国際刑事警察機構などの法的機関)に対して特定のトランザクションを匿名解除することを可能にし、透明性と公開性を維持します。
Labyrinthが使用するコアスマートコントラクトには、ユーザーが1つの取引で複数の資産を取引できるマルチトランザクションおよびマルチアセットプールが含まれています。資産を使うために、ユーザーはネットワークをスキャンし、暗号化されたノートデータを取得し、ノートを復号化し、使用したい資産にフィルタリングします。その後、ユーザーは取引と、使用したい取引からのノートに関連付けられた署名を含むZKPを作成します。
Labrynthのコア契約の一部には、モジュラープロキシ契約にインターフェイスするコンバーター契約が含まれており、これらは基本的に外部契約へのプロキシです。たとえば、ユーザーがUniswapとやり取りするためにLabrynthを使用したい場合、ユーザーは、コンバーター契約を使用してUniswapのプロキシ契約経由でUniswapプールでのスワップ操作を呼び出すトランザクションを作成することになります。
LabyrinthのzkFiプロトコルは、「ノート」を使用して残高と転送を追跡します。ノートは、ある資産の一部とその所属アドレスを説明するデータ構造です。クライアントは、ノートを再作成するために必要な情報を保存し、これを使用して資産を使用します。ノートへのコミットメント(資産ID、所有者、および値のハッシュ)は、オンチェーンのメルクルツリーに格納されます。実際に、Labyrinthでは、ノート用とルートアドレス用の2つのメルクルツリーを使用しています。
ノートデータ構造には次のものが含まれています:
上記のデータ構造には、資産の所有者に関する参照が含まれていないことに気付くでしょう。これは奇妙です。なぜなら、メモリツリーに記録されたコミットメントは、資産ID、値、所有者のハッシュであり、実際の所有者はルートアドレス、リボーカー、およびランダムなブラインディングファクターから計算されるからです。したがって、外部の観察者にとっては、所有者は実際には新しく作成されたアドレスです。
シールドプール
Labyrinthの本当に興味深い点は、バニラのステルスアドレスベースのプロトコルとは異なり、資産プールが実際にはシールドされたプールであることであり、ノートの概念を使用して、トランザクションに先読み保密性を提供するようなシールドされたUTXOプールを作成します。 EIP-5564の実装では、ユーザーが資金を送金する相手は、その資金の出所を見ることができます。つまり、Aliceがステルスアドレスを使用してBobに支払いを行い、BobがCharlieに支払いを行った場合、Charlieは最初にBobがAliceから資金を受け取ったことを見ることができます。これはLabyrinthのシールドされたプールではありません。
このシールドされたプールがどのように機能するかを理解するには、プロトコル内で資金がどのように移動されるかを見る必要があります:
ユーザーのシールドプールの残高は、対応するアセットのノートの合計です。これらのノートを使用するには、ユーザーはそれらのノートの「nullifiers」を公開する必要があります。nullifierはノートに固有のものであり、ノートが使用されると、二重支払いを防ぐためにnullifierはマークされ、その使用済みのノートから新しいノートが作成されます。同じアセットの複数のノートを組み合わせることもでき、複数の新しいノートを作成することもできます。nullifierは単純に(𝑙, 𝑐, 𝛿)のハッシュです。ここで、𝑙はノートコミットメントのインデックスであり、𝑐はコミットメント、𝛿はブラインディングファクターとも呼ばれるランダムな要素です。
ステルストランザクション転送の受信者は、eip-5564と同じ手段で転送を識別します。つまり、彼らはコア契約から発行されたイベントを監視し、どのステルスアドレスから資金を送信できるかをローカルに記録します。受信資金の識別は、ビュータグの利用と、アプリのライフタイム中にノートの非同期的なローカルキャッシュと同期を利用して、より迅速に行われます。
受け取った資金を発見するプロセスをより高速化するための研究が進行中です。たとえば、Aztecの提案を参考にしてください。Request for Proposals: ノートディスカバリープロトコル — Aztec.
資金を使うためには、ユーザーはzk-proofを生成する必要もありますが、基本的には通常のEthereumアドレスであるerc-6654の実装とは異なります。プルーフを生成するには、パフォーマンスが比較的良好な互換性のあるウォレットが必要で、中程度のAndroidデバイスでは約20秒程度かかります。
バンドラーとコンバーター
Labyrinthが提供する素晴らしい機能には、ステルス取引の痛みを解消するものがいくつかあります。 Labyrinthコア契約に送信されたトランザクションは、erc-4337バンドラーを介してユーザーオペレーションとして送信されます。この設定により、ユーザーはトランザクションにETHを必要とせず、ガストークンを必要とせずにノートを支出できます。また、ユーザーはerc-4337ペイマスターを利用して自分の代わりにガス料金を支払うことができ、これによりさらにプライバシーのレイヤーが追加されます。ただし、最初の入金はuseropとして送信されない唯一の例外です。このer-4337ペイマスターの使用により、転送される資産でガス料金を支払うこともできるため、erc-20トークンであってもガス料金オラクルAPIを公開しています。
Labyrinthのもう1つの非常に素晴らしい機能は、コンバータ契約がサードパーティのdappsへのプロキシとして機能するモジュラーアーキテクチャです。これにより、ユーザーはステルストランザクションを使用して資金を転送するだけでなく、Uniswap、Aave、LidoなどのDEXなどのサードパーティのdappsともやり取りすることができます。これらのプロキシ「コンバータ」契約は、基になるロジックがいくつかのサードパーティ契約に存在するため、いくらかの資産が入力され、いくらかの資産が出力される関数を実装しています。
コンプライアンスソリューション
Labyrinthは、選択的匿名化解除(SeDe)と呼ばれるフレームワークを通じて、コンプライアンスと規制の遵守を保証します。
メモのデータ構造には「revoker」というフィールドが含まれていることを思い出してください。取り消し者は、匿名化解除のプロセスを開始できる特定のエンティティのアドレスです。ユーザーは、事前定義されたリストから少なくとも 1 つのリボーカーを選択する必要があります。取り消し者は、違法または違法な可能性のある活動を特定する責任を単独で負うのではなく、法執行機関からの要求に対応することができます。
取り消し者は、取引を直接匿名化解除する一方的な能力を持っていませんが、匿名化解除の要求を開始する責任があります。これらの要求は、プライバシーとコンプライアンスを監督する団体の委員会であるガーディアンに公開されます。ガーディアンは、取引の匿名化を解除する許可を与えるかどうかについて投票することにより、要求に応答する必要があります。ガーディアンが定足数に達して賛成票を投じることができれば、取り消し者はトランザクションデータを復号化し、トランザクションチェーンが完全に匿名化解除されるまで、問題のトランザクションを以前のトランザクションにリンクすることができます。
このシステムは、ガーディアンが取引データを単独で公開することを一方的に決定することはできず、また、彼らが共謀しても、リボーカーなしでは何もできません。また、リボーカーだけではガーディアンの多数決によって何もできません。
レールガンイーサリアム、BSC、Polygon、およびArbitrumに展開されたステルス取引プライバシーシステムです。このプロトコルは、ノートに基づいており、ノートはコミットメントとしてMerkleツリーに格納され、UTXOセットを形成します。つまり、ノートは他の受信者のために新しいノートを作成することで支出できます。ノートを支出するには、そのノートのためのヌリファイアが状態に追加され、二重支出が防止されます。ノートの所有者だけがそのノートのヌリファイアを計算できます。これは支出キーのハッシュとMerkleツリー上のノートのインデックスに基づいており、そのノートの所有者だけがそれを支出できます(そして一度だけ支出できます)。
Railgunのステルスメタアドレスは、「0zk」の接頭辞を使用し、eip-5564と同様に、公開閲覧キーと公開支出キーの連結です。ただし、RailgunではECDSAおよびsecp256k1の代わりに、BabyJubJub曲線上のEd25519キーを使用しています。eip-5564と同様に、ユーザーはRailgun契約から発行されるすべてのイベントをスキャンし、彼らの閲覧キーを使用して、どのイベントが彼らのウォレットへの転送を表しているかを判断します。
Railgunは、基本的にユーザーからのメタトランザクションを受け入れ、実際のトランザクションをそれぞれのブロックチェーンにブロードキャストし、ユーザーに代わってガス料金を支払うリレイヤーである放送局のネットワークを使用しています。Railgunの契約との直接的なやり取りは、この放送局のネットワークから行われ、エンドユーザーの匿名性が保護されます。ユーザーからブロードキャスターに送信されるトランザクションは、特定のブロードキャスターの公開鍵に暗号化され、Wakuプロトコル.
Railgunは、外部スマートコントラクトとの相互作用を可能にするモジュラーアーキテクチャを持っており、単純なトランスファーを超えた機能を提供します。これは、AdaptRelayコントラクトを介して行われます。このコントラクトは、外部コントラクトとの相互作用前後にトークンを保護および解除します。例えば、トークンAを解除し、あるAMMでトークンBと交換し、トークンBを元のオーナーに保護します。
バージョン3では、Railgunはeip-4337を活用し、レガシーメタトランザクションもサポートする予定です。Railgunの専用eip-4337ユーザーオプメンプールを維持することにより、独立したソルバーが放送者として参加できることを期待しています。現在、Umbraと協力してこれを研究し、エッジケースとそれらに対処する方法を特定しています。詳細については、以下のセクション「Railgun v3」を参照してください。
料金
Railgunプロトコルでは、預入金および引き出しに0.25%の手数料がかかります。これらの手数料はDAOの財務に送られ、RAILガバナンストークンのステーカーに時間経過で支払われます。0.25%の預入金および引き出し手数料に加えて、放送者は通常、実際のオンチェーントランザクションのガス手数料の約10%に相当する独自の手数料も適用します。
ガバナンス
Railgunには、どのような提案でも提出できるガバナンスシステムがあり、トレジャリーおよびガバナンス契約を含むいかなるコア契約の変更もDAOの提案なしには行われません。異例なことに、Railgunの別々のインスタンスには独自のガバナンスシステムとトークンがあります。たとえば、イーサリアム、Polygon、およびバイナンスチェーン上のRailgunには、それぞれ独自のガバナンスシステムとトークンがあります。
SDKとCookbook
Railgunは、ウォレットやDAppの開発者がRailgunをサポートすることでステルスアドレス機能を組み込むために使用できる包括的でよくドキュメント化されたSDKを提供しています。Railgunには、コミュニティによって維持されているものもあります。料理本Railgunを使用して、dapp開発者がRailgunを使用してユーザーが彼らのdappとやり取りできるモジュールを提供する「レシピ」を使用します。たとえば、開発者は、Railgun内のトークン残高を持つユーザーがトークンをプライベートに交換できるDEXのためのレシピを書くことができます。
RailGun v3
Railgunの次のバージョンでは、トランザクションが約50%〜60%安くなります。バージョン3の他の変更点は、専用のメンプールを介してeip-4337 useropsのサポートに移行することです。また、v3では、意図に基づいたアーキテクチャのサポートも提供されます。これにより、ソルバーが最良の実行を競うことができますが、詳細は執筆時点では非常に高レベルです。彼らは現在、と協力しています。CowSwapこれについて、事前フックと事後フックを使用して、ソルバーが資金にアクセスできるようにすることを計画しています。
レールガン コネクト
提案されている中でおそらく最も興味深い変更は、Railgun Connectと呼ばれるもので、これはWalletConnectと似たツールとして説明されており、これにより0zkアドレスを使用して、特定のdappsがカスタムモジュールを介してRailgunと明示的に統合することなく、ほとんどのフロントエンドに接続できるようになります。
Railgun Connectはブラウザ拡張機能であり、実際には内部でHardHatを使用してチェーンの状態をローカルにフォークし、独自のWeb3プロバイダーをdappに挿入し、ローカルのHardHatバージョンのチェーンのRPCエンドポイントを使用します。これにより、通常どおりにdappsコントラクトとのインタラクションを実行し、トランザクションを記録し、それらをバッチ処理してスナークプルーフを作成し、これを実際のチェーン上の実際のRailgunコントラクトに送信することができます。この説明は少し単純化しすぎていますが、一般的な考え方を伝えています。これにより、基本的にほぼすべてのdappと対話できます(追加のオフチェーン処理を行うdappsのエッジケースもあります)。注意点は、チェーンの状態をローカルに保存するのは重い操作ですが、一度行うと、通常のウォレットを使用する場合との違いを感じることなく、Railgunのステルスアドレスを使用してdappsを操作できることを意味します。
イーサリアムプロトコルにはステルスアドレスを確立するための興味深い提案がいくつかあります。例えば、IncoIncoは、通常のerc-20契約を包むerc-20「ラッパー」のアイデアを使用し、すべての残高を暗号化します。転送と承認は、完全同型暗号化を介して暗号化された状態で実行されます。Incoは、現在は独自のネットワーク上でのみ存在するプリコンパイルに依存していますが、将来的にはEthereumにも導入されるかもしれません。
もう1つの提案は「」と呼ばれていますEIP-7503: ゼロ知識ワームホールこれは「proof-of-burn」というデザインに基づいていますが、これはあまり注目されていないようです。おそらく、EVMの更新が必要であり、その更新がなければ、トークンレベルでのみ実装でき、特にeip-7503をサポートするerc-20デザインを使用することができます(またはL2が自分たちのEVMオペコードにサポートを追加することを決定した場合)。
アステカおそらく、最も洗練されたプライバシーテクノロジーの1つですが、使用するにはユーザーがAztecに資金を架け橋する必要があります。これは、多くのユーザーにとって受け入れがたいUXかもしれません。ただし、Ethereumユーザーの間で基本的な取引プライバシーへの需要が高まる場合、Aztecは、デフォルトでプライバシーが提供されるプラットフォームに移行するdappsやユーザーにとって非常に価値のあるL2となるかもしれません。
同様に、Intmax(整数)イーサリアムL2(プラズマ設計に基づく)は、プライバシーに焦点を当てたものであり、ZKPベースのAML証拠を通じて個々の資金の正統性を検証し、取引金額に制限を課すことで規制に準拠しています。Intmaxは送金のプライバシーを提供することには制限があり、EVMスマートコントラクト操作はプライベートではありません。ただし、Aztecとは異なり、スマートコントラクトはSolidityで書くことができます。これは、開発者によって好まれる場合があります(ユースケースに応じて)。
ウォレットサポート
ステルスアドレスプロトコルの採用拡大が見られる一方で、まだいくつかの課題が残っています。最も重要な課題は、メインストリームのEthereumウォレットで完全にサポートされていないことです(まだですが)。メインストリームのウォレットは、ステルスアドレスのサポートを提供する場合、いくつかの選択肢を考える必要があります。これらの選択肢には、以下のようなものがあります:
ユーザーのプライバシーの衛生状態を改善する余地もあります。この論文をご覧ください: “イーサリアム上のUmbraステルスアドレススキームの匿名性分析イーサリアムメインネット上でステルス取引の48.5%を成功裏に匿名解除した方法について、プロトコルとは何の関係もなく、プライバシーの衛生面に関するものであった。たとえば、ユーザーが自分がコントロールするステルスアドレスに資金を送り、それらの資金を元のアドレスに誤って返送し、トレーサビリティが破られたと思い込むことが挙げられます。全体的に、著者らはステルスアドレス取引を匿名解除するために使用できる6つの異なるヒューリスティックスを特定しましたが、ほとんどが最善の慣行に従わないことを基盤としています。しかし、これらは改善すべき重要なUXの問題です。
全体として、私はステルスアドレスとイーサリアムのプライバシー全般についてかなり強気です。私たちはかなり目覚ましい進歩を遂げたと思いますし、修正可能な課題もいくつか見つかりました。主流のウォレットは、ユーザーが最小限の摩擦と思考でステルスアドレスを使用でき、ユーザーが期待し、それに値する通常のレベルのプライバシーを提供するステルスアドレスのサポートレベルを提供する方法を見つけ出すと確信しています。
イーサリアムに大きな影響を与えるであろう、このポストで話した4つのプロトコルを含む、ステルスアドレスインフラを研究し構築するために時間と努力を捧げたすべてのチームに大きなシャウトアウト!彼らの努力と粘り強さは、イーサリアムに大きな違いをもたらすでしょう!