Deutsch im Anschluss…
I have not yet officially introduced myself as a Steem Witness. Primarily, I'm active as a user and support the community where I can. But it is very important to me to further develop the Steem or at least to actively participate in it.
My setup is not final yet, but I would like to share the developments with you.
Witness Price Feed
Today I am talking about the Witness Price Feed.
Probably the current JavaScript version by @justyy is the most used version to publish the price feed for witnesses. It was recently adapted by @rexthetech.
Of course, I also wanted to set up the price feed. @rexthetech had already made a few remarks on the importance in his witness series.
However, I don't currently run any scripts in JavaScript on my servers. I prefer to develop in Python (but not exclusively, of course). I therefore found a Python version much more suitable for me. In addition, I didn't want to enter my the private key (without creating a new witness account). With steempy
from the steem-python library is a better tool available for this purpose.
Because I couldn't find a Python version for the Price Feed, I converted the current JavaScript version into a Python version myself.
I have kept to the original code (names for variables and functions) as far as possible and necessary to ensure comparability. However, JavaScript and Python differ, of course, so a few adjustments were required.
Nodes
I have adapted the default nodes to the currently fastest witness nodes according to the results from @justyy’s Node Status Page.
The failover
function is not necessary, becaus the steem python library basically does this. The nodes are passed as parameters to initialise the steem client.
Requests
Further adjustments were necessary because JavaScript basically handles the http-requests asynchronously, while Python generally waits for the response.
Key
The option to provide the key either in the config.json
or as an environment variable remains unchanged. Another option is now the use of the steempy CLI wallet. The witness account have to be entered and the private key imported there. All keys are stored encrypted.
Starting the Script
I personally recommend starting the script regularly via crontab
. In this case, the config.json
should contain the entry "interval": 0
. However, it is also possible to run the script continuously. In this case, the delay time in minutes should be entered there.
Docker & steem-python
Unfortunately, I had to remove the feature of starting the script in a Docker container (for now). The steem-python library has unfortunately not been updated for some time, so that an automatic installation in the container cannot be ensured due to missing dependencies.
Perhaps there will be a way to update the library in the future, but it is not really clear who can and wants to accept push request in this repository. If there are other interested developers, I would be willing to participate in an update.
Until then ... feel free to give me feedback ... and of course I would also appreciate your Witness Vote (currently number 131).
Offiziell habe ich mich als Steem Witness noch nicht vorgestellt. Vordergründig bin ich eher als User aktiv und unterstütze die Community, wo ich kann. Aber mir liegt viel daran, den Steem weiter zu entwickeln oder zumindest aktiv daran mitzuwirken.
Mein Setup ist noch nicht final, gleichwohl möchte ich euch an den Entwicklungen teilhaben lassen.
Witness Price Feed
Heute geht es um den Witness Price Feed.
Wahrscheinlich ist die aktuelle JavaScript-Version von @justyy die am meisten genutzte Version. Erst kürzlich wurde sie von @rexthetech angepasst.
Natürlich wollte auch ich den Price-Feed einrichten. @rexthetech hatte zur Bedeutung in seiner Witness-Reihe bereits ein paar Ausführungen gemacht.
Bei mir laufen allerdings aktuell keine Scripte in JavaScript auf meinen Servern. Ich entwickle lieber (aber natürlich nicht ausschließlich) in Python. Ich fand daher eine Python-Version viel passender für mich. Außerdem wollte ich auf die Eintragung des Private Keys verzichten (ohne eine neuen Witness-Account anzulegen). Mit steempy
aus der steem-python-Bibliothek hat man hier ein besseres Mittel zur Hand.
Da ich keine Python-Version für den Price Feed fand, habe ich selbst die aktuelle JavaScript-Version in eine Python-Version umgewandelt.
Ich habe mich soweit wie möglich und nötig an den Original-Code gehalten (in Bezug auf die Variablen- und Funktionsnamen), um die Vergleichbarkeit zu gewährleisten. Allerdings unterscheiden sich JavaScript und Python natürlich, so dass ein paar Anpassungen erforderlich waren.
Nodes
Die Standard-Nodes habe ich an die aktuell schnellsten Witness-Nodes entsprechend den Ergebnissen von @justyy’s Node Status Page angepasst.
Die failover
-Funktion ist so nicht erforderlich, da die steem-python-Bibliothek dies dem Grunde nach erledigt. Die Nodes werden zur Initialisierung des Steem-Clients mit übergeben.
Requests
Weitere Anpassungen waren erforderlich, da JavaScript grundsätzlich die http-requests asyncron behandelt, während in Python grundsätzlich die Antwort erst abgewartet wird.
Key
Unverändert bleibt die Option, den Key entweder in der config.json
oder als Umgebungsvariable bereitzustellen. Als weitere Option steht aber nunmehr auch die Nutzung der steempy-CLI-Wallet zur Verfügung. Der betreffende Account muss dann dort angelegt und der Private Key importiert werden. Alle Keys werden verschlüsselt abgelegt.
Script-Start
Ich persönlich empfehle eher den regelmäßigen Start des Scripts über crontab
. In dem Fall sollte die config.json
den Eintrag “interval“: 0 enthalten. Möglich ist aber weiterhin auch der der dauerhafte Durchlauf. Dann ist die Verzögerungsdauer in Minuten dort einzutragen.
Docker & steem-python
Leider musste ich die Möglichkeit, das Script in einem Docker-Container zu starten, (zunächst) entfernen. Die steem-python-Bibliothek ist leider seit einiger Zeit nicht mehr aktualisiert worden, so dass eine automatische Installation im Container wegen fehlender Abhängigkeiten nicht sichergestellt werden kann.
Vielleicht gibt es künftig eine Möglichkeit, die Bibliothek mal zu aktualisieren, allerdings ist nicht so richtig klar, wer hier Push-Requests annehmen kann und will. Sofern sich hierzu weitere Interessierte finden, bin ich gern bereit, an einer Aktualisierung mitzuwirken.
Bis dahin … gebt mir gern ein Feedback … und natürlich würde ich mich auch über euer Witness-Vote freuen (aktuell Rang 131).
Witness Activities
auf https://moecki.online/hive-102132