eMark Blockexplorer erstellen

Heute möchte ich Euch zeigen, wie man einen Iquidus Blockexplorer für die eMark ans laufen bekommt.
Dabei setze ich voraus, das eMarkd installiert ist und die Blockchain voll geladen ist.
Als Verbindung zum Server nutze ich Putty. Lokal unter Ubuntu das Terminal. Achtet bitte darauf, alles unter einem User zu installieren, als root oder sudo su gibt es Probleme mit der Mongo Datenbank.
Nehmen wir an, wir sind als User “fritz” angemeldet.

Nodejs

Als erstes installieren wir Nodejs mit dem den Node Manager:

sudo apt-get update
sudo apt-get install build-essential libssl-dev
sudo apt-get install curl
curl https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash

Jetzt müssen wir unser Terminal schließen und uns neu einloggen um NVM nutzen zu können. Zum Testen geben wir

nvm --version

ein und sollten die neueste Version angezeigt bekommen. (v.0.33.4)
Jetzt können wir mit

nvm ls-remote

nachschauen, welche node Versionen verfügbar sind, und installieren v.0.10.48

nvm install v0.10.48

Mit

node -v

schauen wir ob alles geklappt hat.

Mongo Datenbank installieren und einrichten.

Dazu brauchen wir noch das Paket libkrb5-dev und installieren dann die Pakete für MongoDB

sudo apt-get install libkrb5-dev
sudo apt-get install mongodb
mongo --version

sollte uns die installierte Version zurück geben.

Wir starten MongoDB mit

mongo

und legen eine Datenbank an mit

> use explorerdb

User anlegen: Hast du eine Mongo Shell > 2.6 nutzt du cerateUser ansonnsten addUser. Als User musst du den User nehmen mit dem du auf dem Computer eingeloggt bist.

> db.createUser( { user: "fritz", pwd: "3xp!0reR", roles: [ "readWrite" ] } )

oder wenn eine Fehlermeldung kommt

> db.addUser( { user: "fritz", pwd: "3xp!0reR", roles: [ "readWrite" ] } )

Mit

> exit

verlassen wir mongo wieder

Prozessmanager PM2

PM2 ist ein Prozessmanager für die Verwaltung von Node.js-Prozessen. Zu den wichtigsten Features des PM2-Moduls zählen das automatische Neustarten von Node.js-Prozessen, die Aktualisierung von Prozessen mit nahezu keiner Downtime und das Monitoring der Prozesse hinsichtlich Speicherverbrauch, CPU oder Uptime. Anleitung hier: https://entwickler.de/online/javascript/pm2-prozessmanager-184546.html
Dieser Schritt ist nicht unbedingt notwendig, erleichtert das arbeiten mit dem Explorer jedoch erheblich.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv D1EA2D4C
echo "deb http://apt.pm2.io/ubuntu stable main" | sudo tee /etc/apt/sources.list.d/pm2.list
sudo apt-get update
sudo apt-get install pm2

Wenn alles geklappt hat gibt uns

pm2 -v

die installierte Version zurück.

Iquidus Blockexplorer

Jetzt kommen wir zu der eigentlichen Installation des Blockexplorers. Zur Bearbeitung der Dateien könnt ihr einen Texteditor eurer Wahl nehmen, für Anfänger empfehle ich NANO, da VI ein bischen Einarbeitungszeit braucht. (sudo apt-get install nano)

git sollte ja schon vom eMarkd installiert sein, wenn nicht, einfach mit

sudo apt-get install git

installieren.

Um auf dem neuesten Stand zu sein holen wir uns das Original von Iquidus

git clone https://github.com/iquidus/explorer.git

und installieren mit

cd explorer && npm install --production

und passen es auf unsere Bedürfnissen an. Als erstes das Icon und das eMark Logo

cd explorer/public/
rm favicon.ico
wget https://www.dropbox.com/s/s9b19rm5mcb7a4x/favicon.ico
cd images/
rm logo.png
wget https://www.dropbox.com/s/dxeedfsqas6ri33/logo.png

Anpassen der Netzwerkhashrate

Warum muß diese angepast werden? Bei der eMark gibt das RPC Komando “getnetworkhashps” die Hashrate in MEGA zurück. Der Blockexplorer rechnet somit also falsch um.

wir wechseln in den Ordner /lib/

cd lib/

und öffnen die Datei explorer.js

nano explorer.js

und ändern unter var uri = base_url + ‘getnetworkhashps’ die Zeilen Mega, Giga, Tera und Peta indem wir jeweils 6 Nullen entfernen. Mit gleichzeitigem drücken von STRG und o gefolgt von ENTER speichern wir die Datei und verlassen NANO mit STRG + x

Settings einstellen

entweder ihr bearbeitet die settings.json.template und benennt sie dann in settings.json um oder ihr nehmt meine vorgefertigten settings:

cd ..
wget https://www.dropbox.com/s/obs1zliyjgzcn97/settings.json
nano settings.json

Hier ändern wir nur noch die “database settings” und die “wallet settings”. Bei Database kommen zum Beispiel user: “fritz”, password: “3xp!0reR” rein und bei wallet eure Angaben aus der eMark.conf. Unter http://bootswatch.com/ kann man sich verschiedene Designs anschauen, welche man dann unter “theme” einstellen kann.
STRG+o, Enter, STRG+x speichert die Datei und verlässt NANO wieder.

Blockexplorer installieren

npm install --production

Warnungen können ignoriert werden, Fehler jedoch nicht.

Jetzt sollte alles für den ersten Start bereit sein. Stellt sicher, das eMarkd läuft.

npm start

Wenn alles so aussieht sind wir auf dem richtigen Weg
Wir können jetzt den Browser starten und schauen wie es aussieht. Läuft der Blockexplorer lokal, nutzen wir die IP Adresse http://127.0.0.1:3009/ auf dem Server die Server IP gefolgt von :3009

Wir beenden npm mit STRG+c

Jetzt muß nur noch die Datenbank für den Explorer und die Tauschbörsen aufgebaut werden. Und bei dieser Gelegenheit bauen wir auch gleich einen Fix ein, der automatisch die index.pid löscht sollte der Blockexplorer mal abstürzen.
wir sind immer noch im Ordner ./explorer/

nano clean_pid

folgende Zeilen hinzufügen (Achtung passt euren Pfad an!!!):

#!/bin/bash

PID_FILE=/home/fritz/explorer/tmp/index.pid

ps -aefw | grep -q '[/]usr/bin/node scripts/sync.js index update' || {
[ -f $PID_FILE ] && rm -f $PID_FILE
}

Diese Datei wieder mit STRG+o speichern, NANO beenden und ab und zu per cron ausführen.

 

Datenbanken aufbauen und die clean_pid ausführen

crontab -e

hier eventuell jetzt euren bevorzugten Editor auswählen und dieses einfügen( Auch hier wieder auf die richtigen Pfadangaben achten):

# eMarkexplorer
*/3 * * * * cd /home/fritz/explorer && /usr/bin/node scripts/sync.js index update > /dev/null 2>&1
*/5 * * * * cd /home/fritz/explorer && /usr/bin/node scripts/sync.js market > /dev/null 2>&1
*/5 * * * * cd /home/fritz/explorer && /usr/bin/nodejs scripts/peers.js > /dev/null 2>&1
# remove stale pid file from node.js 
*/30 * * * * /home/fritz/explorer/clean_pid

Speichern und beenden.

Jetzt kommt der entgültige start des Blockexplorers. Dazu nutzen wir den Prozessmanager PM2

pm2 start ./bin/cluster --name explorer

Der Explorer sollte jetzt laufen und nach spätestens 2 Minuten anfangen die Datenbank aufzubauen.

Herzlichen Glückwunsch, Ihr habt es geschafft. Bei Fragen oder Problemen meldet euch einfach hier in den Komentaren.

Rumhocker