Zeppelin OS - mais um passo em direção a contratos inteligentes e seguros

O Ethereum agora é uma das plataformas mais populares para a criação de aplicativos descentralizados, que estão sendo desenvolvidos ativamente. Uma das inovações do Zeppelin que tentaremos hoje com nossas próprias mãos. E para quem está no "tanque", a Zeppelin é uma empresa que desenvolve e verifica a segurança de contratos inteligentes. A biblioteca de contratos inteligentes do OpenZeppelin é o produto mais conhecido.



Verificou-se que as ferramentas de desenvolvimento do Solidity ainda estão em desenvolvimento, às vezes não permitindo que os desenvolvedores usem todo o poder da tecnologia de contrato inteligente. Por exemplo, as "bibliotecas padrão" são uma limitação, pois cada vez que um código existente é recarregado na rede, o que leva a um aumento no custo de "implantação" do código e o número de erros em potencial. Tudo isso leva a limitações significativas na criação de aplicativos descentralizados grandes e multifuncionais.


O que é o zeppelin OS?




O Zeppelin OS é uma plataforma de código aberto que consiste em ferramentas e serviços sobre EVM, projetada para desenvolver e gerenciar aplicativos descentralizados.


A equipe do Zeppelin identificou os quatro componentes mais importantes, alguns dos quais já estão implementados e disponíveis para uso.


  • O Zeppelin OS Kernel é uma plataforma “central” atualizada e orientada pela comunidade. Consiste em um conjunto de bibliotecas no blockchain que os desenvolvedores podem conectar aos seus projetos. A Pioneer foi o OpenZeppelin, que já está disponível para uso.
  • O Zeppelin OS Scheduler permitirá que os contratos solicitem execução assíncrona de uma função e também permite que qualquer participante pague os custos do gás, recebendo uma recompensa por isso.
  • O Zeppelin OS Marketplace é um componente importante da interação entre contratos e aplicativos, um tipo de App Store / Google Play para o blockchain. Permite usar outros serviços para criar aplicativos mais complexos.
  • Ferramentas off-chain do Zeppelin OS - um conjunto de ferramentas para trabalhar e analisar aplicativos descentralizados.

Hora de tentar você mesmo!


Eu realmente queria começar a trabalhar com o Zeppelin OS, escrever o primeiro contrato e atualizá-lo. Verifique se tudo está realmente certo e se os desenvolvedores enganaram.


Portanto, deixando o dispositivo do armazenamento e proxy atualizados para artigos futuros, passaremos para a funcionalidade já implementada.


Toda a documentação do Zeppelin OS pode ser visualizada aqui . Primeiro você precisa instalar o zos:


$ npm install --global zos 

Agora crie o diretório do projeto e tudo o que você precisa para ele:


 $ mkdir zostest && cd zostest $ npm init $ zos init zostest 

Depois disso, todos os arquivos de configuração necessários serão criados, para que você possa continuar a escrever contratos. Como um contrato de teste, vamos escrever um pequeno "repositório de variáveis":


 pragma solidity 0.4.24; import "zos-lib/contracts/migrations/Migratable.sol"; contract SimpleStorage is Migratable {  uint storedData; function initialize(uint256 _x) isInitializer("SimpleStorage", "0") public { storedData = _x; }  function get() public constant returns (uint) {    return storedData;  } } 

Compilamos e adicionamos nosso contrato:


 $ zos add SimpleStorage 



Execute a rede de teste (em um terminal separado):


 $ npx ganache-cli --port 9545 

Entramos em nossa rede local enquanto criamos um novo arquivo de configuração zos.local.json :


 $ zos push --network local 



A coisa é pequena, resta criar o nosso contrato atualizado, execute simultaneamente initialize() com o argumento 88 para o nosso "repositório":


 $ zos create SimpleStorage --init initialize --args 88 --network local 



Agora vamos tentar adicionar uma função para aumentar a variável no "armazenamento", por exemplo, isto:


 pragma solidity 0.4.24; import "zos-lib/contracts/migrations/Migratable.sol"; contract SimpleStorage is Migratable {  uint storedData; function initialize(uint256 _x) isInitializer("SimpleStorage", "0") public { storedData = _x; } function incrementStorage(uint256 _x) public { storedData += _x; }  function get() public constant returns (uint) {    return storedData;  } } 

Então você precisa atualizar o contrato na rede:


 $ zos push --network local 



 $ zos update SimpleStorage --network local 



Agora você pode ver o que aconteceu. Para fazer isso, use o truffle console :


 $ npx truffle console --network=local truffle(local)> sS = SimpleStorage.at(<proxy-address>) 

E <proxy-address> pode ser visualizado em zos.local.json na coluna correspondente, e verificaremos o que temos no "repositório" e se podemos aumentar a variável:




Tudo funciona muito bem, existem muitas oportunidades para testar contratos. Eu diria que o Zeppelin OS pode ser usado como uma ferramenta de desenvolvimento, com certeza.


O que fizemos?


Verificamos que, com o Zeppelin OS, você pode implantar, atualizar, compilar e testar contratos. Parece ser uma ótima ferramenta para quem gosta de trabalhar com a linha de comando, e o Remix treme no navegador. Além disso, você pode recomendar o início de uma introdução ao Solidity e aos contratos inteligentes com este projeto em particular.

Source: https://habr.com/ru/post/pt424801/


All Articles