深度丨未来のブロックチェーンウォレットはどのようなものであるべきか?
この記事は暗号谷Liveに掲載され、著者はビリー・レネカンプ、翻訳は李翰博、エドワードです。
フォーラムの投稿「汎用ウォレットとしてのCosmos Hub」において、私はユーザーとブロックチェーンの未来的な関係を提案しました。これは現在のCosmos-SDKと今後の機能の組み合わせに関わっています。「サブプライベートキー」(またはMsg承認)は、Interchain Accounts(ICS-27)の標準およびCosmos Hub自体のセキュリティとして知られています。
これは想像力に富んだ提案ですが、私たちが多くのブロックチェーンと安全に簡単に相互作用できる未来に入る必要があることを考えさせられます。しかし、具体的にどのようなステップが必要か、私は前進の道を提案しました。その結果、焦点を分離し、新しいタイプのウォレットを構築し、アカウント調整機能を創設することになります。

現在のウォレット状況
これまでのところ、私たちは多くのウォレットソリューションを目にしてきましたが、それらは同時に多くのことを試みています。これまでのところ、ウォレットの機能はまだ不完全ですが、ユーザーが多くのネットワークと相互作用したいと望む世界に入るにつれて、現在の拡張不可能なアーキテクチャはこのニーズを満たすことができません。高いレベルで、ウォレットのさまざまな責任には以下が含まれます:
プライベートキー管理
アプリケーションインターフェース
取引管理
Ethereumはこのような成長の痛みをいくつか経験してきました。なぜなら、EVMのようなチューリング完全な仮想マシンはほぼあらゆる種類のアプリケーションの存在を許可し、それらはすべて1つのウォレットから動作することを期待しているからです。Ethereumウォレットはさまざまなアプリケーションにインターフェースを提供するためのプロトコルや巧妙なソリューションを提案していますが、それでもこれらのアプリケーションは汎用のEVMインフラストラクチャから来ることを期待しています。特定のアプリケーションブロックチェーンのパターンが現実になるにつれて、IBCを介して接続されることで、Ethereumがさまざまなアプリケーションの境界をどのように処理するかが変わります。
実行可能なアプローチは焦点を分離することです。これらの3つのタスクを独立したソリューションとして存在させ、それぞれが自分の唯一のタスクに集中できるようにします。これにより、新しいタイプのサービスの需要が明らかになります。私はこれをアカウント調整機能と呼んでいます。
プライベートキー管理
暗号学は難しいです。専門家でない場合、間違いを犯す可能性が高く、その結果は壊滅的なものになる可能性があります。すべてのウォレットとdApp開発者が内部にこの専門知識を持っていることを期待するのは不公平です。従来のアプリケーションはこれを認識しており、しばしばoAuth標準を使用する第三者に認証を委託することで解決しています。
あなたはウォレットの唯一の真の責任はあなたの プライベート キーを安全に保つことだと思うかもしれません。しかし、他の一般的な機能を紹介すると、これは決してそうではないことがわかります。実際、これはしばしばウォレットの構築者が最も欠けている能力です。暗号学とセキュリティの専門家は、業界標準のソリューションを開発し、プライベートキーの保存に関するベストプラクティスを実施する責任を負うべきです。これが彼らの全てのビジネスであるべきですが、逆に、現在のウォレットはセキュリティの面でうまく機能していますが、暗号学に関しては十分ではありません。
プライベートキーの保存の責任をウォレットから取り除くことで、異なる仮定に依存し、異なる機能を提供するさまざまな種類のセキュリティソリューションが生まれる可能性があります。現在、従来のソフトウェアストレージを超えたプライベートキーソリューションが多数存在しています:Ledgerのハードウェアセキュリティモジュールや、Torusが使用するシャミール秘密分散、ZenGoが使用する閾値スキーム、多者計算、または新しいゼロ知識技術などです。私は、プライベートキー管理の共同責任空間も完全に開発されていないと考えています。
プライベートキーがどのように保存されているかに関わらず、保存ソリューションの責任は実際にはここで止まるべきです。それはただ1つのことを行い、それをうまく行うべきです--プライベートキーを保存することです。プライベートキーへのアクセスは、類似のセキュリティ承認技術によって処理されるべきです。
WalletConnect、またはプライベートキー管理者とアプリケーション間でデータを転送するための類似のプロトコルは、さらなる承認が行われるべき場所です。

アプリケーションインターフェース
今日、ウォレットのアプリケーションインターフェースの範囲は非常に広範です。一方では、一部のウォレットはアプリケーション機能への深い統合アクセスを提供しています。ArgentやGnosis Safeは、各アプリケーションの基盤においてますます多くのカスタマイズインターフェースをサポートしています。これもほとんどのCosmosウォレットのルートであり、ネットワークは最低限のステークとガバナンスインターフェースを期待しています。ウォレット内でカスタマイズインターフェースを直接提供することは、より良いユーザー体験を確保できることを意味しますが、ウォレットがアクセスできるアプリケーションの数を制限し、ウォレットが新しいアプリケーションに変わることを制限します。
もう一方では、アプリケーション開発者にインターフェースの責任を大部分押し付けようとするウォレットがあります。一般的に、ウォレットはweb3.jsやcosmJSを使用してAPIまたはインターフェースをアプリケーションに接続します。または、ウォレットは独自のブラウザを含むことができ、API(Mist、Metamask Mobile、Status、Coinbase Wallet)をすでに統合しています。彼らはまた、ブラウザ拡張を利用してAPIに接続することもできます(Metamask、Keplr)。WalletConnectは、モバイルとデスクトップブラウザ間、またはモバイル間でインターフェースを転送することを可能にします。どちらの方法でも、アプリケーション開発者がウォレットAPIにアクセスし、ユーザーに署名機能を提供する必要があります。 この道は、アプリケーションへのアクセスのボトルネックとしてのウォレットを排除しますが、同時にセキュリティとスムーズなユーザー体験という自身の課題をもたらします。
アプリケーションが署名機能にアクセスできるようにするために、安全な承認技術を考慮する必要があります。これにより、確認インターフェースによってユーザーが退却することなく、また不注意に署名することに陥ることもありません。MetaMaskはこの問題を解決しようと試みており、プライベートキーとアプリケーション間の通信のための組み合わせ可能な安全インターフェース「Snaps」を作成しました。これは、オブジェクト能力に関するAgoricのチーフサイエンティストMark Millerの研究を大いに参考にしており、オブジェクト能力は環境を越えて転送可能な正確なオブジェクトレベルの制御をコーディングします。Snapsは、アプリケーションとプライベートキー管理者を接続するために必要なセキュリティと標準化を提供しますが、私はMetamaskがこのアーキテクチャで十分に進んでいないと考えています。なぜなら、すべての3つのウォレット機能が隔離され、このモデルで構成される可能性があるからです。

取引管理
私たちは多くのウォレットがアプリケーションインターフェースを提供する重責を担っているのを見てきましたが、私は依然として、これまでのところウォレットの主な責任はプライベートキー管理であると考えています。これにより、ウォレットの第三の責任である取引管理のリソースが深刻に不足しています。私は、アプリケーションインターフェースとプライベートキー管理が指定された第三者の責任となるにつれて、これがウォレットの主な責任になることを望んでいます。
取引管理は、アプリケーションと署名ソリューション間の実際のインターフェースと見なすことができます。これは、いくつかの操作のリクエストがプライベートキーで署名できる形式に解析されるステップです。これには、アプリケーションとの通信とプライベートキー管理との通信が含まれます。この2つの間で、署名されるべきデータは解析され、ユーザーが署名している内容と理由を理解できる方法で表示される必要があります。さらに、これらの署名リクエストの履歴と状態は記録され、ユーザーに提供されるべきです。
Ethereumを使用する際、取引管理は非常に厄介です。なぜなら、基本的に1種類の取引タイプ(eth_send)しかなく、データフィールドが含まれており、スマートコントラクトに対しては任意の数のメソッドを参照できるからです。運が良ければ、ウォレットは特定のコントラクトと相互作用するためのABIファイルにアクセスでき、データフィールドを関数名とパラメータに変換できます。ABIファイルは、取引が成功裏に処理された後に発生するイベントをウォレットが表示することも可能にします。これにより、ブロックエクスプローラーの領域に入ります。これは、アカウント履歴およびネットワーク全体の履歴に特化した完全なサービスです。しかし、これまでのところ、ブロックエクスプローラーはネットワークに関してほとんど単一のものでした。
この空間には、取引に含まれるさまざまなメッセージがあります。これらのメッセージのそれぞれは異なる機能を持っていますが、従来は自己実行型であったため、外部のABIファイルは必要ありませんでした。protobufへの移行が進む中で、これらの特性を保持しつつ、protobufがもたらすすべてのパフォーマンス向上を確保する方法についての議論が行われています。1つの選択肢は、protobufファイル内でABIのように使用することですが、まだ多くの他の解決策が探求されています。
ネットワークアーキテクチャがどうであれ、これは厄介な問題ですが、ユーザーが自分が何をしているのかを確認できることを確保するために重要です。追加のプライベートキーがこの組み合わせに追加されると、この問題はさらに複雑になります。一部のウォレットは、共通のニーモニックとプライベートキー派生パスから多くのアカウントを作成することを許可しています。これは、自分のDeFiアカウントとゲームアカウントを混ぜたくないユーザーにとって非常に便利な機能です。プライベートキーの派生を通じてネットワーク間を切り替えることができますが、複数のニーモニックとプライベートキーをサポートしてアカウントを統合できるEthereumウォレットがあるかどうかはわかりません(ただし、Keplrはあります)。これにより、ユーザーはどのアイデンティティがどのプライベートキーに関連しているかを追跡する負担を負うことになります。

アカウント調整機能
取引管理は十分にサービスを受けておらず、ネットワークの増加とそれに伴う プライベート キーの増加に伴い、この問題はますます深刻化するでしょう。サブプライベートキーが特定のプライベートキーにアカウント機能を割り当てる能力が増すにつれて、この問題は指数関数的に増加します。責任範囲の拡大に伴い、この役割に新しい名前を付ける価値があります。私は、主にアカウント調整サービスとして機能する新しいタイプのウォレットの理由を提案したいと思います。
アカウント調整機能の主な目標は、どのプライベートキーがどのネットワークでどの機能を持っているかを追跡し、WalletConnectなどのプロトコルを介してこれらのプライベートキーの署名機能にアクセスする方法を提供することです。外部のプライバシーと匿名性を実現する努力をしつつ、ユーザーの観点からは、すべてのdApp、プライベートキーの保存、およびネットワークの活動に関する完全な概要を提供する必要があります。これは、プライベートキーのニーモニックの主公開鍵を要求し、すべての可能な公開鍵を導出することを可能にします。これにより、アカウント調整機能は、すべての可能なネットワーク上のすべての可能なアカウントをチェックし、過去に相互作用したことがあるかどうかを確認できます。それは、プライベートキーがマルチシグ、契約ベースのウォレット、グループモジュール、またはサブプライベートキーの一部であるかどうかを検出します。あなたの確認に従って、それはあなたのすべてのアカウントを追跡し、どのプライベートキーをいつ使用するかに関するあなたの好みを記憶し始めます。
アカウント調整機能は、各アプリケーションでのあなたの相互作用を監査しながら、一貫した履歴を保持することを可能にするべきです。GoogleのoAuthが現在ログインしているサービスやデバイスを教えてくれることを考えてみてください。最終的に、これはユーザー中心のマルチネットワークブロック ブラウザのように見えるべきであり、あなた自身のすべての プライベート キーを追跡し、それらを調整する役割を果たします。これには、あなたが使用したことがある、または今後相互作用する可能性のある多くのネットワークに関する大量の情報が必要です。この情報はさまざまなソースから収集され、あなたが直面しているアプリケーションの種類によって異なります。私は、ほとんどの情報がアプリケーション自体から得られるべきであり、WalletConnectのようなインターフェースを通じて提供されると想像しています。
アカウント調整機能は、あなたのプライベートキーとアプリケーションの間にしっかりと立ち、両者の間の仲介者として機能し、ブロックチェーンベースのネットワーク上でのあなたのすべての相互作用を記録します。それの構築はあなたのためだけにサービスを提供するため、あなたの情報の宝庫を持つことになりますが、そのアクセスを許可するかどうかはあなた自身が決定することになります。















