Automatisierte Bereitstellung für IPFS und ENS – Michael Bauer

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining


So veröffentlichen Sie Ihre dezentrale Website automatisch mit IPFS und Ethereum Name Service

Sie haben also einen netten ENS-Namen registriert und möchten Ihre Site / Dapp über ipfs und den Ethereum Name Service verfügbar machen. Es sind einige Schritte erforderlich, um dies zu einem nahtlosen Bestandteil Ihrer Bereitstellungsskripts zu machen.

In diesem Handbuch gehen wir davon aus, dass Sie bereits die Grundlagen zum Hosten einer Site mit IPFS und ENS kennen. Der Schwerpunkt liegt auf der Automatisierung der Bereitstellung und der Anpassung Ihres CI-Workflows. Wenn Sie mit ENS und IPFS nicht vertraut sind, werden möglicherweise einige Fragezeichen angezeigt

Node.js Version: Zum Zeitpunkt des Schreibens ens-updater kann nicht auf Knotenversionen ≥ 12.x installiert werden, da für einige Abhängigkeiten ein Verschlüsselungsmodul erforderlich ist, das nicht erstellt werden kann. Dieses Problem wird in https://github.com/TripleSpeeder/ens-updater/issues/44 nachverfolgt. Bis das Problem behoben ist, verwenden Sie bitte Node Version 10 oder niedriger.

Die Bereitstellung Ihrer dezentralen Site erfolgt in zwei Schritten:

  1. Veröffentlichen Sie den Inhalt in IPFS, und beziehen Sie die neue CID
  2. Stellen Sie den IPFS-Eintrag Ihres ENS-Namens so ein, dass er auf die neue CID verweist

Für beide Schritte stehen Kommandozeilen-Tools zur Verfügung. Zuerst werden wir jeden Schritt im Detail betrachten, dann werden wir eine Travis-Konfiguration erstellen, die die Bereitstellungen vollständig automatisiert.

Schritt 1 – In ipfs veröffentlichen

Für diese Aufgabe verwenden wir das CLI-Tool ipfs-deploy. Installiere es global via npm:

> npm install -g ipfs-deploy

Dieses Tool ist sehr einfach zu bedienen. Sie müssen nur den Build-Ordner angeben, den Sie bereitstellen möchten, und die IPFS-Pinning-Dienste auswählen, die Sie verwenden möchten.

Angenommen, die Produktionsversion Ihrer App befindet sich im Ordner bauen Sie können den folgenden Befehl ausführen, um über den öffentlich verfügbaren infura ipfs-Knoten bereitzustellen:

> ipfs-deploy build -p infura

Beachten Sie die CID-Zeichenfolge Qm… zur Verfügung gestellt von ipfs-deploy. Dies ist die eindeutige Kennung für Ihren Build, die Ihrem ENS-Namen hinzugefügt werden muss.

Ipfs-Bereitstellung unterstützt eine Reihe von verschiedenen IPFS-Pinning-Diensten, von denen einige eine Authentifizierung erfordern. Weitere Informationen finden Sie in der Readme-Datei.

Das ist alles für Schritt 1 – Ihr Build ist jetzt veröffentlicht! Lesen Sie weiter, um zu erfahren, wie Sie Ihren ENS-Namensdatensatz aktualisieren.

Schritt 2 – Stellen Sie den Content-Hash-Eintrag Ihres ENS-Namens ein

Für diesen Schritt verwenden wir das CLI-Tool ens-updater. Installiere es global via npm:

> npm installiere -g @ triplespeeder / ens-updater

ens-updater unterstützt eine Reihe von verschiedenen Befehlen zur Verwaltung Ihres ENS-Namens. In diesem Lernprogramm möchten wir nur den Content-Hash-Eintrag Ihres Namens festlegen, damit er auf die CID verweist, die Sie in Schritt 1 erhalten haben. Überprüfen Sie die Ausgabe von ens-updater --hilfe für eine übersicht der unterstützten befehle und die github seite für weitere informationen.

Da wir mit den ENS-Smart-Verträgen interagieren müssen, um den Content-Hash-Eintrag zu aktualisieren, müssen wir zwei Dinge fortsetzen:

  • Zugriff auf einen Ethereum-Knoten, um mit dem Vertrag zu interagieren
  • Der private Schlüssel des Kontos, das den ENS-Namen steuert

Sie können den privaten Schlüssel entweder direkt oder indirekt über die mnemonische Zeichenfolge (und den optionalen Kontenindex) bereitstellen. Für beide Optionen müssen Sie entweder die Informationen in die Datei einfügen .env oder legen Sie eine Umgebungsvariable fest.

In diesem Tutorial speichern wir den privaten Schlüssel in einer .env-Datei. Öffnen Sie den gewünschten Texteditor und erstellen Sie die Datei .env in Ihrem Arbeitsverzeichnis:

PRIVATE_KEY =

Rufen Sie auf, um sicherzustellen, dass alles korrekt eingerichtet ist ens-updater mit dem --Probelauf Möglichkeit. Wenn diese Option aktiviert ist, werden keine echten Transaktionen ausgeführt, sondern potenzielle Konfigurations- oder Einrichtungsprobleme gemeldet.

Beispiel: Der vollständige Befehl zum Festlegen des Inhaltshash-Datensatzes des ENS-Namens mysite.eth an die IPFS-CID Qmd2yEHMTswLppDkWNjEMH4WwAgeuFXYeMHSn4VcJMcvKy im Trockenlaufmodus:

> ens-updater setContenthash mysite.eth ipfs-ns Qmd2yEHMTswLppDkWNjEMH4WwAgeuFXYeMHSn4VcJMcvKy --web3 http: // localhost: 8545 --verbose --dry-run

Überprüfen Sie die resultierende Ausgabe, um festzustellen, ob ein Fehler gemeldet wird. Andernfalls können Sie ohne die fortfahren - ProbelaufMöglichkeit!

Zeigen Sie nun mit Ihrem Browser auf http: //meinesite.eth. Vorausgesetzt, Ihr System ist für die Arbeit mit .eth-Domains richtig eingerichtet, sollten Sie Ihre Site in Aktion sehen!

Das ist alles für Schritt 2 – Ihre Website ist jetzt über Ihren ENS-Namen erreichbar! Lesen Sie weiter, um Travis für die automatische Bereitstellung einzurichten.

Um die obigen Schritte mit Travis zu automatisieren, müssen wir:

  • Erstellen Sie ein Bereitstellungsskript, das kombiniert wird ipfs-deploy und ens-updater, von Travis in der Bereitstellungsphase ausgeführt werden
  • Richten Sie Travis ein, um das Bereitstellungsskript auszuführen
  • Richten Sie Umgebungsvariablen für travis so ein ens-updater hat Zugriff auf den privaten Schlüssel

Das Bereitstellungsskript

Schon seit ipfs-deploy Liefert die CID über stdout und ens-updater kann so eingerichtet werden, dass die CID von stdin gelesen wird. Wir können die beiden Befehle in einem kleinen Shell-Skript wie dem folgenden zusammenfassen:

#! / bin / bash
ipfs-deploy build -p $ 1 -C -O | ens-updater setContenthash mysite.eth ipfs-ns stdin -v --web3 $ 2

Dieses Skript erwartet, dass der Pinner-Dienst für die Bereitstellung als erstes Argument und die Web3-Verbindungszeichenfolge als zweites Argument verwendet wird. Beachten Sie auch, dass durch Angabe der Sonderzeichenfolge "stdin" als CID für ens-updater es kann die CID von stdin lesen.

Fügen Sie dieses Skript zu Ihrem Projekt hinzu, damit es Teil des Repositorys ist und Travis zur Verfügung steht.

Travis-Konfiguration

Bearbeiten Sie nun travis.yaml, um Ihr Skript während der Bereitstellungsphase auszuführen. Hier ist eine (abgespeckte) Beispielkonfiguration aus einem realen Projekt, wobei wichtige Teile hervorgehoben werden:

os: linux
Sprache: node_js
node_js: 10
Arbeitsplätze:
umfassen:
- Name: "IPFS"
Installieren:
- npm ci
- npm install -g ipfs-deploy
- npm install -g @ triplespeeder / ens-updater

script: npm run build
bereitstellen:
Anbieter: Skript
script: bash scripts / deploy_ipfs.sh pinata https://mainnet.infura.io/v3/$INFURA_ID
skip_cleanup: true

Das Installieren phase enthält die zusätzlichen Befehle zum Installieren der Tools ipfs-deploy und ens-updater.

Das bereitstellen phase führt das soeben erstellte Bereitstellungsskript mit dem ipfs-Pinner-Dienst „pinata“ und einer Web3-Instanz von infura aus. Vergiss das nicht skip_cleanup Option – Andernfalls löscht Travis den Build-Ordner, bevor die Bereitstellung gestartet wird.

Das letzte fehlende Teil ist die Bereitstellung des privaten Schlüssels des ENS-Namenscontrollerkontos. Lass uns das einrichten!

  • Gehen Sie zu Ihrer Projektseite in Travis
  • Öffnen Sie die Einstellungsseite
  • Gehen Sie zum Abschnitt "Umgebungsvariablen"

Fügen Sie eine neue Umgebungsvariable mit dem Namen "PRIVATE_KEY" hinzu und fügen Sie Ihren privaten Schlüssel in das Feld VALUE ein. Setzen Sie das Feld BRANCH auf Ihren Hauptzweig, da Bereitstellungen nur vom Hauptzweig ausgeführt werden. Stellen Sie sicher, dass NICHT überprüfen Sie "Anzeigewert im Build-Protokoll" – Andernfalls könnte jeder Ihren privaten Schlüssel in den Build-Protokollen sehen.

In meinem Fall habe ich auch Umgebungsvariablen für den Dienst pinata ipfs und den Dienst infura web3 sowie ein Github-Token für die optionale Bereitstellung auf Github-Seiten hinzugefügt. Hier ist ein Screenshot des kompletten Setups:

Lösen Sie mit diesen Änderungen einen neuen Build aus. Wenn alles gut geht, endet Ihr Build-Protokoll folgendermaßen:

Und das ist es! Jedes Mal, wenn Sie ein Update an Ihren Master-Zweig senden, werden die Änderungen in IPFS implementiert und der Content-Hash-Datensatz Ihres ENS-Namens aktualisiert.

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close