TRUFFL -Migration: Ein leistungsstarkes Tool für die automatisierte Bereitstellung von Smart Contracts
Migrationen sind eine Möglichkeit für Entwickler, die Bereitstellung von Daten und deren Unterstützungsstruktur zu automatisieren. Sie sind sehr nützlich bei der Verwaltung der Bereitstellung neuer Softwareversionen und sind nicht auf Blockchain -Entwicklung beschränkt.
MitMigration mit Trüffel können wir intelligente Verträge in die Ethereum -Blockchain (lokal, testNet oder mainnet) "verschieben" und die erforderlichen Schritte für die Verbindung des Vertrags festlegen und die anfänglichen Daten des Vertrags bevölkern.
Der eigentliche Vorteil der Trüffelmigration besteht darin, Vertragsadressen auf der Blockchain zu verwalten. Diese normalerweise mühsame Arbeit wird durch Trüffel fast vollständig abstrahiert.
Schlüsselpunkte
truffle compile
zu verwenden, um Verträge zu erstellen, um Artefakte zu erzeugen, die die Wechselwirkung zwischen dem Vertrag und der Blockchain vor dem Ausführen der Migration erleichtern. Vorsichtsmaßnahmen
Stellen Sie sicher, dass das Trüffel -Framework und die Ganache -CLI installiert sind.
Anfänger
Wählen Sie zunächst einen Projektordner aus und führen Sie truffle init
aus. Sie sollten eine Ausgabe wie folgt erhalten:
<code>Downloading... Unpacking... Setting up... Unbox successful. Sweet! Commands: Compile: truffle compile Migrate: truffle migrate Test contracts: truffle test</code>
Dieser Befehl erstellt ein grundlegendes TRUFFL -Projekt in Ihrem Verzeichnis. Die Verzeichnisstruktur lautet wie folgt:
<code>. ├── contracts │ └── Migrations.sol ├── migrations │ └── 1_initial_migration.js ├── test ├── truffle-config.js └── truffle.js</code>
Erstellen Sie im Verzeichnis contracts
zuerst eine neue Datei mit dem Namen Storage.sol
mit dem folgenden Inhalt:
pragma solidity ^0.4.21; contract Storage { mapping (string => string) private _store; function addData(string key, string value) public { require(bytes(_store[key]).length == 0); _store[key] = value; } function removeData(string key) public returns (string) { require(bytes(_store[key]).length != 0); string prev = _store[key]; delete _store[key]; return prev; } function changeData(string key, string newValue) public { require(bytes(_store[key]).length != 0); _store[key] = newValue; } }
Initiale Migration
Sie haben möglicherweise festgestellt, dass beim Ausführen truffle init
: Migrations.sol
und 1_initial_migration.js
zwei Dateien erstellt werden.
Erste Migrationsdateien erfordern selten Änderungen. Ihre Rolle besteht im Wesentlichen darin, Adressen auf der Blockchain zu verfolgen.
Die Datei Migrations.sol
kann so geschrieben werden, wie Sie es möchten. Sie muss jedoch der festen Schnittstelle entsprechen, die vom Befehl truffle init
erstellt wurde. Sie können einige erweiterte Migrationen in diesen Dateien durchführen, aber wie gesagt, dies wird selten benötigt.
1_initial_migration.js
Dateien. Sein Zweck ist einfach, die Migrations.sol
-Datei in die Zielblockchain zu bringen.
migrieren Sie Daten
Um intelligente Verträge für die Ethereum -Blockchain bereitzustellen, müssen Sie zuerst die Migrationsdatei schreiben. Erstellen Sie zunächst in Ihrem migrations
-Verzeichnis eine Datei mit dem Namen 2_deploy_contracts.js
. Ihre Projektstruktur sollte jetzt so aussehen:
<code>Downloading... Unpacking... Setting up... Unbox successful. Sweet! Commands: Compile: truffle compile Migrate: truffle migrate Test contracts: truffle test</code>
Um intelligente Verträge mithilfe von Migration bereitzustellen, müssen wir zunächst auf ihre -Argnakte zugreifen. Diese Dateien beschreiben die Vertragsadresse, das Netzwerk, in dem der Vertrag bereitgestellt wurde, und die Funktionen, die der Vertrag hat.
Woher kommen all diese Daten?
In Ihrem Projektverzeichnis reiten Sie truffle compile
aus. Wenn alles gut läuft, sollten Sie eine Ausgabe wie folgt erhalten:
<code>. ├── contracts │ └── Migrations.sol ├── migrations │ └── 1_initial_migration.js ├── test ├── truffle-config.js └── truffle.js</code>
Abhängig von der Compiler -Version erhalten Sie möglicherweise einige Warnungen, aber solange es keine Fehler gibt, können Sie fortfahren.
Überprüfen Sie nun Ihre Projektverzeichnisstruktur erneut:
pragma solidity ^0.4.21; contract Storage { mapping (string => string) private _store; function addData(string key, string value) public { require(bytes(_store[key]).length == 0); _store[key] = value; } function removeData(string key) public returns (string) { require(bytes(_store[key]).length != 0); string prev = _store[key]; delete _store[key]; return prev; } function changeData(string key, string newValue) public { require(bytes(_store[key]).length != 0); _store[key] = newValue; } }
Beachten Sie, dass es jetzt einen build
-Firne gibt, der zwei Dateien enthält - Migrations.json
und Storage.json
- mit den intelligenten Vertragsdateien im Verzeichnis contracts
übereinstimmt.
Diese *.json -Dateien enthalten Beschreibungen ihrer jeweiligen intelligenten Verträge. Zu den Beschreibungen gehören:
Mit dieser Datei können TRUFFL JavaScript -Wrapper für die Kommunikation mit intelligenten Verträgen erstellen. Wenn Sie beispielsweise in JavaScript Code contract.address
aufrufen, liest das TRUFFL -Framework die Adresse aus der *.json -Datei und implementiert eine einfache Konvertierung zwischen der Vertragsversion und dem Netzwerk.
Migrationsdateien schreiben
Schreiben wir mit diesem Wissen die erste Migrationsdatei. Schreiben Sie in der Datei 2_deploy_contracts.js
Folgendes:
<code>. ├── contracts │ ├── Migrations.sol │ └── Storage.sol ├── migrations │ ├── 1_initial_migration.js │ └── 2_deploy_contracts.js ├── test ├── truffle-config.js └── truffle.js</code>
Eine Migrationsdatei schreiben ist so einfach. Führen Sie den folgenden Befehl im Terminal aus:
, um das Migrationsskript auszuführen:<code>Compiling ./contracts/Migrations.sol... Compiling ./contracts/Storage.sol... Writing artifacts to ./build/contracts</code>
Sie sollten eine Fehlermeldung erhalten:
<code>. ├── build │ └── contracts │ ├── Migrations.json │ └── Storage.json ├── contracts │ ├── Migrations.sol │ └── Storage.sol ├── migrations │ ├── 1_initial_migration.js │ └── 2_deploy_contracts.js ├── test ├── truffle-config.js └── truffle.js</code>
Dies bedeutet, dass Trüffel das Netzwerk, in dem Sie bereitstellen möchten, nicht finden kann.
ganache-cli
Um die simulierte Ethereum -Blockchain zu verwenden, laufen Sie
Dies bedeutet, dass Sie eine private Blockchain gestartet haben, die auf Localhost beträgt: 8545. Lassen Sie uns nun Trüffel einrichten, um sie im Netzwerk bereitzustellen.
truffle.js
Führen Sie Folgendes in die Datei
// 从 Storage.json 文件中获取 Storage 合约数据 var Storage = artifacts.require("./Storage.sol"); // JavaScript 导出 module.exports = function(deployer) { // deployer 是 Truffle 用于将合约部署到网络的包装器 // 将合约部署到网络 deployer.deploy(Storage); }
Dies bedeutet lediglich, dass Sie Ihren Vertrag in einem Netzwerk, das auf Localhost ausgeführt wird: 8545, bereitstellen.
truffle migrate
Jetzt run
build
TRUFFE migrt Ihren Vertrag in das Netzwerk und speichert Artefakte. Überprüfen Sie im Verzeichnis Storage.json
in der Datei networks
, dass dies korrekt ist, indem das Objekt
... (Der nachfolgende Inhalt entspricht dem Originaltext, einschließlich der Verarbeitung mehrerer Verträge, Netzwerke, Konten, Bibliotheken sowie der endgültigen Zusammenfassung und der FAQ, die hier nicht wiederholt werden.)
Das obige ist der detaillierte Inhalt vonTrüffelmigrationen erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!