Free Bitcoins: FreeBitcoin | BonusBitcoin
Coins Kaufen: Bitcoin.de | AnycoinDirekt | Coinbase | CoinMama (mit Kreditkarte) | Paxfull
Handelsplätze / Börsen: Bitcoin.de | KuCoin | Binance | BitMex | Bitpanda | eToro
Lending / Zinsen erhalten: Celsius Network | Coinlend (Bot)
Cloud Mining: Hashflare | Genesis Mining | IQ 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:
- Veröffentlichen Sie den Inhalt in IPFS, und beziehen Sie die neue CID
- 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 - Probelauf
Mö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.de | AnycoinDirekt | Coinbase | CoinMama (mit Kreditkarte) | Paxfull
Handelsplätze / Börsen: Bitcoin.de | KuCoin | Binance | BitMex | Bitpanda | eToro
Lending / Zinsen erhalten: Celsius Network | Coinlend (Bot)
Cloud Mining: Hashflare | Genesis Mining | IQ Mining