Web3 の大量採用を可能にする、安全でモジュール式のアップグレード可能なスマート コントラクト ウォレット
________ ________ ________ ________
| __ | __ | __ \ _____
| / | | | ___/ / |
__ __ _ _ / / /
| \ | / /_/__
_ ______ _ _ _ _ _ _ \ _ \ ________
| _______ | | __ | | __ | | __ | | __ | _______ |
モジュール性はソフトウェア エンジニアリングにおける重要な原則の 1 つです。モジュール式のアーキテクチャとコードにより、高い再利用性、容易な保守性とテストが可能になり、コンポーネント間の相互依存性が低くなり、最も重要なこととして、コードのバグとセキュリティの問題を軽減する単純な目的と機能が提供されます。
Barz 氏はまた、モジュール性をアーキテクチャ全体およびコード レベルにおける重要な原則と考えています。
モジュール性のために、EIP-2535 Diamond、Multi-Facet Proxy 標準を課し、Diamond(Barz) に接続された単一のファセットで各機能セットを提供します。これらのモジュールには次のものが含まれます。
これらの各モジュールは、所有者がいつでも好きなときに取り付けたり取り外したりできます。
Barz はFacetStorage
を通じて各モジュールのストレージを切り離し、Barz モジュールはモジュールが必要とするFacetStorage
にのみアクセスします。これにより、特に実装のアップグレード中に、モジュールから不要なストレージにアクセスしたり、ストレージの不要な変更が行われる可能性が減ります。各モジュールが使用するストレージを切り離すこのアーキテクチャにより、Barz は各モジュールでストレージの衝突が発生するのを防ぎ、プロキシ パターンでの潜在的な脆弱性の導入を軽減します。
Barz のアーキテクチャには、アップグレードの利点もあります。従来のプロキシ パターンでは、一部をアップグレードするにはロジック実装全体をアップグレードする必要がありますが、Barz では関連するモジュールを適宜置き換えるだけで済み、アカウントにモジュール式のアップグレード機能が導入されます。
モジュラー アーキテクチャは、コードをより小さなモジュールに分割するのに役立ち、各モジュールの機能を分離して制限するのに役立ちます。これは、攻撃対象領域を減らし、モジュールのセキュリティ侵害によって引き起こされる潜在的な損害を制限するのに役立ちます。これは、モジュールが必要とするストレージにのみアクセスする Barz のアーキテクチャと組み合わせることで最大化されます。
ロジック コントラクト全体または機能セットを含むモジュール全体のアップグレードが必要な他のアップグレード可能なアーキテクチャとは異なり、Barz のアーキテクチャは機能ごとにモジュール式のアップグレード可能性をサポートし、ウォレット コントラクトで最大限のモジュール性とアップグレード可能性を実現します。
その一環として、弊社のアカウント契約「Barz」では複数署名方式をサポートしております。ユーザーは、アカウント コントラクトの関数呼び出しを使用して、署名スキームを非常にシームレスに変更できるようになります。これにより、ユーザーは次のようなウォレット UX の複数のオプションを利用できるようになります。
ユーザーはシームレスな対話を望んでいますが、秘密鍵のバックアップは必要ありません。 Secp256r1 署名スキームで ECDSA を使用し、パスキー (「WebAuthn」) を使用してパスワード マネージャー (iCloud キーチェーンなど) で秘密キーを安全に保護できます。
従来のウォレット スタイルまたはハードウェア ウォレットを使用したいユーザーは、署名検証に ECDSA("Secp256k1") 署名スキームを使用するとよいでしょう。
現在、2 つの署名スキーム (Secp256k1 および Secp256r1 曲線上の ECDSA) をサポートしていますが、BLS や PQC などを含む複数の異なる署名スキームのサポートを拡大し続けます。
これは、各署名スキームが提供できる UX に関するユーザーの好みに応じて、アカウント ファセットに署名ファセットをアタッチしたり切り離したりするモジュラー アーキテクチャによって可能になります。
署名スキームの更新中に、更新機能は以下をチェックする必要があります。
yarn
yarn compile
yarn test
yarn size
forge test