Eine sichere, modulare und erweiterbare Smart Contract Wallet, die die Masseneinführung von Web3 ermöglicht
________ ________ ________ ________
| __ | __ | __ \ _____
| / | | | ___/ / |
__ __ _ _ / / /
| \ | / /_/__
_ ______ _ _ _ _ _ _ \ _ \ ________
| _______ | | __ | | __ | | __ | | __ | _______ |
Modularität ist eines der Schlüsselprinzipien im Software-Engineering. Modulare Architektur und Code ermöglichen eine hohe Wiederverwendbarkeit, einfache Wartbarkeit und Tests, geringere gegenseitige Abhängigkeiten zwischen Komponenten und bieten vor allem einen unkomplizierten Zweck und eine einfache Funktionalität, die Codefehler und Sicherheitsprobleme reduziert.
Barz betrachtet Modularität auch als das Schlüsselprinzip in der gesamten Architektur und auf Codeebene.
Aus Gründen der Modularität setzen wir den Multi-Facet-Proxy-Standard EIP-2535 Diamond ein und stellen jeden Funktionssatz in einer einzelnen Facette bereit, die an Diamond (Barz) angehängt ist. Zu diesen Modulen gehören:
Jedes dieser Module kann vom Eigentümer jederzeit an- und abmontiert werden.
Barz trennt den Speicher jedes Moduls über FacetStorage
und Barz-Module greifen nur auf den FacetStorage
zu, den das Modul benötigt. Dies verringert die Wahrscheinlichkeit des Zugriffs auf nicht benötigten Speicher und unerwünschte Speicheränderungen von Modulen, insbesondere während der Implementierungsaktualisierung. Mit dieser Architektur der Trennung des Speichers, den jedes Modul verwendet, trägt Barz dazu bei, Speicherkollisionen bei jedem Modul zu verhindern, wodurch die Entstehung potenzieller Schwachstellen im Proxy-Muster verringert wird.
Die Architektur von Barz bietet auch Vorteile bei Upgrades. Während das herkömmliche Proxy-Muster ein Upgrade der gesamten Logikimplementierung erfordert, um einen Teil davon zu aktualisieren, müssen bei Barz nur relevante Module entsprechend ersetzt werden, was eine modulare Upgrade-Fähigkeit für Konten einführt.
Die modulare Architektur hilft dabei, den Code in kleinere Module zu unterteilen, was dazu beiträgt, die Funktionalität jedes Moduls zu isolieren und einzuschränken. Dies trägt dazu bei, die Angriffsfläche zu verringern und den potenziellen Schaden zu begrenzen, der durch eine Sicherheitsverletzung in einem Modul verursacht wird. Dies wird zusammen mit der Architektur von Barz maximiert, die nur auf den Speicher zugreift, den das Modul benötigt.
Im Gegensatz zu anderen aufrüstbaren Architekturen, die ein Upgrade des gesamten Logikvertrags oder des gesamten Moduls mit dem Funktionsumfang erfordern, unterstützt die Architektur von Barz die modulare Aufrüstbarkeit für jede Funktion und ermöglicht so maximale Modularität und Aufrüstbarkeit im Wallet-Vertrag.
In diesem Sinne unterstützt unser Kontovertrag „Barz“ das Mehrfachsignaturverfahren. Benutzer können das Signaturschema sehr nahtlos mit Funktionsaufrufen im Kontovertrag ändern. Dadurch stehen Benutzern mehrere Wallet-UX-Optionen zur Verfügung, zum Beispiel:
Benutzer, die eine nahtlose Interaktion und keine Sicherung des privaten Schlüssels wünschen. Sie können ECDSA auf dem Secp256r1- Signaturschema verwenden und den Passkey („WebAuthn“) verwenden, um ihren privaten Schlüssel im Passwort-Manager (z. B. iCloud-Schlüsselbund) sicher zu schützen.
Benutzer, die den herkömmlichen Wallet-Stil oder Hardware-Wallets verwenden möchten, möchten möglicherweise das ECDSA-Signaturschema („Secp256k1“) zur Signaturüberprüfung verwenden.
Derzeit unterstützen wir zwei Signaturschemata (ECDSA auf Secp256k1 und Secp256r1 Curve). Wir werden jedoch unsere Unterstützung für mehrere verschiedene Signaturschemata, einschließlich BLS und PQC usw., weiter ausbauen
Dies wird durch eine modulare Architektur ermöglicht, bei der Signaturfacetten an die Kontofacette angehängt und von dieser getrennt werden, je nach den Präferenzen des Benutzers hinsichtlich der Benutzeroberfläche, die jedes Signaturschema bieten könnte.
Während der Aktualisierung des Signaturschemas sollte die Aktualisierungsfunktion Folgendes prüfen:
yarn
yarn compile
yarn test
yarn size
forge test