Lade…
 
Seiten-ID: 42 Der Artikel von Theroretical führt uns zurüch auf die Spur der Steem API.

Wie man die Steem API benutzt

Der Artikel von Theroretical führt uns zurück auf die Spur der Steem API. Da kein Entwickler zur Hand ist, werden im Verlauf der Auseinandersetzung mit diesem Artikel gewisse Teile des Textes redaktionell mitFragen oder Erläuterungen hinterlegt. Es lohnt sich also, ab und zu Mal in diesem Artikel nachzusehen.



von theoretical (63)
in theoretical • April 2016

Einführung

Dieser Kommentar führte mich zu der Erkenntnis, dass wir keine wirklich gute Dokumentation darüber haben, wie man die Steem-API verwendet. Dieser Beitrag wird also das Problem lösen!

Der Steem full node heißt steemd, er ist verantwortlich für die Pflege der Datenbank des Blockchain-Zustandes und die Produktion von Blöcken (wenn Sie Zeuge / Miner sind). Der Full Node stellt eine RPC-Schnittstelle zur Verfügung; die RPC-Endpunkt-Option legt die Schnittstelle und den Port für den RPC fest.


Das Steem-Wallet heißt cli_wallet, was eine komplett separate Binärdatei ist, die in einem separaten Prozess (oder sogar einer separaten Maschine) läuft. Das cli_wallet ist für die Pflege der privaten Schlüssel des Benutzers und die Signiertransaktionen verantwortlich. Das cli_wallet spricht mit steemd, um Informationen über die Kette zu erhalten, z.B. um Fragen zum Benutzerkontostand zu beantworten.
Wenn Sie cli_wallet ausführen, müssen Sie den Host und Port des upstream” Steemd-Prozesses mit der Option -s angeben.


Das cli_wallet unterstützt auch nachgelagerte Clients, die sich mit dem cli_wallet verbinden. Um den cli_wallet RPC für nachgelagerte Clients bereitzustellen, verwenden Sie die Option -r 127.0.0.0.1:port (z.B. 127.0.0.0.1:8093). Die Angabe von 127.0.0.0.1 vor dem Doppelpunkt sichert die cli_wallet RPC-Schnittstelle, indem der Zugriff auf die lokale Maschine eingeschränkt wird. Die Angabe von 127.0.0.0.1 ist äußerst wichtig, da jeder, der sich mit dem RPC-Sockel verbinden kann, Ihr Geld ausgeben kann<sup>1</sup>!


1 Etwas anderes als 127.0.0.0.1 (d.h. eine andere Schnittstelle oder eine Wildcard-Adresse) mit dem Parameter -r des cli_wallet zu spezifizieren, wird von den Entwicklern nicht empfohlen und sollte nur von Experten versucht werden, die die Risiken verstehen, in einem ordnungsgemäß mit einer Firewall versehenen und isolierten LAN laufen und jedem Benutzer und jeder Maschine in diesem LAN mit direktem Zugriff auf ihre Gelder vertrauen.


Verwendung von cli_wallet Befehlen

Das Format der cli_wallet Befehle ist JSON HTTP. Zum Beispiel mit Curl:
curl http://127.0.0.1:8093 --data '{"jsonrpc": "2.0", "method": "list_my_accounts", "params": [], "id": 1}'

Wenn Ihre Wallet freigeschaltet ist, sehen Sie ein JSON-Objekt, das die Konten in der Wallet zusammenfasst. Sie können sogar Dinge tun, die Schlüssel erfordern (vorausgesetzt, die Brieftasche ist freigeschaltet):
curl http://127.0.0.1:8093 --data '{"jsonrpc": "2.0", "method": "transfer", "params": ["ned", "theoretical", "1.000 STEEM", "Danke für den Artikel", true], "id": 2}'


Wenn Sie den Kontonamen “ned” im obigen Befehl durch Ihren eigenen Kontonamen ersetzen, senden Sie mir etwas STEEM.

Neben HTTP unterstützt der Befehl auch Websockets. Sie können sich beispielsweise mit dem wscat-Programm (von NPM) verbinden und dasselbe JSON wie im HTTP-Fall eingeben und dann die Eingabetaste drücken, um eine Antwort zu erhalten.

Die meisten Bots können alles, was sie brauchen, nur durch ein Gespräch mit dem cli_wallet erreichen, aber wenn du neugierig bist, direkt mit steemd zu reden, lies weiter…..

Steemd-Befehle

Die steemd API ist ähnlich, aber nicht identisch. Zunächst einmal ist der Satz der verfügbaren Befehle unterschiedlich. Die Befehle steemd sind die in database_api.hpp im Quellcode aufgeführten Funktionen sowie Befehle, die von allen Plugins zur Verfügung gestellt werden, die Sie in config.ini konfiguriert haben (siehe hier für weitere Informationen zur Konfiguration von Plugins).

Zweitens, wie Sie auf Befehle zugreifen, ist anders. Die Steemd-Befehle sind in verschiedenen API’s organisiert, und Sie müssen einen Aufrufbefehl auf der “äußeren Ebene” verwenden. Die Parameter des Aufrufs bestehen aus einem API-Namen, einem Methodennamen und einer JSON-Liste von Parametern für die Methode. Es klingt kompliziert, ist aber eigentlich ganz einfach:
curl http://127.0.0.1:8090 --data '{"jsonrpc": "2.0", "method": "call", "params": ["database_api", "get_block", [2889019]]], "id": 3}'
Wie bei cli_wallet können Sie auch bei steemd Websockets verwenden.

Warum Websockets?

Websockets werden von steemd zur Verfügung gestellt, weil sie das sind, was wir zur Implementierung von steemit.com verwenden. Die Website steemit.com ist im Wesentlichen eine JavaScript-Implementierung der meisten cli_wallet Funktionen (mit vielen zusätzlichen Funktionen und natürlich auch einer hübschen GUI). Websockets sind für moderne interaktive Webanwendungen viel vernünftiger zu verwenden als HTTP-Verbindungen. In BitShares, der vorherigen grafikbasierten Blockchain, wurden Websockets auch für den Server verwendet, um asynchrone Benachrichtigungen an den Client zu senden, aber Steem hat derzeit wenig bis keine Funktionalität, die Websockets auf diese Weise verwendet.

Wie lautet die ID?

Die ID ist eine bedeutungslose Zahl, die bei jeder Anforderung an den Client zurückgegeben wird. Der Grund dafür ist, die Implementierung von Clients zu vereinfachen, die eine eingehende Antwort auf ihre initiierende Anfrage weiterleiten wollen. Es ermöglicht auch die Unterscheidung von Push-Benachrichtigungen und Antworten.
Fehlerbehandlung

Bei Erfolg enthält das “Ergebnis”-Mitglied des zurückgegebenen JSON-Wörterbuchs das Ergebnis des Aufrufs. Wenn etwas schief geht und eine Ausnahme im C++-Code geworfen wird, hat der zurückgegebene JSON kein “Ergebnis”-Mitglied, sondern ein “Fehler”-Mitglied mit einem Diagnosetext.


Übersetzt mit www.DeepL.com/Translator


Erstellt von afrog. Letzte Änderung: Dienstag April 23, 2019 16:19:48 GMT-0000 by afrog.

Theme ändern

Schnellbearbeitung einer Wiki-Seite

Online Benutzer

7 Benutzer (alle) online

Menu

This is just a sample menu - edit it

Another menu?

Better than editing this menu is to copy it. This is a wiki file. You can present it as author as your own menu on your homepage. So if someone enters your private Tiki area, you can send visitors around. Chriddi spontaneously liked the menu - I thought we had enough menus. In principle, Chriddi is right. Maybe with the menu we can learn a lot and do a lot better. Take a look at the source code to see how the permissions for whole sections are arranged. Play with the thing! But keep it away from the top pages somehow. Otherwise we’ll quickly have 10 meaningless menus. One is enough to look at. That’s where our author homepage list comes in. Those who have good content to offer. With avatar as symbol in front of the name. You will come out really nice.

arrow Home Page
arrow Last changes
arrow Forums
arrow FAQS
arrow


Sprache umstellen

TikiTweet

Anti-Bot Überprüfungsbild
afrog, 22:20, : So Don. Jetzt ist die Anleitung ((Bilder)) zwar noch lange nicht fertig, aber immerhin lesbarer.
afrog, 22:05, : Die FAQ ist aber irgendwie komisch. Die gefällt mir nicht-
chriddi, 18:05, : Super, die SW-FAQ, afrog! Das wird sich rasch füllen.
chriddi, 17:38, : Die Umfrage ist komisch. Man kann nur abstimmen klicken, weiß aber gar nicht wofür. Der Sache könnten wir ja mal auf den Grund gehen, ist aber wohl kaum vorrangig. Wer hat die denn eingerichtet?
afrog, 14:57, : Da ist eine Umfrage erstellt worden, die die grüne Farbe unserer Aufmerkschriftart als „merkwürdig“ diffamiert. Bei uns kommt Funktion vor dem Layout. Wir brauchen Funktionen. Aufhübschung.kommt später. Nach einem Layoutentwurf.