安全、模块化、可升级的智能合约钱包,支持 Web3 的大规模采用
________ ________ ________ ________
| __ | __ | __ \ _____
| / | | | ___/ / |
__ __ _ _ / / /
| \ | / /_/__
_ ______ _ _ _ _ _ _ \ _ \ ________
| _______ | | __ | | __ | | __ | | __ | _______ |
模块化是软件工程的关键原则之一。模块化架构和代码可实现高可重用性、易于维护和测试、组件之间的相互依赖性较小,最重要的是提供简单的目的和功能,从而减少代码错误和安全问题。
Barz 还认为模块化是整个架构和代码级别的关键原则。
为了实现模块化,我们采用 EIP-2535 Diamond、多方面代理标准,并在附加到 Diamond(Barz) 的单个方面提供每个功能集。这些模块包括:
每个模块都可以由所有者随时连接和拆卸。
Barz 通过FacetStorage
分离每个模块的存储,Barz 模块只会访问该模块需要的FacetStorage
。这减少了从模块访问不需要的存储和不需要的存储修改的机会,特别是在实施升级期间。通过这种分离每个模块使用的存储的架构,Barz 有助于防止每个模块发生存储冲突,从而减少在代理模式中引入潜在的漏洞。
Barz 的架构还提供了升级方面的优势。传统的代理模式需要升级整个逻辑实现来升级其中的一部分,而Barz只需要相应地替换相关模块,这为账户引入了模块化升级能力。
模块化架构有助于将代码分解为更小的模块,这有助于隔离和限制每个模块的功能。这有助于减少攻击面并限制模块安全漏洞造成的潜在损害。这与 Barz 的仅访问模块所需存储的架构一起得到了最大化。
与其他需要升级整个逻辑合约或包含功能集的整个模块的可升级架构不同,Barz 的架构支持每个功能的模块化可升级性,从而允许钱包合约实现最大程度的模块化和可升级性。
作为这种形式,我们的账户合约“Barz”支持多重签名方案。用户将能够通过帐户合约上的函数调用非常无缝地更改签名方案。这使用户能够获得钱包用户体验的多种选项,例如:
用户想要无缝交互,并且没有私钥备份。他们可以在Secp256r1签名方案上使用ECDSA ,并使用密码(“WebAuthn”)来安全地保护密码管理器(例如iCloud钥匙串)中的私钥。
想要使用传统钱包风格或硬件钱包的用户可能希望使用 ECDSA(“Secp256k1”)签名方案进行签名验证。
目前,我们支持 2 种签名方案(Secp256k1 和 Secp256r1 Curve 上的 ECDSA),但是,我们将继续扩展对多种不同签名方案的支持,包括 BLS 和 PQC 等
这是通过模块化架构实现的,该架构根据用户关于每个签名方案可以提供的 UX 的偏好将签名方面附加到帐户方面或从帐户方面分离。
在签名方案更新期间,更新功能应检查以下内容:
yarn
yarn compile
yarn test
yarn size
forge test