Witness Price Feed for PythonsteemCreated with Sketch.

in hive-102132 •  2 years ago 

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.

You can find the code on Github.

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).

Deutsche Version

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.

Den Code findet ihr auf Github.

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

16.01.2023

moecki is now a Steem Witness

Please check your votes regulary.

Banner with kind permission of chriddi
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Hey, cool, dass du mit deiner Witness-Aktivität nun doch ein bisschen öffentlicher wirst!

Feedback? Hm. Sind dann zugegebenermaßen doch ziemlich Böhmische Dörfer für mich. Ich teste lieber mal dein Verständnis für Blindfische:
Wozu ist denn dieser 'Price Feed' da/nötig/sinnvoll/gefordert?

  ·  2 years ago (edited)

Test? Hm, da wäre mir das Feedback doch lieber ;-))
Nein, ich erkläre es gern, jedenfalls soweit wie ich es auch verstanden habe.
Wichtig ist der Price Feed deswegen, da damit der "Blockchain Preis" für den Steem durch die Zeugen festgelegt wird. Dies beeinflusst direkt den Betrag, der in STEEM/SBD für einen Beitrag ausgezahlt wird. Also doch eigentlich für jeden User interessant. :-)

Aus dem Feed der letzten 3,5 Tage wird ein Median-Preis ermittelt, der wiederum der konkrete Preis ist, mit dem die Auszahlungsbeträge ermittelt werden. Dabei werden die Preis-Daten der in jeder Runde neu zusammengewürftelten 21 Zeugen herangezogen. Im Grunde sind also die Daten der ersten 20 Zeugen (die in jeder Runde dabei sind) auch hier am entscheidensten. Die Daten der Zeugen auf den "hinteren Rängen" werden nur vereinzelt in die Medianberechnung aufgenommen. Daher wäre dieser für mich aktuell nicht ganz so wichtig gewesen. Es sollte aber im Grunde schon von jedem Zeugen (im Interesse der für den Zeugen votenden User) eingebracht werden.

Hört sich nach Arbeit an :-)
Sehr schön, dass jetzt auch eine Python Version zur Verfügung steht.
Hab gerade einen Blick in die Witness-Liste geworfen, ab Platz 60 sieht es da bzgl. Price Feed mager aus. Wundert mich etwas, dass für dich die Votes nur langsam eintrudeln. Na ja, kommt bestimmt noch...

Danke :-)
Genau das dachte ich auch. Vielleicht haben noch andere Zeugen Bedarf an einer Python-Lösung. Insofern ein Beitrag zur Erweiterung der Möglichkeiten.

Also, was diese Witness-Liste angeht: da sträuben sich mir manchmal schon die Haare (und zwar unabhängig davon, dass ich jetzt selbst einer bin). Ich hatte das letztens schon mit chriddi diskutiert. Welche Zeugen da noch Stimmen haben, obwohl die Accounts offensichtlich schon seit einiger Zeit (vermutlich seit der Teilung) inaktiv sind, verwundert mich schon. Es gab sogar die Überlegung, diese einmal wachzurütteln, so nach dem Motto: überprüft mal eure Witness-Votes.

  ·  2 years ago (edited)

Das ist schon länger ein Problem, dass die meisten Ihre wertvolle Stimme nicht aktuell halten und somit neue Zeugen es erstmal schwer haben. Meine Stimme wird von @steemchiller verwaltet (Als Proxy eingetragen) da ich Ihm vertraue und er mehr als up to date ist..

LG Michael

!invest_vote

Ich vertraue ihm da auch. Insofern orientiere ich mich auch sehr an seinen Votes... und verbinde sie mittlerweile mit meinen eigenen Beobachtungen/Kontakten :-) Kommt aber auch daher, dass ich anfangs mit dem "Proxy" nicht wirklich was anfangen konnte bzw. gar nicht wusste, dass es sowas gibt.

Ich erwarte auch nicht, dass ich gleich unter den Top 20 lande. Ich verspreche keine Votes, verteile keine Rewards und spame die User nicht mit Transfer-"Info"-Memos zu. Langsam aber stetig ist hoffentlich die Devise... :-))

@mima2606 denkt du hast ein Vote durch @investinthefutur verdient!
@mima2606 thinks you have earned a vote of @investinthefutur !

I have not yet officially introduced myself as a Steem Witness.

The fact that you want to become or almost are a Witness is the best news today for me. I wish you success. STEEM needs users like you. you are an active member of the community, a blogger and also a developer. All inclusive :)

Thank you for the compliment :-)

It is very Interesting to see that you are almost becoming a witness !

Infact I have already casted my voted some weeks ago. I will be keen to follow up your progress , I know you can handle this perfectly and I wish you all the best in this Journey..!

Thank you very much!

I am also very excited about the progress. :-))

Good job mate! Looks great.

Thank you very much!

Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
image.png
please click it!
image.png
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)

The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.