Uma carteira de contrato inteligente segura, modular e atualizável que permite a adoção em massa do Web3
________ ________ ________ ________
| __ | __ | __ \ _____
| / | | | ___/ / |
__ __ _ _ / / /
| \ | / /_/__
_ ______ _ _ _ _ _ _ \ _ \ ________
| _______ | | __ | | __ | | __ | | __ | _______ |
A modularidade é um dos princípios-chave da engenharia de software. A arquitetura e o código modulares permitem alta capacidade de reutilização, facilidade de manutenção e testes, menor interdependência entre os componentes e, o mais importante, fornecem finalidade e funcionalidade diretas que reduzem bugs de código e problemas de segurança.
Barz também considera a modularidade como o princípio fundamental em toda a arquitetura geral e no nível do código.
Para modularidade, impomos o padrão EIP-2535 Diamond, Multi-Facet Proxy e fornecemos cada conjunto de recursos em uma única faceta anexada ao Diamond (Barz). Esses módulos incluem:
Cada um destes módulos pode ser acoplado e desmontado pelo proprietário sempre que desejar.
Barz desanexa o armazenamento de cada módulo por meio de FacetStorage
, e os módulos Barz acessarão apenas o FacetStorage
que o módulo precisa. Isso reduz a chance de acesso ao armazenamento desnecessário e modificação indesejada do armazenamento dos módulos, especialmente durante a atualização da implementação. Com esta arquitetura de desconexão do armazenamento que cada módulo usa, Barz ajuda a evitar que cada módulo tenha colisões de armazenamento, o que reduz a introdução de vulnerabilidade potencial no padrão de proxy.
A arquitetura de Barz também oferece benefícios em atualizações. Embora o padrão de proxy convencional exija a atualização de toda a implementação lógica para atualizar uma parte dela, Barz só precisa que os módulos relevantes sejam substituídos adequadamente, o que introduz a capacidade de atualização modular para contas.
A arquitetura modular ajuda a dividir o código em módulos menores, o que contribui para isolar e limitar a funcionalidade de cada módulo. Isso ajuda a reduzir a superfície de ataque e a limitar os danos potenciais causados por uma violação de segurança em um módulo. Isso é maximizado junto com a arquitetura da Barz de acessar apenas o armazenamento que o módulo precisa.
Ao contrário de outras arquiteturas atualizáveis que precisam de uma atualização de todo o contrato lógico ou de todo o módulo que contém o conjunto de recursos, a arquitetura do Barz suporta capacidade de atualização modular para cada função, permitindo máxima modularidade e capacidade de atualização no contrato de carteira.
Como forma disso, nosso contrato de conta "Barz" suporta esquema de assinatura múltipla. Os usuários poderão alterar o esquema de assinatura de forma muito simples com chamadas de função no contrato da conta. Isso permite aos usuários várias opções de UX da carteira, por exemplo:
Usuários que desejam uma interação perfeita e sem backup de privateKey. Eles podem usar ECDSA no esquema de assinatura Secp256r1 e usar a chave de acesso (“WebAuthn”) para proteger com segurança sua chave privada no gerenciador de senhas (por exemplo, chaveiro do iCloud).
Os usuários que desejam usar o estilo de carteira convencional ou carteiras de hardware podem querer usar o esquema de assinatura ECDSA("Secp256k1") para verificação de assinatura.
Atualmente, oferecemos suporte a 2 esquemas de assinatura (ECDSA na curva Secp256k1 e Secp256r1), no entanto, continuaremos a expandir nosso suporte para vários esquemas de assinatura diferentes, incluindo BLS e PQC, etc.
Isso é possibilitado por uma arquitetura modular com facetas de assinatura anexadas e desconectadas da faceta da conta de acordo com a preferência do usuário em relação à UX que cada esquema de assinatura pode fornecer.
Durante a atualização do esquema de assinatura, a função de atualização deve verificar o seguinte:
yarn
yarn compile
yarn test
yarn size
forge test