Kurz erklärt: JSON-RPC ist ein leichtgewichtiges Remote-Procedure-Call-Protokoll, bei dem Anfragen und Antworten im JSON-Format ausgetauscht werden. In der Blockchain-Welt ist es die verbreitete Standardschnittstelle, über die Anwendungen mit Knoten kommunizieren, etwa um Kontostände abzufragen oder Transaktionen zu senden.
Herkunft und Grundlagen
JSON-RPC ist ein allgemeines, nicht auf Blockchains beschränktes Protokoll. Die aktuelle Version 2.0 wurde 2010 spezifiziert. Es definiert, wie ein Client eine entfernte Methode aufruft: Eine Anfrage enthält einen Methodennamen, Parameter und eine Kennung (ID), die Antwort enthält Ergebnis oder Fehler mit derselben ID.
Das Protokoll ist transportunabhängig und wird üblicherweise über HTTP(S) oder WebSockets übertragen. Durch das einfache, textbasierte JSON-Format ist es sprach- und plattformübergreifend nutzbar.
Rolle in Blockchains
Bitcoin und Ethereum stellen ihre Knoten-Funktionen über JSON-RPC bereit. Für Ethereum existiert eine standardisierte API, die von den meisten Clients einheitlich umgesetzt wird. Typische Methoden sind:
eth_getBalance– fragt den Kontostand einer Adresse ab.eth_sendRawTransaction– sendet eine signierte Transaktion an das Netzwerk.eth_call– ruft eine Smart-Contract-Funktion lesend auf.eth_blockNumber– liefert die aktuelle Blockhöhe.
Über diese Schnittstelle kommunizieren Wallets, dezentrale Anwendungen und Indexierungsdienste mit Knoten. Auch der Zugriff auf eine Archive Node erfolgt in der Regel per JSON-RPC.
Anbieter und Sicherheit
Da der Betrieb eines eigenen Knotens aufwendig sein kann, nutzen viele Entwickler kommerzielle Node-Anbieter, die JSON-RPC-Endpunkte über das Internet bereitstellen. Beim Design ist zu beachten, dass JSON-RPC selbst keine Authentifizierung vorschreibt.
- Öffentlich erreichbare RPC-Endpunkte sollten den Zugriff einschränken (etwa API-Schlüssel, Rate-Limiting).
- Schreibende Methoden wie das Freischalten von Konten sollten auf öffentlichen Endpunkten deaktiviert sein.
- Die Übertragung sollte über TLS (HTTPS/WSS) verschlüsselt erfolgen.
Ergänzend hat sich mit GraphQL eine alternative Abfrageschicht etabliert; für die meisten Basisfunktionen bleibt JSON-RPC jedoch der De-facto-Standard.
Häufige Fragen
Wofür wird JSON-RPC in Blockchains verwendet?
JSON-RPC ist die Standardschnittstelle, über die Anwendungen mit Blockchain-Knoten kommunizieren. Damit lassen sich Kontostände abfragen, Transaktionen senden, Smart Contracts lesend aufrufen und Netzwerkinformationen abrufen.
Über welchen Transportweg läuft JSON-RPC?
Das Protokoll ist transportunabhängig und wird in der Praxis meist über HTTP(S) oder WebSockets übertragen. WebSockets eignen sich besonders für Abonnements auf laufende Ereignisse.
Ist JSON-RPC nur für Blockchains gedacht?
Nein. JSON-RPC ist ein allgemeines Remote-Procedure-Call-Protokoll, dessen Version 2.0 aus dem Jahr 2010 stammt. Es wird in vielen Bereichen eingesetzt, hat sich aber im Blockchain-Umfeld als Standardschnittstelle etabliert.
Sind öffentliche JSON-RPC-Endpunkte sicher?
Das Protokoll selbst schreibt keine Authentifizierung vor. Öffentliche Endpunkte sollten daher über API-Schlüssel, Rate-Limiting und TLS abgesichert werden und schreibende Methoden wie das Freischalten von Konten deaktivieren.
Was ist der Unterschied zwischen JSON-RPC und GraphQL bei Knoten?
JSON-RPC ruft einzelne vordefinierte Methoden auf und ist der verbreitete Standard. GraphQL erlaubt flexiblere, verschachtelte Abfragen und wird von einigen Clients ergänzend angeboten, hat JSON-RPC aber nicht ersetzt.
Zusammenfassung
JSON-RPC ist ein 2010 in Version 2.0 spezifiziertes, JSON-basiertes Remote-Procedure-Call-Protokoll und die verbreitete Standardschnittstelle zur Kommunikation mit Blockchain-Knoten. Über Methoden wie eth_getBalance oder eth_sendRawTransaction greifen Wallets, dApps und Dienste auf Bitcoin- und Ethereum-Knoten zu. Da das Protokoll keine Authentifizierung vorschreibt, müssen öffentliche Endpunkte gesondert abgesichert werden.
Weiterführende Quellen
- JSON-RPC 2.0 Spezifikation: www.jsonrpc.org
- Ethereum.org: JSON-RPC API: ethereum.org