Zeppelin OS: otro paso hacia contratos inteligentes seguros

Ethereum es ahora una de las plataformas más populares para crear aplicaciones descentralizadas, que se está desarrollando activamente. Una de las innovaciones de Zeppelin que probaremos hoy con nuestras propias manos. Y para aquellos que están en el "tanque", Zeppelin es una compañía que desarrolla y verifica la seguridad de los contratos inteligentes. La biblioteca de contratos inteligentes OpenZeppelin es su producto más conocido.



Resultó que las herramientas de desarrollo de Solidity todavía se están desarrollando, a veces no permitiendo a los desarrolladores utilizar todo el poder de la tecnología de contrato inteligente. Por ejemplo, las "bibliotecas estándar" son una limitación, ya que cada vez que un código existente se vuelve a cargar en la red, lo que lleva a un aumento en el costo de "implementar" el código y la cantidad de posibles errores. Todo esto lleva a limitaciones significativas en la creación de aplicaciones descentralizadas grandes y multifuncionales.


¿Qué es zeppelin OS?




Zeppelin OS es una plataforma de código abierto que consta de herramientas y servicios a través de EVM, diseñada para desarrollar y administrar aplicaciones descentralizadas.


El equipo de Zeppelin identificó los cuatro componentes más importantes, algunos de los cuales ya están implementados y disponibles para su uso.


  • Zeppelin OS Kernel es una plataforma "núcleo" actualizada y dirigida por la comunidad. Consiste en un conjunto de bibliotecas en la cadena de bloques que los desarrolladores pueden conectar a sus proyectos. Pioneer fue OpenZeppelin, que ya está disponible para su uso.
  • Zeppelin OS Scheduler permitirá que los contratos soliciten la ejecución asincrónica de una función, y también permitirá que cualquier participante pague los costos del gas, recibiendo una recompensa por esto.
  • Zeppelin OS Marketplace es un componente importante de la interacción entre contratos y aplicaciones, una especie de App Store / Google Play para blockchain. Le permite usar otros servicios para crear aplicaciones más complejas.
  • Herramientas fuera de cadena de Zeppelin OS: un conjunto de herramientas para trabajar y analizar aplicaciones descentralizadas.

¡Es hora de probarlo tú mismo!


Tenía muchas ganas de empezar a trabajar con Zeppelin OS, escribir el primer contrato y actualizarlo. Comprueba si todo es realmente así y si los desarrolladores lo han engañado.


Por lo tanto, dejando el dispositivo del almacenamiento actualizado y el proxy para futuros artículos, pasaremos a la funcionalidad ya implementada.


Toda la documentación del sistema operativo Zeppelin se puede ver aquí . Primero necesitas instalar zos:


$ npm install --global zos 

Ahora cree el directorio del proyecto y todo lo que necesita para ello:


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

Después de eso, se crearán todos los archivos de configuración necesarios, por lo que ahora puede proceder a escribir contratos. Como contrato de prueba, escribamos un pequeño "repositorio de variables":


 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;  } } 

Recopilamos y agregamos nuestro contrato:


 $ zos add SimpleStorage 



Ejecute la red de prueba (en una terminal separada):


 $ npx ganache-cli --port 9545 

Ingresamos a nuestra red local, mientras creamos un nuevo archivo de configuración zos.local.json :


 $ zos push --network local 



La cosa es pequeña, queda por crear nuestro contrato actualizado, ejecutar simultáneamente initialize() con el argumento 88 para nuestro "repositorio":


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



Ahora intentemos agregar una función para aumentar la variable en el "almacenamiento", por ejemplo, esto:


 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;  } } 

Luego debe actualizar el contrato en la red:


 $ zos push --network local 



 $ zos update SimpleStorage --network local 



Ahora puedes ver lo que pasó. Para hacer esto, use la truffle console :


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

Y <proxy-address> se puede ver en zos.local.json en la columna correspondiente, y verifique lo que tenemos en el "repositorio" y si podemos aumentar la variable:




Todo funciona muy bien, hay muchas oportunidades para probar contratos. Yo diría que Zeppelin OS se puede usar como una herramienta de desarrollo seguro.


Que hemos hecho


Verificamos que con Zeppelin OS puede implementar, actualizar, compilar y probar contratos. Parece ser una gran herramienta para quienes les gusta trabajar con la línea de comandos, y Remix tiembla en el navegador. Además, puede recomendar comenzar una introducción a Solidity y contratos inteligentes con este proyecto en particular.

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


All Articles