Open Zeppelin
OpenZeppelin é um projeto de código aberto que oferece um conjunto de ferramentas seguras e reutilizáveis para o desenvolvimento de contratos inteligentes na blockchain do Ethereum e outras blockchains compatÃveis com a EVM. É amplamente reconhecido e utilizado por desenvolvedores de todo o mundo para construir, implantar e operar aplicativos descentralizados (DApps) e tokens digitais, incluindo tokens fungÃveis (como os que seguem o padrão ERC-20) e não fungÃveis (NFTs, seguindo os padrões ERC-721 e ERC-1155).
Principais CaracterÃsticas das Bibliotecas do OpenZeppelin
Segurança: As bibliotecas do OpenZeppelin são minuciosamente revisadas e auditadas pela comunidade e profissionais de segurança blockchain, ajudando a prevenir erros comuns e vulnerabilidades de segurança nos contratos inteligentes.
Reusabilidade: Fornecem módulos e contratos inteligentes predefinidos que cobrem funcionalidades comuns e padrões de design no desenvolvimento de DApps e tokens, como a emissão de tokens, votações e gestão de acesso.
Comunidade: OpenZeppelin possui uma comunidade ativa e em crescimento, o que garante que as ferramentas estejam constantemente atualizadas e aprimoradas com base nas necessidades e feedback de seus usuários.
Componentes do OpenZeppelin
Tokens
ERC20: Implementações padrão do popular token fungÃvel ERC-20, incluindo versões básicas, detalhadas, mináveis, queimáveis, com capacidades de pausa e mais.
ERC721: Implementações para tokens não fungÃveis (NFTs), seguindo o padrão ERC-721, com suporte para enumeração, metadados estendidos e transferências seguras.
ERC1155: Um contrato mais avançado que suporta a criação de tokens tanto fungÃveis quanto não fungÃveis dentro de um único contrato, otimizando a gestão e transferência de múltiplos tipos de tokens.
Acesso
Ownable: Um contrato simples para fornecer controle básico de acesso baseado em um único proprietário, útil para operações administrativas.
AccessControl: Um sistema de controle de acesso mais flexÃvel e completo que permite definir papéis e permissões complexas para diferentes ações dentro do seu contrato.
Segurança
Pausable: Permite pausar e retomar certas funcionalidades do contrato, útil para interromper operações em caso de emergência ou manutenção.
ReentrancyGuard: Ajuda a prevenir ataques de reentrância, um dos vetores de ataque mais comuns, por meio do uso de um modificador simples.
Governança
Governor: É o coração do sistema de governança do OpenZeppelin. Fornece uma base sólida sobre a qual podem ser construÃdos mecanismos de votação e governança, oferecendo funcionalidades como criação e gestão de propostas, votação e execução de decisões aprovadas. Este contrato pode ser estendido e personalizado para se adaptar à s necessidades especÃficas de diferentes projetos.
Timelock: Adiciona um elemento de segurança e transparência ao processo de governança ao introduzir um perÃodo de bloqueio entre a aprovação de uma proposta e sua execução. Isso dá tempo para os participantes revisarem as decisões aprovadas e, se necessário, agirem antes que mudanças significativas sejam implementadas.
Votes: Fornece funcionalidades para a contagem e delegação de votos, permitindo que os detentores de tokens participem no processo de governança. Isso inclui suporte para tokens com capacidades de voto, como tokens ERC20 com extensões que permitem a votação.
Compounded Votes: Permite que os votantes acumulem poder de voto ao longo do tempo ou com base em outros fatores, adicionando uma dimensão dinâmica e estratégica ao processo de votação.
Finanças
PaymentSplitter: Permite dividir os rendimentos de ether entre várias contas, útil para dividir pagamentos ou rendimentos de forma transparente e segura.
Escrow: Um contrato de depósito em garantia básico que pode ser estendido para criar mecanismos de pagamento seguros e confiáveis entre partes.
Utilidades
Counters: Fornece uma maneira segura de incrementar e decrementar contadores, útil para manter o registro de IDs de tokens, quantidades de itens, entre outros.
Address: Oferece funções para realizar operações seguras com endereços Ethereum, incluindo a verificação de que um endereço é um contrato.
MerkleProof: Usado para verificar se um item pertence a uma árvore de Merkle dado uma raiz e uma prova (conjunto de hashes).
EnumerableMap: Quando é necessário um mapeamento cujos elementos possam ser listados ou contados, como o rastreamento de um conjunto de itens únicos com identificadores.
SafeCast: Quando é necessário mudar o tipo de uma variável numérica para outro tipo com tamanho menor de armazenamento, garantindo que o valor se ajusta ao novo tipo sem causar erros.
Proxies
TransparentProxy e UUPS: Oferecem infraestruturas para implantar e gerenciar contratos inteligentes que podem ser atualizados, permitindo alterar a lógica de um contrato sem mudar o endereço do contrato.
Como Usar o OpenZeppelin
Para utilizar as bibliotecas do OpenZeppelin no seu projeto, primeiro você deve instalá-las. Se você estiver usando um ambiente de desenvolvimento baseado em Node.js, pode instalá-las facilmente através do npm ou yarn. Aqui está um exemplo de como instalar a biblioteca de contratos OpenZeppelin via npm:
Una vez instalada, puedes importar y utilizar los contratos y módulos de OpenZeppelin en tus contratos inteligentes. Por ejemplo, para crear un token ERC-20:
Desde o Remix, você também pode acessar as bibliotecas diretamente utilizando a URL do GitHub. Para isso, deve incluir uma diretiva de importação na parte superior do seu arquivo de contrato Solidity, especificando o caminho da biblioteca no repositório do GitHub do OpenZeppelin.
Por exemplo, para importar a implementação ERC-20 do OpenZeppelin, sua diretiva de importação ficaria assim:
Certifique-se de que a versão do Solidity especificada no seu contrato seja compatÃvel com a versão utilizada pelos contratos do OpenZeppelin que você está importando.
Uma forma mais simples de obter os contratos ERC20 no Remix é diretamente através do botão na tela principal do Remix.
Last updated