Von Null auf Witness, Teil 3: Witness aktivieren
In diesem dritten und letzten Teil der Serie erledigen wir die restlichen Schritte für den Sprung zum Witness. Sieht nach viel aus, in der Praxis ist das eine Sache von Minuten.
Als Erstes erstellen wir uns ein paar kleine Skripte:
stop.sh
Mit nano stop.sh
Editor starten, darin diese zwei Zeilen einfügen:
docker network disconnect bridge witness
docker stop -t 600 witness
Mit Strg-O gefolgt von Enter stop.sh speichern und mit Strg-X nano beenden.
Genauso legen wir die weiteren Dateien an:
start.sh
docker network connect bridge witness
docker start witness
logs20.sh
docker logs witness -f --tail 20
wallet.sh
docker exec -it witness cli_wallet
Mit
chmod +x stop.sh start.sh logs20.sh wallet.sh
machen wir die eben erstellten Skripte ausführbar, ls -lh
zeigt die Dateien jetzt grün an. (Nicht wundern, wallet.sh habe ich erst nach dem Screenshot erstellt.)
Ein zweites Terminal ist jetzt ganz nützlich, damit können wir beobachten was wir anrichten ;-)
Seednode aus, cli_wallet ein
Node stoppen mit ./stop.sh
Die Db wurde brav geschlossen - exited cleanly. Wunderbar.
Zunächst zwei kleine Änderungen in der config.ini
nano /steemdata/config.ini
Vor Zeile 2 fügen wir ein # ein, dies bewirkt, dass unser Server nicht mehr als Blockquelle zur Verfügung steht.
Mit Strg-W suchen wir nach webserver-ws
oder scrollen etwas weiter nach unten bis zur Zeile #webserver-ws-endpoint = 0.0.0.0:8090
. Dort die Raute # am Anfang der Zeile löschen.
So sollte es danach aussehen:
Diese Änderung sorgt dafür, dass wir uns mit der cli_wallet verbinden können. Wie gewohnt mit Strg-O gefolgt von Enter speichern und mit Strg-X nano verlassen.
Witness-Keys erzeugen
Mit ./start.sh
starten wir die Chain wieder. Eventuell kommen ein paar rote Meldungen, es sollte aber innerhalb einer Minute wieder sycron sein. Falls nicht hilft vielleicht dieser Kommentar.
Sicher ist euch schön öfter diese Meldung beim Starten aufgefallen:
Die nötigen Schlüssel werden wir jetzt generieren, dazu brauchen wir die bereits erwähnte cli_wallet. Dieses Programm befindet sich im Docker Container, mit dem oben angelegten Skript wallet.sh
können wir es starten.
Bereit? Dann los...
./wallet.sh
Dies ist der erste Aufruf von cli_wallet, deshalb müssen wir dafür ein Passwort vergeben. Im Bild unten zu sehen, neben new >>>
wird dies mit set_password DeinTotalGeheimesPasswort
erledigt.
Danach erscheint locked >>>
- durch Eingabe von unlock DeinTotalGeheimesPasswort
erhalten wir Zugriff und es erscheint unlocked >>>
.
Mit suggest_brain_key
erzeugen wir die nötigen Schlüssel für unseren Witness. Dieser Befehl berechnet die Schlüssel und zeigt diese an, weiter passiert nichts. Die erzeugten Schlüssel sicherst du in deinem Passwortmanager oder wo immer du sensible Daten aufbewahrst.
1 = wif_priv_key, dieser kommt in die config.ini
2 = dein private active Key
Anschließend wird mit import_key
der private active Key deines Accounts importiert. Die cli_wallet braucht den active Key um Daten in die Chain schreiben zu können.
An der Stelle ist zu überlegen, ob du deinen Hauptaccount oder einen extra Account für deinen Witness verwenden willst. Vorteile eines extra Accounts, man braucht den active Key des Hauptaccounts nicht in der cli_wallet hinterlegen. Ich denke jedoch, die Gefahr hält sich dabei in Grenzen, weil dieser verschlüsselt im Docker-Container abgelegt wird. Ein weiterer Punkt, falls du in die Top20 kommen solltest, wird dein Hauptaccount nicht mit producer reward
Einträgen zugemüllt. Auch verkraftbar, da Steemworld das standardmäßig rausfiltert. Nachteile eines extra Accounts, dein Hauptaccount ist bekannt, den extra angelegten Witness-Account musst du erst bekannt machen. So oder so, es ist wohl eine Geschmacksfrage.
Damit sind wir mit der cli_wallet vorerst fertig, mit Strg-D
verlassen wir die cli_wallet und landen wieder im SSH-Terminal.
Witness Account und wif_priv_key eintragen
Jetzt müssen wir den eben erzeugten wif_priv_key
in die config.ini eintragen. Zuerst stoppen wir die Chain.
./stop.sh
Dann config.ini öffen, wir können das nun schon im Schlaf:
nano /steemdata/config.ini
Mit Strg-W
nach witness =
suchen. Neben witness =
kommt dein Username oder eben der Account der als Witness fungieren soll. Wichtig ist hier, der Username kommt in doppelte Anführungszeichen.
Gleich darunter den vorhin in der cli_wallet erzeugten wif_priv_key neben private-key =
ohne Anführungszeichen eintragen. Änderung speichern und nano beenden.
Jetzt wird es spannend, bis auf einen Schritt haben wir alles erledigt!
Witness aktivieren
Chain wieder starten:
./start.sh
Und was sehen wir da?
Launching block production for 1 witnesses. Na, das hört sich doch gut an!
Nur noch eine Kleinigkeit fehlt, die Chain weiß nämlich noch nichts von ihrem Glück - das müssen wir in der cli_wallet noch erledigen:
./wallet.sh
Der Befehl um unseren Witness aktiv zu schalten, sieht in etwa so aus:
update_witness "dein_witness_name" "dein_witness_post" "witness_pub_key" {"account_creation_fee":"3.370 STEEM","maximum_block_size":65536,"sbd_interest_rate":0} true
Beispiel:
update_witness "michelangelo3" "https://steemit.com/@michelangelo3/witness-post" "STM6eKcUEFoF18EFRZKpbVgExgJuBSipw6PX48CwidQ4A19i1ibwm" {"account_creation_fee":"3.370 STEEM","maximum_block_size":65536,"sbd_interest_rate":0} true
Bitte beachten, dies ist nicht der private sondern der mit suggest_brain_key erzeugte public Key! So würde es im Terminal aussehen:
Nach Absenden dieses Kommandos bist du...
W I T N E S S !
Das war der Ausflug von Null auf Witness in drei Teilen, hier findest du Teil 1 und Teil 2.
Wie ein Price Feed eingerichtet wird, ist in Part 11 bei @rexthetech beschrieben. Wer bis hierher durchgehalten hat, wird mit Part 11, auch wenn er in englisch geschrieben ist, gut zurecht kommen. Außerdem empfehle ich Part 8, Part 9 und Part 10 zu Gemüte zu führen, diese sind viel ausführlicher als dieser Post.
Ach ja, falls sich jemand Sorgen um die hier gezeigten Schlüssel macht, alles gut! Ich habe alles wieder rückgängig gemacht und mein Server läuft wieder brav als Seednode. Vorerst habe ich noch Lust weiter zu experimentieren und einen aktiven Witness möchte ich nicht unbedingt abschießen - soll bei Experimenten angeblich schon vorgekommen sein :-)
Danke für diesen gelungenen Abschluss. Wie immer absolut gut aufbereitet, so dass beim Nachmachen nicht viel schief gehen kann...
Du machst es mir nicht leicht abzuwarten ;-)
Ich habe mich aber auch schon gefragt, warum manche einen eigenen Account für den Witness anlegen. Ich würde dafür auch nicht wirklich einen Bedarf sehen. Vielleicht wollen sie auch die Witness-Tätigkeit nicht mit dem Bloggen vermischen...
It certainly does add a little work -- and adds a need for cross-branding, because you need to make sure people know your witness account is actually representing you, and they should witness-vote for that and not your main, etc...
The main advantage is that in case of any server compromise, your main Private Active Key isn't in the server wallet (or the price feed config file) waiting to be stolen.
(Sorry für das Englisch, aber du willst mein Deutsch nicht!)
Perhaps there is something to be said for creating a witness account at the moment. But perhaps it would be possible to find a way to store the keys in encrypted form.
Fortunately, we are very flexible ;-)
Thank you
Das mit dem PW wie rexhetech schreibt hat schon was, beim Price Feed muss man es anscheinend auch hinterlegen, inwieweit es dort verschlüsselt am Server weiß ich nicht, da ich das noch nicht gemacht habe. Ohne Verschlüsselung würd ich das auch nicht am VPS liegen haben wollen.
Also, ich mach's wie Chriddi, ich vote dann auch einfach moecki.wit :-)
Liegt unverschlüsselt so wie er ist
Aber jetzt nehmen wir an, es wird gestohlen, was alles passiert dann?
Ich nehme an erst den steem weg transferieren, dann powerdown einleiten, upvoten bis das 0 anzeigt und anschließend downvoten bis es 0 ist. Naya es ist schon gruselig.
Ups, stimmt. Hab gerade nochmal bei Part 11 von rexthetech nachgesehen, da ist es auch so beschrieben.
Der Server muss evtl. gar nicht gehackt werden, bestimmte Mitarbeiter des Providers dürften Zugriff auf die Inhalte des Servers haben, davon gehe ich aus. Den active Key unverschlüsselt auf einem gemieteten Server liegen zu lassen ist wirklich keine gute Idee.
thank you for stopping by on my account
Schon blöd, wenn die Schlüssel - vielleicht noch der Active Key - dort im Klartext angegeben werden müssen.
Vielleicht könnte man dafür ja auch steempy nutzen. Dort sind die Schlüssel verschlüsselt.
Vielleicht sollte ich mir den Account schon mal sichern ;-)
Mein Vote geht an @michelangelo3.wit… 😉
Ha ha, das wäre eine Option. Momentan sagt mein Bauch zum Thema Witness: "Tu dir das nicht an". Und da ist sich Bauch und Kopf ausnahmsweise einig :-)
Excellent!!
...und ich muss mal das Schwarze Quadrat nochmal vergrößert anschauen, ob da nicht oben links in der Ecke steht:
C:\Users\Malevich>
;-))
Vergiss bitte nicht darüber zu berichten :)
Werd ich machen, sofern es was interessantes gibt...
Congratulations senior
This post has been featured in the latest edition of Witness Weekly...
Glad to hear, thanks!
This post has been featured in the latest edition of Steem News...
thank you for stopping by on my account
Gladly, could happen again :-)
que Allah nos bendiga a todos éxito siempre
Amén, las oraciones están con nosotros.
Very good
Thank you