Blockchain-Grundlagen

JSON-RPC

JSON-RPC ist ein Datenaustauschprotokoll, mit dem ein Client (z. B. ein Blockchain-Explorer) mit einem Server (Ihrem lokalen Blockchain-Knoten) kommunizieren kann, indem er Befehle ausgibt und Antworten abhört. Wie Sie anhand des Bindestrichs erraten können, bezieht sich JSON-RPC auf zwei separate Konzepte, die zusammen ein sehr weit verbreitetes Protokoll ergeben.

JSON

JSON steht für “JavaScript Object Notation”. JSON ist eine effiziente Methode zur Darstellung von Daten in einem für Menschen lesbaren Format. JSON wurde in den frühen 2000er Jahren als Alternative zu Extensible Markup Language (bekannt als XML) populär gemacht, die seit Ende der 1990er Jahre der defacto-Webstandard war. In der Tat hat die Notation seit ihrer Einführung XML weitgehend ersetzt.

JSON kann Zahlen, Zeichenfolgen, geordnete Wertesequenzen und Sammlungen von Name / Wert-Paaren darstellen. Obwohl das J für JavaScript steht, ist JSON ein sprachunabhängiges Datenformat. Jede Programmiersprache kann JSON-Daten interpretieren, solange sie gut geformt sind.

Beispiel-JSON-Daten sehen folgendermaßen aus:

Die obigen Daten stellen einen fiktiven Block dar, der zwei Transaktionen enthält und von der Blockchain dreimal bestätigt wurde. Die obigen Daten zeigen die Robustheit der Daten, die JSON speichern kann: Zeichenfolgen (wie blockHash – “abc123”), Rohzahlen (wie numConfirmations – 3), geordnete Folgen von Werten (Transaktionen).

Der Reiz von JSON aus Entwicklersicht liegt in seiner Flexibilität und Lesbarkeit. Bei JSON-Daten gibt es keine vordefinierten Schemas oder Datendefinitionen, die der Entwickler zum Verstehen oder Nachschlagen benötigt. Die Daten werden im Klartext ausgetauscht und sind für Menschen lesbar – was zur Produktivität der Entwickler beiträgt.

Diese Vorteile sind natürlich mit Kompromissen verbunden. JSON ist nicht das effizienteste Datenformat zum Parsen und Übertragen. Konkurrierende Formate wie Protokollpuffer bieten bessere Optimierungen und Effizienz auf Kosten der Lesbarkeit und Flexibilität. Es ist häufig der Fall, dass die Produktivitätsgewinne bei der Verwendung von JSON die Leistungsgewinne bei der Verwendung anderer Formate überwiegen – dies gilt für die meisten Blockchain-Implementierungen.

RPC

RPC oder “Remote Procedure Call”. RPC ist ein Konzept in der Informatik, mit dem ein Computer eine Prozedur eines anderen Computers aufrufen kann.

Die Ursprünge von RPC reichen bis in die 1970er Jahre zurück, als Forscher wie Richard Shantz und Bruce Jay Nelson zu verstehen versuchten, wie verteilte Anwendungen auf den Vorgängern effektiv mit dem heutigen Internet kommunizieren können.

Wir haben seit den 1970er Jahren einen langen Weg zurückgelegt und die Kommunikation über das Internet wurde maßgeblich vom World Wide Web und dem HTTP-Protokoll beeinflusst. Die moderne Webarchitektur hat viele Debatten darüber ausgelöst, wie Clients und Server am besten kommunizieren können. Einer der führenden Architekturstile ist heute als REST (Representational State Transfer) bekannt. Moderne Frameworks wie Ruby on Rails und NodeJS haben dazu geführt, dass eine große Anzahl von RESTful-Diensten das Web übernehmen.

Während REST viele Vorteile bietet, lassen sich viele dieser Vorteile am besten in Anwendungen realisieren, deren Hauptfunktionen das Erstellen, Lesen, Aktualisieren und Löschen von Datensätzen sind. CRUD – Denken Sie an eine Website wie Reddit, bei der die Benutzerinteraktion von CRUD gesteuert wird. wie Aktionen auf Beiträge und Kommentare. Angesichts der Tatsache, dass einer der Kernaspekte der Blockchain-Technologie die unveränderliche Natur der Kettendaten sowie die Konsensmechanismen zum Generieren neuer Blöcke ist, ist REST nicht unbedingt die beste Lösung dafür, wie Knoten mit anderen Anwendungen kommunizieren können.

Während einige Blockchain-Architekten möglicherweise RESTful-APIs verwenden (siehe z. B. BlockApps), konzentrieren sich viele auf die Verwendung von RPC für eine direktere Verbindung zur Blockchain – ein einfaches, aber gut verstandenes Mittel zur Client / Server-Kommunikation. Ein RPC wird vom Client initiiert und sendet eine Nachricht an den Server – in diesem Fall den Blockchain-Knoten. Die Nachricht, die übergeben wird, ist eine gestoppelte Version der Prozedur, wie sie im System des Servers vorhanden ist, zusammen mit allen erforderlichen Parametern, um diese Prozedur aufzurufen. Wenn der Server die Nachricht empfängt, entpackt er die Parameter, ruft die Prozedur auf und gibt das Ergebnis an den Client zurück. Im Allgemeinen wartet der Client auf den Abschluss des RPC, bevor er seine Ausführung fortsetzt.

JSON-RPC

JSON-RPC ist eine Art RPC-Protokoll, das JSON zum Codieren von Anforderungen und Antworten zwischen Client und Server verwendet. Die JSON-RPC v2.0-Spezifikation wurde 2010 veröffentlicht und soll einen einfachen RPC-Mechanismus bereitstellen.

Eine Anfrage muss die Eigenschaft enthalten:

Methode – Eine Zeichenfolge, die den Namen der aufzurufenden Methode enthält.

Und enthalten optional die Eigenschaften:

params – Ein strukturierter Wert, der die Parameterwerte enthält, die beim Aufruf der Methode verwendet werden sollen.

id – Eine vom Client festgelegte Kennung

Eine erfolgreiche Antwort muss Folgendes enthalten:

Ergebnis – Der Wert dieses Mitglieds wird durch die auf dem Server aufgerufene Methode bestimmt.

id – Ein Bezeichner, der dem Wert von id im Anforderungsobjekt entspricht.

Eine beispielhafte JSON-RPC 2.0-Anforderung sieht folgendermaßen aus:

Und eine Antwort erfolgreiche Antwort:

– Igor Lilic (Entwickler, Business & Strategie)