Безопасный, модульный, обновляемый кошелек смарт-контрактов, обеспечивающий массовое внедрение Web3.
________ ________ ________ ________
| __ | __ | __ \ _____
| / | | | ___/ / |
__ __ _ _ / / /
| \ | / /_/__
_ ______ _ _ _ _ _ _ \ _ \ ________
| _______ | | __ | | __ | | __ | | __ | _______ |
Модульность — один из ключевых принципов разработки программного обеспечения. Модульная архитектура и код обеспечивают высокую степень повторного использования, простоту обслуживания и тестирования, меньшую взаимозависимость между компонентами и, что наиболее важно, обеспечивают четкое назначение и функциональность, которые уменьшают количество ошибок в коде и проблем безопасности.
Барз также считает модульность ключевым принципом всей архитектуры и на уровне кода.
В целях модульности мы применяем стандарт EIP-2535 Diamond, Multi-Facet Proxy и предоставляем каждый набор функций в одном аспекте, прикрепленном к Diamond (Barz). Эти модули включают в себя:
Каждый из этих модулей может быть прикреплен и отсоединен владельцем в любое время.
Barz отсоединяет хранилище каждого модуля через FacetStorage
, и модули Barz будут получать доступ только к тому FacetStorage
, который необходим модулю. Это снижает вероятность доступа к ненужному хранилищу и нежелательной модификации хранилища из модулей, особенно во время обновления реализации. Благодаря этой архитектуре отключения хранилища, используемого каждым модулем, Barz помогает предотвратить конфликты хранилища в каждом модуле, что снижает потенциальную уязвимость в шаблоне прокси.
Архитектура Barz также дает преимущества при обновлении. В то время как традиционный шаблон прокси требует обновления всей реализации логики для обновления ее части, Barz требует только соответствующей замены соответствующих модулей, что обеспечивает возможность модульного обновления для учетных записей.
Модульная архитектура помогает разбить код на более мелкие модули, что способствует изоляции и ограничению функциональности каждого модуля. Это помогает уменьшить поверхность атаки и ограничить потенциальный ущерб, вызванный нарушением безопасности в модуле. Это максимизируется благодаря архитектуре Barz, обеспечивающей доступ только к тому хранилищу, которое необходимо модулю.
В отличие от другой обновляемой архитектуры, которая требует обновления всего логического контракта или всего модуля, содержащего набор функций, архитектура Barz поддерживает возможность модульного обновления для каждой функции, обеспечивая максимальную модульность и возможность обновления в контракте кошелька.
В связи с этим наш контракт учетной записи «Barz» поддерживает схему множественной подписи. Пользователи смогут легко изменить схему подписи с помощью вызовов функций в контракте учетной записи. Это позволяет пользователям использовать несколько вариантов пользовательского интерфейса кошелька, например:
Пользователи, которым требуется беспрепятственное взаимодействие и отсутствие резервного копирования приватного ключа. Они могут использовать ECDSA в схеме подписи Secp256r1 и использовать пароль («WebAuthn») для надежной защиты своего закрытого ключа в менеджере паролей (например, в связке ключей iCloud).
Пользователи, желающие использовать традиционный стиль кошелька или аппаратные кошельки, могут захотеть использовать схему подписи ECDSA («Secp256k1») для проверки подписи.
В настоящее время мы поддерживаем две схемы подписи (ECDSA на Secp256k1 и Secp256r1 Curve), однако мы продолжим расширять нашу поддержку нескольких различных схем подписи, включая BLS, PQC и т. д.
Это становится возможным благодаря модульной архитектуре, в которой аспекты подписи прикрепляются и отсоединяются от аспекта учетной записи в соответствии с предпочтениями пользователя относительно пользовательского интерфейса, который может обеспечить каждая схема подписи.
Во время обновления схемы подписи функция обновления должна проверить следующее:
yarn
yarn compile
yarn test
yarn size
forge test