OpenZeppelin — Biblioteca Solidity

Marcelo Morgado
2 min readJun 11, 2018

--

O projeto OpenZeppelin é um repositório open-source com contratos padrões (Ex.: ERC20, TokenSale/ICO e etc) para reuso.
Seus contratos são utilizados por muitas soluções e por isso são testados e auditados com frequência pela comunidade de desenvolvedores.
Como um dos principais requisitos em aplicações descentralizadas é a segurança, a biblioteca OpenZeppelin vem sido muito utilizada e no momento em que escrevo, os ativos digitais (tokens) mantidos por smart contracts que utilizam a biblioteca atingem o valor de $4.5 bilhões.

Veremos neste post como utilizarmos o OpenZeppelin em nosso projeto. Após a instalação iremos criar nova versão do token implementado nos posts anteriores (parte 1 e parte 2). As chances de nosso token possuir alguma falha de segurança será menor neste caso.

Observação: O uso da biblioteca não é garantia de projeto livre de falhas e imune a hacks.

Instalação

Vamos realizar a instalação em novo projeto Solidity:

$ mkdir mytoken
$ cd mytoken
$ truffle init
$ npm init -y
$ npm install -E openzeppelin-solidity

Uso

Agora que estamos com a biblioteca adicionada ao nosso projeto, podemos criar nosso token. Para isso, vamos criar o arquivo contracts/MyToken2.sol:

pragma solidity ^0.4.23;import 'openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol';contract MyToken2 is BasicToken {  string public constant name = "MyToken2";
string public constant symbol = "MYT2";
uint8 public constant decimals = 18;
constructor() public {
totalSupply_ = 100 * (10 ** uint256(decimals));
balances[msg.sender] = totalSupply_;
}
}

Nosso token já está pronto para ser compilado e implantado. Os métodos da segunda versão do nosso token são os mesmos implementados anteriormente. O código oriundo da biblioteca também possui implementações adicionais de segurança (pretendo explicar em detalhe em post que farei sobre segurança em smart contracts Ethereum).

Conclusão

Este post tem como objetivo apresentar e recomendar o uso da biblioteca OpenZeppelin aos desenvolvedores. Além do ganho em eficiência no desenvolvimento, seu uso poderá incrementar significativamente a segurança dos projetos. Deixo ainda a recomendação para que o leitor acesse o repositório da biblioteca e estude seus códigos a fim aprofundar seus conhecimentos.

--

--