Ethereum ist heute eine der beliebtesten Plattformen für die Erstellung dezentraler Anwendungen, die derzeit aktiv entwickelt wird. Eine der Zeppelin-Innovationen, die wir heute mit eigenen Händen ausprobieren werden. Und für diejenigen, die sich im „Tank“ befinden, ist Zeppelin ein Unternehmen, das die Sicherheit intelligenter Verträge entwickelt und überprüft. Die OpenZeppelin Smart Contract Library ist das bekannteste Produkt.
Es stellte sich heraus, dass sich die Entwicklungstools für Solidity noch weiterentwickeln und es Entwicklern manchmal nicht ermöglichen, die volle Leistung der Smart Contract-Technologie zu nutzen. Zum Beispiel sind die "Standardbibliotheken" eine Einschränkung, da jedes Mal, wenn ein vorhandener Code in das Netzwerk neu geladen wird, die Kosten für die "Bereitstellung" des Codes und die Anzahl potenzieller Fehler steigen. All dies führt zu erheblichen Einschränkungen bei der Erstellung großer und multifunktionaler dezentraler Anwendungen.
Was ist Zeppelin OS?

Zeppelin OS ist eine Open Source-Plattform, die aus Tools und Diensten über EVM besteht und zur Entwicklung und Verwaltung dezentraler Anwendungen entwickelt wurde.
Das Zeppelin-Team identifizierte die vier wichtigsten Komponenten, von denen einige bereits implementiert und zur Verwendung verfügbar sind.
- Der Zeppelin OS Kernel ist eine aktualisierte und Community-gesteuerte „Core“ -Plattform. Es besteht aus einer Reihe von Bibliotheken in der Blockchain, mit denen Entwickler eine Verbindung zu ihren Projekten herstellen können. Pionier war OpenZeppelin, das bereits zur Verfügung steht.
- Mit Zeppelin OS Scheduler können Verträge die asynchrone Ausführung einer Funktion anfordern. Außerdem kann jeder Teilnehmer die Gaskosten bezahlen und erhält dafür eine Belohnung.
- Der Zeppelin OS Marketplace ist ein wichtiger Bestandteil der Interaktion zwischen Verträgen und Anwendungen, eine Art App Store / Google Play für die Blockchain. Ermöglicht die Verwendung anderer Dienste zum Erstellen komplexerer Anwendungen.
- Off-Chain-Tools für Zeppelin OS - eine Reihe von Tools zum Arbeiten und Analysieren dezentraler Anwendungen.
Zeit, es selbst zu versuchen!
Ich wollte unbedingt mit Zeppelin OS arbeiten, den ersten Vertrag schreiben und ihn aktualisieren. Überprüfen Sie, ob wirklich alles so ist und ob die Entwickler getäuscht haben.
Wenn wir das Gerät des aktualisierten Speichers und Proxys für zukünftige Artikel belassen, werden wir mit der bereits implementierten Funktionalität fortfahren.
Die gesamte Zeppelin OS-Dokumentation kann hier eingesehen werden . Zuerst müssen Sie zos installieren:
$ npm install --global zos
Erstellen Sie nun das Projektverzeichnis und alles, was Sie dafür benötigen:
$ mkdir zostest && cd zostest $ npm init $ zos init zostest
Danach werden alle erforderlichen Konfigurationsdateien erstellt, sodass Sie nun mit dem Schreiben von Verträgen fortfahren können. Schreiben wir als Testvertrag ein kleines „Repository mit Variablen“:
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; } }
Wir kompilieren und fügen unseren Vertrag hinzu:
$ zos add SimpleStorage

Führen Sie das Testnetzwerk aus (in einem separaten Terminal):
$ npx ganache-cli --port 9545
Wir drängen in unser lokales Netzwerk und erstellen eine neue Konfigurationsdatei zos.local.json
:
$ zos push --network local

Die Sache ist klein, es bleibt, unseren aktualisierten Vertrag zu erstellen, gleichzeitig initialize()
mit Argument 88 für unser "Repository" auszuführen:
$ zos create SimpleStorage --init initialize --args 88 --network local

Versuchen wir nun, eine Funktion hinzuzufügen, um die Variable im "Speicher" zu erhöhen, zum Beispiel:
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; } }
Dann müssen Sie den Vertrag im Netzwerk aktualisieren:
$ zos push --network local

$ zos update SimpleStorage --network local

Jetzt können Sie sehen, was passiert ist. Verwenden Sie dazu die truffle console
:
$ npx truffle console --network=local truffle(local)> sS = SimpleStorage.at(<proxy-address>)
Und <proxy-address>
kann in zos.local.json
in der entsprechenden Spalte zos.local.json
Wir werden prüfen, was sich im "Repository" befindet und ob wir die Variable erhöhen können:

Alles funktioniert super, es gibt viele Möglichkeiten, Verträge zu testen. Ich würde sagen, dass Zeppelin OS mit Sicherheit als Entwicklungswerkzeug verwendet werden kann.
Was haben wir getan
Wir haben überprüft, dass Sie mit Zeppelin OS Verträge bereitstellen, aktualisieren, kompilieren und testen können. Es scheint ein großartiges Werkzeug für diejenigen zu sein, die gerne mit der Befehlszeile arbeiten, und Remix zittert im Browser. Außerdem können Sie empfehlen, mit diesem speziellen Projekt eine Einführung in Solidity und Smart Contracts zu beginnen.