Zum Inhalt springen
buybitcoinsmart

Glossar / Nodes und Software

RPC

Auch bekannt als JSON-RPC, Remote Procedure Call.

Was ist RPC?
RPC ist die Befehlsschnittstelle, die ein Bitcoin-Node anderen Programmen bereitstellt, sodass eine Wallet, das Backend einer Börse oder Ihr eigenes Terminal ihm Fragen stellen und Anweisungen erteilen kann.

Alles, was Bitcoin automatisiert, spricht auf diese Weise mit einem Node. Bitcoin Core lauscht auf Port 8332 auf HTTP-Anfragen mit JSON, beantwortet jeweils einen Aufruf und akzeptiert standardmäßig nur Verbindungen von der Maschine, auf der er läuft. Wenn Ihnen ein Dienst jemals eine Gebührenschätzung genannt oder mitgeteilt hat, dass eine Auszahlung bestätigt wurde, dann hat ein RPC-Aufruf diese Antwort erzeugt.

So funktioniert es

Ein RPC-Aufruf ist ein HTTP-POST, dessen Body eine Methode benennt und ihre Argumente auflistet.

Fragen Sie getblockchaininfo ab, erhalten Sie den Namen der Chain, die aktuelle Höhe, den Fortschritt der Verifizierung und die Größe auf der Festplatte. Fragen Sie listunspent oder sendtoaddress ab, steuern Sie die Wallet des Nodes. Fragen Sie getrawtransaction ab, erhalten Sie Bytes. Das mitgelieferte Programm bitcoin-cli ist eine dünne Hülle, die das JSON erstellt, es sendet und die Antwort ausgibt, sodass alles, was Sie in einer Kommandozeile eingeben können, ein Programm über einen Socket erledigen kann.

Die Authentifizierung hat eine Geschichte, die man kennen sollte. Bitcoin Core entfernte in Version 0.12.0 die integrierte SSL-Unterstützung, sodass die Schnittstelle unverschlüsseltes HTTP spricht und nichts anderes. Dieselbe Version führte die Cookie-Datei ein, eine zufällige Anmeldeinformation, die beim Start in das Datenverzeichnis geschrieben und bei jedem Neustart ersetzt wird, weshalb bitcoin-cli auf Ihrer eigenen Maschine funktioniert, ohne dass Sie jemals ein Passwort festlegen. Für entfernte Aufrufer gibt es rpcauth, das einen gesalzenen Hash in der Konfigurationsdatei speichert statt eines Klartextgeheimnisses. Eine Verschlüsselung des Transports gibt es weiterhin nicht, sodass der Zugriff auf einen Node über ein Netzwerk einen SSH-Tunnel, ein VPN oder einen verborgenen Tor-Dienst erfordert und nichts anderes genügt.

Jedes Netzwerk hat seinen eigenen Port, damit mehrere Daemons eine Maschine teilen können: 8332 im Mainnet, 18332 im Testnet3, 48332 im Testnet4, 38332 im Signet und 18443 im Regtest. Der RPC-Port des Mainnets liegt direkt unter dem Peer-to-Peer-Port 8333, und die beiden zu verwechseln ist ein häufiger Anfängerfehler.

Der Dialekt hat sich langsam entwickelt. Bitcoin Core antwortete deutlich über ein Jahrzehnt lang mit einer lockeren Variante von JSON-RPC 1.0, und Version 28.0 brachte dem Server bei, JSON-RPC-2.0-Anfragen zu erkennen und streng nach dieser Spezifikation zu antworten, während der ältere Stil weiter akzeptiert wird. Walletspezifische Aufrufe werden über den Pfad adressiert, sodass ein Node mit mehreren Wallets sie über /wallet/ gefolgt vom Namen der Wallet leitet.

Wo Sie es sehen

RPC ist die Naht zwischen Bitcoin selbst und jedem darauf aufbauenden Produkt.

Eine Lightning-Implementierung fragt einen Node nach Blöcken und schiebt Schließungstransaktionen durch ihn. Block-Explorer, Mempool-Dashboards und Zahlungsabwickler wie BTCPay Server sitzen auf einer bitcoind-Instanz und verpacken sie in etwas Freundlicheres. Das Auszahlungssystem einer Börse ist, ganz unten im Stapel, eine Warteschlange von sendrawtransaction-Aufrufen. Wenn unsere Börsenbewertungen anmerken, dass eine Plattform Auszahlungen bündelt, geschieht das Bündeln in Code, der hier landet.

Hier werden auch selbst gehostete Installationen kompromittiert. Port 8332 wird ständig gescannt, und ein Node, der offen im Internet steht, mit einem erratbaren Passwort und einer geladenen Wallet, ist eine Wallet, die geleert werden wird. Binden Sie die Schnittstelle an die lokale Maschine, und greifen Sie per Tunnel darauf zu, wenn Sie sie von woanders brauchen.

RPC vs. RPC-Byte-Reihenfolge

RPC und die RPC-Byte-Reihenfolge teilen ein Akronym und sonst nichts, was echte Fehler verursacht. RPC ist die Schnittstelle. Die RPC-Byte-Reihenfolge ist eine Darstellungskonvention: Block- und Transaktions-Hashes werden in eine Richtung berechnet und übertragen und von der RPC-Schicht in der umgekehrten Richtung ausgegeben, weshalb eine aus einem Block-Explorer kopierte txid umgekehrt erscheint im Vergleich zu denselben 32 Bytes in einer Rohtransaktion. Geben Sie eine kopierte txid direkt in einen Byte-Parser ein, ohne sie umzudrehen, wird die Suche einfach nie übereinstimmen.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Ist es sicher, den RPC-Port eines Bitcoin-Nodes im Internet freizugeben?

Nein. Bitcoin Core entfernte in Version 0.12.0 die RPC-Unterstützung für SSL, sodass die Schnittstelle unverschlüsseltes HTTP ist, und Port 8332 wird fortlaufend gescannt. Binden Sie sie an die lokale Maschine, und greifen Sie stattdessen über einen SSH-Tunnel, ein VPN oder einen verborgenen Tor-Dienst darauf zu.

Warum funktioniert bitcoin-cli ohne Passwort?

Weil Bitcoin Core beim Start eine zufällige Cookie-Anmeldeinformation in sein Datenverzeichnis schreibt und bitcoin-cli sie von dort liest. Die Datei wird bei jedem Neustart ersetzt, sodass die Anmeldeinformation nur von derselben Maschine und nur für die aktuelle Sitzung gilt.

Verwandte Begriffe

Mehr zum Thema Nodes und Software

Diese Seite auf Englisch lesen