ウォレット 2.0 時代:MPC ウォレット vs. スマートコントラクトウォレット
著者:Chloe,IOSG Ventures
ボゴタで開催されたDevcon 6大会において、Tomasz TunguzはWeb3.0に関するいくつかの統計データを挙げました:主要なパブリックチェーンのDAUは約250万であり、従来のインターネットのDAUは50億で、前者は後者の0.05%に過ぎません。供給側から見ると、約1.6万人の開発者がWeb3.0の開発に従事しており、世界の開発者総数は2700万人に達しており、Web3開発者は0.06%にも満たないです。したがって、Web3.0はマスアダプションにはまだ遠い道のりです。
ウォレットはWeb3.0の入り口として、そのユーザー体験は暗号業界がいつ大規模に採用されるかに直接影響します。各ウォレットはこの点で力を入れていますが、一般ユーザーの目には、ウォレットの使用体験は依然として満足できるものではありません。ホスティングウォレットは使いやすいですが、安全性には大きなリスクがあり、ウォレットの盗難事件が後を絶ちません。自己管理ウォレットは比較的安全ですが、長いリカバリーフレーズや秘密鍵を保管する方法は、従来のインターネットのユーザー名-パスワード体系と比べて非常に複雑です。Chainalysisの研究報告によれば、2021年時点で流通しているビットコインの約20%が、所有者が秘密鍵を忘れたために失われています。多くの人が疑問に思うかもしれません、なぜ私たちは従来の検証方法をWeb3.0に適用できないのでしょうか?
なぜ私たちは秘密鍵を通じてのみ検証を行う必要があるのでしょうか?この質問に答えるためには、いくつかの背景知識と概念が必要です。まずはEthereum上のアカウントタイプについてです。Ethereumには2種類のアカウントがあります:外部アカウントとコントラクトアカウント。コントラクトアカウントはスマートコントラクトであり、そのコードはEthereum仮想マシンによって実行されます。一方、外部アカウントは私たちが通常取引を開始するために使用するウォレットアカウントであり、"外部"と呼ばれる理由は、このアカウント自体にはコードがないため、Ethereum仮想マシンから独立しており、ユーザーが秘密鍵を通じて制御します。
コントラクトアカウントはカスタムロジックを持っていますが、自発的にトランザクションを開始することはできません。したがって、コントラクトの状態の変更は外部アカウントによって開始され、外部アカウントがEtherを支払います。では、トランザクションの合法性をどのように検証するのでしょうか?Ethereum上の検証方法は、トランザクションの発起人と資産(Ether)の所有者、つまりこの外部アカウントの所有者が一致しているかを確認することです。したがって、ユーザーはウォレットを通じて取引に署名する必要があります。Ethereumのデフォルトの検証ロジックは中本聡が設計したsecp256k1であり、このアルゴリズムを通じて鍵ペアが生成されます。署名の正当性は、その署名が特定の公開鍵に対応する秘密鍵から生成されたものであるかを検証することで確認できます。したがって、ユーザーはこの秘密鍵を把握する必要があります。これが、どれだけウォレットのユーザー体験を最適化しても秘密鍵の問題を回避できない理由です。
前述のように、外部アカウントにはコードロジックがありません。もし他の機能を実現するためにより複雑なロジックを導入したい場合、例えばマルチシグなどは、外部アカウント上で直接行うことはできません。では、現在この問題を解決するための方法は何でしょうか?著者は、最も実行可能で効果的と考えられる2つの解決策を紹介します:MPCウォレットとスマートコントラクトウォレット。
MPCウォレット
MPC、すなわちMulti-Party Computationは、重要な暗号セキュリティ対策の一つです。多くの技術的なソリューションを含んでおり、この記事の文脈では主にMPC-TSSを指します。MPCウォレットは、秘密鍵を複数の当事者で計算し、オフチェーンで"マルチシグ"、"クロスチェーン"などのより複雑な検証方法を実現します。簡単に言えば、1つの秘密鍵を複数の部分に分割し、その秘密鍵の断片を分散型ネットワークに渡して計算と暗号化を行います。秘密鍵の署名が必要なときは、断片を再び組み合わせて完全な秘密鍵を形成します。MPCの核心的な考え方は、権限を分散させることでリスクを分散させたり、災害対策を強化したりすることにあり、単一障害点などのセキュリティ問題を効果的に回避します。
MPCウォレットの"多者参加"の概念は"マルチシグウォレット"に似ていますが、実際には、どちらも"マルチシグ"機能を実現できますが、実装方法は異なります。以前私たちが知っているマルチシグウォレット、例えばGnosis Safeなどは、スマートコントラクトに基づいたウォレットであり、コントラクト内で検証ロジックが定義されています。例えば、取引を検証するには、1つ以上の秘密鍵が必要であるとか、5つのうち少なくとも3つの秘密鍵で検証する必要があるなどです。この種のウォレットは、後述するスマートウォレットの一種です。一方、MPCウォレットは、1つの秘密鍵を複数の部分に分解し、検証プロセスは1つの秘密鍵のみを含みます。また、計算ネットワークはオフチェーンであり、スマートコントラクトとは無関係です。
スマートコントラクトウォレット
スマートコントラクトウォレットは、その名の通り、外部アカウントではなくスマートコントラクトに基づいたウォレットです。市場にはすでに多くのスマートコントラクトウォレットがありますが、これらのスマートコントラクトはカスタマイズされており、統一された業界標準が欠如しているため、コントラクトの脆弱性や他のコントラクトとの互換性の問題が広く採用されていません。最近、スマートコントラクトウォレットは"アカウント抽象化"提案EIP-4337の重要な進展により再び注目を集めています。では、アカウント抽象化とは一体何を意味するのでしょうか?アカウント抽象化を実現すると、ユーザーにはどのような新しい体験がもたらされるのでしょうか?Ethereum上のアカウント抽象化を理解する前に、まずCSにおける抽象の概念を理解する必要があります。
"抽象"はコンピュータサイエンスにおいて最も重要な概念の一つであり、外部に必要な重要な情報を提供しつつ、そのバックエンドの実装詳細を隠すことを指します。これにより、開発者は抽象層のタスクを処理する際に、その抽象層にのみ集中することができます。生活に密接した例を挙げると、私たちが観客としてテレビを使用したいとき、電源のオンオフ、音量調整、チャンネル切替、ゲーム機やDVDなどの他のデバイスとの接続方法など、テレビ観客として知っておくべき操作を理解していれば十分です。
観客はテレビ内部の実装詳細、例えばテレビがどのようにケーブルを通じて信号を受信し、信号を変換し、これらの信号をテレビ画面に表示するかなどを理解する必要はありません。これらの実装詳細はテレビを作る人が理解すべきことです。観客として私たちは、電源ボタン、リモコン、DVDなどの外部インターフェースを通じてテレビを制御するだけで済みます。
アカウント抽象化も同様です。私たちがウォレットユーザーとして考慮すべき要素は多く、例えばガス価格、ガスリミット、トランザクションのブロッキングなどの複雑な費用ロジックがあります。その根本的な理由は、外部アカウントのウォレットがうまく"抽象化"されていないため、ユーザーが本来処理すべきでない多くの問題を扱う必要があるからです。では、これをどう解決するのでしょうか?論理は非常にシンプルです。外部アカウントとコントラクトアカウントを抽象化し、外部アカウントをコントラクトアカウントに近づけることで、スマートコントラクトを通じてウォレットにより複雑なロジックを与えることができます。スマートコントラクトウォレットが実現できる機能は、"マルチシグ"だけではありません。
もしEIP-4337がEthereumアカウントの体系的なアップグレードを実現できれば、ユーザーとして私たちはどのような新しい体験を得られるのでしょうか?理論的には、スマートコントラクトコードで定義された機能はすべて実現可能です。まず、スマートコントラクトウォレットはsecp256k1以外の検証アルゴリズムを通じて検証を行うことができ、ユーザーは長い鍵ペアやリカバリーフレーズに直面する必要がありません。また、スマートコントラクトは鍵により多くのロジックを与えることができます。例えば、マルチシグのシナリオでは、各秘密鍵に異なる権限を定義することができます:50USDC以下の取引には秘密鍵Aの署名が必要で、50USDC以上の取引には秘密鍵Bの署名が必要で、2000USDCを超える取引には秘密鍵ABCの共同署名が必要などです。
さらに、モバイル端末とブロックチェーンとのインタラクションがより容易になります。私たちは、特定のスマートコントラクトとだけインタラクションできるように制限を加えた専用の携帯電話用の鍵を許可することができます。他に実現可能な機能には、一括取引のワンクリック承認、取引ブラックリストなどがあります。要するに、スマートコントラクトウォレットの想像の余地は非常に大きいです。
まとめ
2種類のウォレットを紹介した後、読者はこの2つの解決策のどちらがより良いのか疑問に思うかもしれません。著者は比較が難しいと考えています。なぜなら、MPCウォレットとスマートコントラクトウォレットは本質的に同じレベルで問題を解決していないからです。MPCウォレットはオフチェーンのソリューションであり、外部アカウントに基づく通常のウォレットを制御することも、スマートウォレットを制御することもできます。両者にはそれぞれのユースケースがあり、相互に矛盾するものではありません。したがって、著者はそれぞれのソリューションの機会と課題を挙げます。
MPCウォレットはオフチェーンのソリューションであり、Ethereumのコンセンサス層やコントラクト層の変更を伴わないため、ユーザーの使用コストは低く、短期的にはより実行可能性があります。さらに、クロスチェーンキーなどの特定の使用シナリオにおいては、より優位性があります。スマートコントラクトウォレットはEthereumの体系的なアップグレードであり、ユーザーに新しい体験やユースケースをもたらすことができます。しかし、アカウント抽象化は"大規模な動員"を必要とする大きなプロジェクトであり、他のスマートコントラクト、開発者、Ethereumのアーキテクチャが協力してアップグレードする必要があります。過度な実行の難しさにより、2015年に提案されたビジョンは今日まで完全には実現されていません。また、スマートコントラクトウォレットにとって、最も直接的な問題は、ウォレットの使用コストが上昇することであり、ウォレットの作成時から費用が発生する必要があります。
著者は、スマートコントラクトウォレットが私たちの最終的なビジョンであり、MPCが短期的により実行可能なソリューションであり、特定のシナリオにおいてより優位性を持つと考えています。コストの問題から、今後スマートウォレットがEthereumメインネットで実現する可能性は低いです。読者はLayer2でのアカウント抽象化とスマートウォレットの進展にもっと注目することができます。現在、EIP-4337は最も実行可能なアカウント抽象化のソリューションであり、多くのスマートコントラクトウォレットプロジェクトがこの道を探求しています。スマートウォレットの全面的な実現は、私たちが想像しているよりも近いかもしれません。