Erste Schritte - Sichtung der API

in #deutsch3 years ago (edited)

Nachdem ich in meinem letzten Post angekündigt hatte, dass ich einen .NET-Wrapper für die Steem API entwickeln will, habe ich mir einen ersten Überblick verschafft. Zu diesem Zweck konsultierte ich zu erst die Developer Site um einen Überblick über die potentiellen Funktionen zu erhalten. Danach sollte ein Abgleich mit dem aktuell laufenden Zustand erfolgen.

Erstaunlicherweise war eine Testapplikation, die RPC-Requests verschickt, schnell gebaut und auch auf Anhieb funktionsfähig. Einzig eine zusätzliche .NET-Bibliothek von Newtonsoft nutze ich um die JSON-Objekte zu erstellen.
Mit einem Aufruf von jsonrpc.get_methods hat sich eine Liste von etwa 155 verfügbaren Funktionen ergeben, die mindestens von den Namen her mit denen der Developer Site übereinstimmt.

Nachdem dieser Abruf erfolgreich war sind einzelne, zufällig gewählte Funktionen ebenfalls probiert worden. Hier hat sich gezeigt, dass zwar bestimmte Funktionen potentiell verfügbar sind, sie aber scheinbar nicht genutzt werden können, da ein entsprechender Request die Antwort zurückliefert, dass das entsprechende Plugin nicht aktiviert sei. Soweit es auf die Schnelle für mich feststellbar war, handelt es sich bei den Plugins um Interna der Chain. Nicht beantworten konnte ich mir die Frage, ob die Plugins generell deaktiviert sind oder ob es sich um konfigurierbare Elemente handelt, die jeder Steem-Node eigenständig handhaben kann.

Gerade im Hinblick auf manche Ideen, die in der DU-Community zur Sprache kamen, was mögliche Nutzungen bzw. Szenarien angeht, ist es zum einen schön, dass es Tag-basierte Funktionen gibt, das zu Grunde liegende Plugin aber mindestens auf den Nodes von steemit und @justyy deaktiviert ist.

Sort:  

Nicht beantworten konnte ich mir die Frage, ob die Plugins generell deaktiviert sind oder ob es sich um konfigurierbare Elemente handelt, die jeder Steem-Node eigenständig handhaben kann.

Die aktivierten Plugins sind frei wählbar und mittlerweile werden die follow und tags Plugins nur noch selten verwendet. Grund dafür ist eine Auslagerung der entsprechenden Prozeduren in einen eigenen Layer (https://github.com/steemit/hivemind), wodurch die steemd (consensus) Nodes nur noch die für die Blockchain essentiellen Logiken auszuführen brauchen.

Man hat also im Prinzip die unwesentlichen APIs ausgelagert, damit diese getrennt von der Blockchain-Logik laufen und erweitert werden können. Grundsätzlich sollte für neue Projekte nur noch die condenser_api für appbase-basierte (steemd) Methoden verwendet werden. Für weitere Community-Funktionen kann man die Bridge (https://developers.steem.io/apidefinitions/#bridge) benutzen, die ebenfalls den neuen Hivemind-Layer anspricht.

While the condenser_api.* calls are ready for use, all other appbase methods are currently works in progress and may change, or be unsuitable for production use.

[...] dass es Tag-basierte Funktionen gibt, das zu Grunde liegende Plugin aber mindestens auf den Nodes von steemit und justyy deaktiviert ist.

Dieses Verhalten ist sogar auf dem offiziellen Node auf api.steemit.com zu beobachten. Selbst da liefern nicht alle Funktionen die gewünschten Antworten. Wäre natürlich cool, wenn man für solche Zwecke einen eigenen Node aufsetzen könnte. Da ich mich aber mit dessen Einrichtung noch nicht beschäftigt habe, kann ich gar nicht sagen, ob es da aktivier- oder deaktivierbare Plugins gibt.

Du hast ein Upvote von mir bekommen, diese soll die Deutsche Community unterstützen. Wenn du mich unterstützten möchtest, dann sende mir eine Delegation. Egal wie klein die Unterstützung ist, Du hilfst damit der Community. DANKE!

Hi @sail.far. If you are into it, could we collaborate on maintaining a .NET library for easier development of Steem? I know that you are building a wrapper for the existing RPC calls But we can easily maintain a codebase that would also allow us to broadcast transactions onto the blockchain. The ones currently out there are in JS and Python. I'd love to have one for C# and .NET core.

Hi @starlord28,
It sounds good not to be the only one who is thinkig about opening the Steem universe to .NET programmers.
Currently I am not sure what way I should take, wrapping core logic or creating a wrapper for hive node logic, like steemchiller mentioned in his comment.

So, there is this old repo that was built in .NET framework called DITCH. This already has the logic to broadcast transactions on Steem. However, as I said, it's very old. We can probably fork this codebase and work on upgrading it to .NET core and add the latest APIs to this.

What do you think?

PS: Here's the link to the REPO
https://github.com/Chainers/Ditch