🇧🇷
Ethereum Developer Pack - PT
  • Ethereum Developer Pack - PT
  • Módulo 1
    • Introdução a Smart Contracts
      • Fundamentos de Blockchain
        • Histórico
        • Bitcoin
        • O que é Blockchain
        • Conceitos-chave em Blockchain
        • Como funciona a Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • A nova Internet
        • Web 3
        • Elementos Fundamentais
        • Impacto do Ethereum em Diversos Setores
      • Wallets
        • Componentes de uma wallet
        • Tipos de Wallet
        • Códigos Mnemônicos
      • Ethereum 101
        • Smart Contracts
        • Contas
          • Tipos de contas
          • Conteúdo das contas
        • Transações
          • Componentes
          • Ciclo de vida
        • Gás
        • Solidity
        • EVM
          • A máquina de estados
          • Opcodes
          • Como funciona a EVM
          • Clientes de execução
          • DApps
      • Blockchain Explorer
        • Funções de um blockchain explorer
        • Beneficios de utilizar um blockchain explorer
      • Remix
        • Características do Remix
        • Workspaces ou espaços de trabalho
        • Carregar e compilar um contrato
        • Implantar na máquina virtual do Remix (Remix VM)
        • Interagindo com funções
        • Deployar em uma rede pública
      • Crie seu primeiro Smart Contract
  • Módulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Dados
      • Funções
      • Variáveis
        • Exercício 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • Exercício 3
      • Convenções de nomenclatura
      • Tipos de armazenamento para variáveis
      • Estruturas de Controle
        • Exercício 4
      • Modificadores
      • Eventos
        • Exercício 5
      • Tipos de Referencia
        • Arrays
          • Exercício 6
        • Mappings
          • Exercício 7
        • Structs
          • Exercício 8
      • Address Payable
      • Como os contratos e funções recebem Ether.
      • Transferências de Ether
      • Conceitos Avançados
        • Codificação de ABI
        • Hashing
        • This
        • Herança
        • Abstract
        • Interface
        • Chamada entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • Módulo 3
    • ERCs, Bibliotecas e Padrões de Desenvolvimento
      • Boas Práticas de Desenvolvimento
      • Padrões de Desenvolvimento
      • EIP & ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crie um Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • Módulo 4
    • Kit de ferramentas para desenvolvimento na Ethereum
      • Requisitos para o módulo 4
        • Terminal
        • Git e Github
        • Node.js e npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • Exercício
        • Hardhat
          • Implantação de um contrato no Hardhat
          • Implantação de um contrato em uma rede pública
        • Scaffold-ETH
          • Características do Scaffold-ETHCaracterísticas
          • Como instalar o Scaffold-ETH
  • Módulo 5
    • Segurança, Testes e Auditorias
      • Testes
        • Importância de realizar testes
        • Métodos para testar contratos inteligentes
          • Testes automatizados
          • Testes manuais
        • Conceitos importantes em testes
        • Ferramentas para testes
        • Testes com Hardhat
        • Recursos adicionais
      • Segurança
        • Uma mentalidade diferente de design
        • Principais vulnerabilidades em contratos inteligentes
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repetición)
          • Price Oracle Manipulation (Manipulación de Oráculos de Precios)
          • Missing Access Control (Pérdida de Control de Acceso)
          • Reward Manipulation (Manipulación de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Quebra de Invariantes)
          • Mishandling of ETH (Má gestão de ETH)
          • Denial of Service (DoS - Negação de Serviço)
          • Integer overflow and underflow (Overflow e Underflow de inteiros)
          • Phishing y Typosquatting
        • Recursos adicionais
      • Auditoria de smart contracts
        • Processo de Auditoria
        • Ferramentas
        • Como se preparar para uma auditoria
        • O teste Rekt
        • Desafios
        • Recursos adicionais
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page
  • Principais Características das Bibliotecas do OpenZeppelin
  • Componentes do OpenZeppelin
  • Como Usar o OpenZeppelin
  1. Módulo 3
  2. ERCs, Bibliotecas e Padrões de Desenvolvimento

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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:

npm install @openzeppelin/contracts

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:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1000000 * (10 ** uint256(decimals())));
    }
}

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:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "<https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol>";

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1000 * (10 ** uint256(decimals())));
    }
}

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.

PreviousERC-721NextCrie um Token ERC-20

Last updated 5 months ago

Esta lista é apenas uma referência dos contratos disponíveis no OpenZeppelin. Para revisar a lista completa, acesse: seção API.

Para conhecer em detalhes os contratos e utilidades disponíveis no OpenZeppelin, sugerimos revisar seu. Você também pode assistir a explicativo em espanhol.

https://docs.openzeppelin.com/contracts/5.x/
GitHub
este video