Auf dieser Seite wird beschrieben, wie Sie die Ethereum-Knoten-API aufrufen. Bevor Sie auf den Ethereum-Blockchain-Knoten zugreifen können, benötigen Sie den API-Schlüssel und die Knotenendpunkt-URL. Folgen Sie der Anleitung Blockchain-Knoten verwenden, um diese zu ermitteln, falls Sie dies noch nicht getan haben.
JSON-RPC
In diesem Abschnitt wird beschrieben, wie Sie die JSON-RPC API eines Ethereum-Blockchain-Knotens abfragen.
Beispiel für einen RPC-Aufruf des Ausführungsclients
Sie können den Ausführungsclient (Geth für vollständige Knoten oder Erigon für Archivknoten) über JSON-RPC abfragen. Die allgemeine JSON-RPC-Spezifikation finden Sie in der Ethereum API-Spezifikation und die Geth-spezifische Dokumentation in der Geth-RPC-Dokumentation.
So rufen Sie beispielsweise die Methode eth_getBlockByNumber() auf:
curl -H POST \ -H "X-goog-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "id":1, "jsonrpc":"2.0", "method": "eth_getBlockByNumber", "params": ["0x1", true] }' \ http://YOUR_NODES_URL Wobei:
idist eine Kennung, die vom Client, dem Ursprung der Anfrage, festgelegt wird. Beispiel:1jsonrpcist die JSON-RPC-Version. Beispiel:2.0.methodder Name der Methode. Beispiel:eth_getBlockByNumber.paramssind Werte, die mitmethodverwendet werden sollen.- YOUR_NODES_URL ist die Adresse, die in Blockchain-Knoten-URLs abrufen zurückgegeben wird, z. B.
json-rpc.ejp4j0b1rdiq06p8lxksd5z25.blockchainnodeengine.com. - YOUR_API_KEY ist der Schlüssel, den Sie unter API-Schlüssel erstellen erstellt haben.
Weitere Informationen zum Format des Request-Objekts finden Sie in der JSON-RPC2.0-Spezifikation.
Hier ist eine Beispielantwort auf den obigen Befehl:
{ "id" : 1, "jsonrpc" : "2.0", "result" : { "difficulty" : "0x3ff800000", "extraData" : "0x476574682f76312e302e302f6c696e75782f676f312e342e32", "gasLimit" : "0x1388", "gasUsed" : "0x0", "hash" : "0x88e96d4537bea4d9c05d12549907b32561d3bf31f45aae734cdc119f13406cb6", "logsBloom": "0x0000000000000000000000000000000000000", "miner" : "0x05a56e2d52c817161883f50c441c3228cfe54d9f", "mixHash" : "0x969b900de27b6ac6a67742365dd65f55a0526c41fd18e1b16f1a1215c2e66f59", "nonce" : "0x539bd4979fef1ec4", "number" : "0x1", "parentHash" : "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", "receiptsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "sha3Uncles" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "size" : "0x219", "stateRoot" : "0xd67e4d450343046425ae4271474353857ab860dbc0a1dde64b41b5cd3a532bf3", "timestamp" : "0x55ba4224", "totalDifficulty" : "0x7ff800000", "transactions" : [], "transactionsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "uncles" : [] } } Beacon-Knoten-RPC
Blockchain Node Engine stellt auch den Ethereum-Konsensclient-Endpunkt zur Verfügung. So fordern Sie beispielsweise den Status des Validators am Slot 1 an:
curl \ -H "X-goog-api-key: YOUR_API_KEY" "Content-Type: application/json" \ 'http://beacon.YOUR_NODES_URL/eth/v1/beacon/states/head/validators/1' Sie können Ihren API-Schlüssel auch als HTTP-Header anstelle eines Abfrageparameters angeben. Die folgende Abfrage ist gleichwertig:
curl \ -H "Content-Type: application/json" \ 'http://beacon.YOUR_NODES_URL/eth/v1/beacon/states/head/validators/1?key=YOUR_API_KEY' Weitere Erläuterungen:
- YOUR_NODES_URL ist die Adresse, die in Blockchain-Knoten-URLs abrufen zurückgegeben wird.
- YOUR_API_KEY ist der Schlüssel, den Sie unter API-Schlüssel erstellen erstellt haben.
Hier ist eine Beispielantwort auf den obigen Befehl:
{ "execution_optimistic": false, "data": { "index": "1", "balance": "36835614902", "status": "active_ongoing", "validator": { "pubkey": "0x1234abcd", "withdrawal_credentials": "0x1234abcd", "effective_balance": "32000000000", "slashed": false, "activation_eligibility_epoch": "0", "activation_epoch": "0", "exit_epoch": "18446744073709551615", "withdrawable_epoch": "18446744073709551615" } } } WebSocket
Wenn Sie Datenfeeds abonnieren möchten, anstatt Daten abzurufen, können Sie die WebSocket API des Ausführungsclients des Blockchain-Knotens verwenden.
So abonnieren Sie beispielsweise neue Kettenköpfe:
wscat -c wss://ws.YOUR_NODES_URL?key=YOUR_API_KEY Connected (press CTRL+C to quit) > {"jsonrpc":"2.0", "id": 1, "method": "eth_subscribe", "params": ["newHeads"]} Der Ausführungsclient antwortet mit einer Kennung für das Abo, z. B.:
{"jsonrpc":"2.0","id":1,"result":"0xf47df962ae9ba250ba9e9fb239b6894f"} Danach sendet der Client Details zu jedem neuen Chain-Head-Block, sobald er auftritt. Hier ist ein Beispiel für ein Ereignis aus dem oben genannten Abo:
{ "jsonrpc" : "2.0", "method" : "eth_subscription", "params" : { "result" : { "baseFeePerGas" : "0x4bdc620b8", "difficulty" : "0x0", "extraData" : "0x496c6c756d696e61746520446d6f63726174697a6520447374726962757465", "gasLimit" : "0x1c9c380", "gasUsed" : "0xe24dae", "hash" : "0xbde840749c4d9086d17d66079d5f7d3d568ed4572329691e5b4a70f44a551816", "logsBloom": "0x0000000000000000000000000000000000000", "miner" : "0xb4c9e4617a16be36b92689b9e07e9f64757c1792", "mixHash" : "0xf68eb0b3ec50e1543de1cc7f09c7735ba20fa252124511756857078a3ff9a7cf", "nonce" : "0x0000000000000000", "number" : "0x109e280", "parentHash" : "0x54f78faba9fde0d15d7a9d6b80c4569435c7fdc5f1fef3255110373b66ce14de", "receiptsRoot" : "0x876bcb5772f8597fee4b063c57b7a51209eb428034efabf4cdf39a46901681b4", "sha3Uncles" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "stateRoot" : "0xfc5daf9608c8f2b9944bcfe0b9182148d85b1a6ad4dc52d3eb522dd02687c7e0", "timestamp" : "0x647fd287", "transactionsRoot" : "0x0acaef87e4609ea6075d88fdd404b3fbd25d796af9044522beefd3c708d37af8", "withdrawalsRoot" : "0x7adfc670253572678769e7d80db8c4c94b5d14d4e014274f39b679fdb5e72d98" }, "subscription" : "0xf47df962ae9ba250ba9e9fb239b6894f" } } Messwerte
Ethereum-Knoten bieten eine Reihe von Messwerten zum Betriebsstatus des Knotens. Normalerweise werden diese von einem Tool wie Prometheus oder Grafana verwendet.
Um die von einem Beacon-Client bereitgestellten Messwerte abzurufen, können Sie einen Befehl wie den folgenden verwenden:
curl https://bc-mc.YOUR_NODES_URL/metrics/prometheus?key=YOUR_API_KEY Die Ausgabe sollte in etwa so aussehen:
# HELP async_tasks_count Total number of async tasks spawned using spawn # TYPE async_tasks_count gauge async_tasks_count{async_task_count="addr_broadcast"} 0 async_tasks_count{async_task_count="beacon_node"} 0 async_tasks_count{async_task_count="beacon_processor_manager"} 1 async_tasks_count{async_task_count="beacon_processor_reprocess_queue"} 1 async_tasks_count{async_task_count="beacon_processor_worker"} 0 async_tasks_count{async_task_count="discv5"} 4 async_tasks_count{async_task_count="el_fork_choice_update"} 0 async_tasks_count{async_task_count="eth1"} 1 ... Es gibt separate Endpunkte für Messwerte für den Ausführungsclient und den Beacon-Client. Für den Ausführungsclient haben sie in der Regel das Präfix ec-mc und für den Beacon-Client das Präfix bc-mc (wie im Beispiel oben).
Weitere Informationen zu Messwerten aus den einzelnen Clientsoftwareprodukten finden Sie unter: