Ethereum est désormais l'une des plates-formes les plus populaires pour la création d'applications décentralisées, qui est activement développée. L'une des innovations Zeppelin que nous allons essayer aujourd'hui de nos propres mains. Et pour ceux qui sont dans le «tank», Zeppelin est une entreprise qui développe et vérifie la sécurité des contrats intelligents. La bibliothèque de contrats intelligents OpenZeppelin est leur produit le plus connu.

Il s'est avéré que les outils de développement pour Solidity sont toujours en développement, ne permettant parfois pas aux développeurs d'utiliser toute la puissance de la technologie des contrats intelligents. Par exemple, les «bibliothèques standard» sont une limitation, car chaque fois qu'un code existant est rechargé sur le réseau, ce qui entraîne une augmentation du coût de «déploiement» du code et du nombre d'erreurs potentielles. Tout cela conduit à des limitations importantes dans la création d'applications décentralisées volumineuses et multifonctionnelles.
Qu'est-ce que zeppelin OS?

Zeppelin OS est une plateforme open source composée d'outils et de services via EVM, conçue pour développer et gérer des applications décentralisées.
L'équipe Zeppelin a identifié les quatre composants les plus importants, dont certains sont déjà implémentés et disponibles pour utilisation.
- Zeppelin OS Kernel est une plate-forme «de base» mise à jour et dirigée par la communauté. Il se compose d'un ensemble de bibliothèques dans la blockchain que les développeurs peuvent connecter à leurs projets. Pioneer était OpenZeppelin, qui est déjà disponible pour utilisation.
- Zeppelin OS Scheduler permettra aux contrats de demander l'exécution asynchrone d'une fonction, et permettra également à tout participant de payer les frais de gaz, en recevant une récompense pour cela.
- Zeppelin OS Marketplace est une composante importante de l'interaction entre les contrats et les applications, une sorte d'App Store / Google Play pour la blockchain. Vous permet d'utiliser d'autres services pour créer des applications plus complexes.
- Zeppelin OS off-chain tools - un ensemble d'outils pour travailler et analyser les applications décentralisées.
Il est temps de l'essayer vous-même!
Je voulais vraiment commencer à travailler avec Zeppelin OS, écrire le premier contrat et le mettre à jour. Vérifiez si tout est vraiment le cas et si les développeurs se sont trompés.
Par conséquent, en laissant le périphérique de stockage mis à jour et le proxy pour les futurs articles, nous passerons à la fonctionnalité déjà implémentée.
Toute la documentation de Zeppelin OS peut être consultée ici . Vous devez d'abord installer des zos:
$ npm install --global zos
Créez maintenant le répertoire du projet et tout ce dont vous avez besoin:
$ mkdir zostest && cd zostest $ npm init $ zos init zostest
Après cela, tous les fichiers de configuration nécessaires seront créés, vous pouvez donc maintenant écrire des contrats. Comme contrat de test, écrivons un petit «référentiel 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; } }
Nous compilons et ajoutons notre contrat:
$ zos add SimpleStorage

Exécutez le réseau de test (dans un terminal séparé):
$ npx ganache-cli --port 9545
Nous poussons dans notre réseau local, tout en créant un nouveau fichier de configuration zos.local.json
:
$ zos push --network local

La chose est petite, il reste à créer notre contrat mis à jour, à exécuter simultanément initialize()
avec l'argument 88 pour notre "dépôt":
$ zos create SimpleStorage --init initialize --args 88 --network local

Essayons maintenant d'ajouter une fonction pour augmenter la variable dans le "stockage", par exemple, ceci:
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; } }
Ensuite, vous devez mettre à jour le contrat sur le réseau:
$ zos push --network local

$ zos update SimpleStorage --network local

Vous pouvez maintenant voir ce qui s'est passé. Pour ce faire, utilisez la truffle console
:
$ npx truffle console --network=local truffle(local)> sS = SimpleStorage.at(<proxy-address>)
Et <proxy-address>
peut être affiché dans zos.local.json
dans la colonne correspondante, et nous vérifierons ce que nous avons dans le "référentiel" et si nous pouvons augmenter la variable:

Tout fonctionne très bien, il existe de nombreuses opportunités pour tester des contrats. Je dirais que Zeppelin OS peut être utilisé comme un outil de développement à coup sûr.
Qu'avons-nous fait?
Nous avons vérifié qu'avec Zeppelin OS, vous pouvez déployer, mettre à jour, compiler et tester des contrats. Cela semble être un excellent outil pour ceux qui aiment travailler avec la ligne de commande et Remix frissonne dans le navigateur. De plus, vous pouvez recommander de commencer une introduction à Solidity et aux contrats intelligents avec ce projet particulier.