JSON-RPC-API
Letzte Änderung: @Coram_Deo(opens in a new tab), Invalid DateTime
Damit eine Software-Anwendung mit der Ethereum-Blockchain interagieren kann – entweder um Blockchain-Daten zu lesen oder Transaktionen an das Netzwerk zu senden – muss sie mit einem Ethereum-Knoten verbunden werden.
Zu diesem Zweck implementiert jeder Ethereum-Client eine JSON-RPC-Spezifikation(opens in a new tab), sodass eine einheitliche Methode vorliegt, auf die sich Anwendungen verlassen können, unabhängig von der spezifischen Nodes oder Client Implementierung.
JSON-RPC(opens in a new tab) ist ein zustandsloses, leichtgewichtiges Remote-Prozeduraufruf-(RPC)-Protokoll. Es definiert mehrere Datenstrukturen und die Regeln für deren Verarbeitung. Sie ist transportunabhängig, da die Konzepte innerhalb eines Prozesses, über Sockets, über HTTP oder in vielen verschiedenen Nachrichtenübermittlungsumgebungen verwendet werden können. Verwendet wird dabei das Datenformat JSON (RFC 4627).
Client-Implementierungen
Ethereum-Clients können bei der Implementierung der JSON-RPC-Spezifikation jeweils unterschiedliche Programmiersprachen verwenden. Weitere Details zu den einzelnen Programmiersprachen finden Sie in der Client-Dokumentation. Es wird empfohlen, dass Sie sich mit den neuesten Informationen zur API-Unterstützung in der Dokumentation des jeweiligen Clients vertraut machen.
Komfortable Bibliotheken
Es ist möglich, über die JSAON-RPC-API direkt mit Ethereum-Clients zu interagieren, doch für dApp-Entwickler gibt es häufig einfachere Optionen. Es gibt viele JavaScript- und Backend-API- Bibliotheken, die Wrapper für die JSON-RPC-API bereitstellen. Mithilfe dieser Bibliotheken können Entwickler intuitive, einzeilige Methoden in der Programmiersprache ihrer Wahl schreiben, um JSON-RPC-Anforderungen (unter der Haube) zu initialisieren, die mit Ethereum interagieren.
Konsensclient-APIs
Diese Seite befasst sich hauptsächlich mit der JSON-RPC-API, die von Ethereum-Ausführungsclients verwendet wird. Konsensclients haben jedoch auch eine RPC-API, mit der Benutzer Informationen über den Knoten abfragen sowie Beacon-Blöcke, Beacon-Zustand und andere konsensbezogene Informationen direkt von einem Knoten anfordern können. Diese API ist auf der Webseite Beacon API(opens in a new tab) dokumentiert.
Es wird auch eine interne API für die Kommunikation zwischen Clients innerhalb eines Knotens verwendet, d. h. sie ermöglicht es dem Konsensclient und dem Ausführungsclient, Daten auszutauschen. Dies wird als „Engine API“ bezeichnet und die Spezifikationen sind auf GitHub(opens in a new tab) verfügbar.
Spezifikationen des Ausführungsclients
Lesen Sie die vollständige JSON-RPC-API-Spezifikation auf GitHub(opens in a new tab).
Konventionen
Hexadezimalwert-Kodierung
In JSON werden zwei Schlüssel-Datentypen übertragen: Roh-Byte-Arrays und Mengen. Beide werden mit einer Hex-Kodierung übertragen, haben jedoch unterschiedliche Anforderungen an das Format.
Mengen
Wenn Mengen (Ganzzahlen, Kommazahlen) kodiert werden: Als Hexadezimalwert kodieren, ein „0x“ als Präfix hinzufügen und die kompakteste Darstellung verwenden (kleine Ausnahme: Null sollte als „0x0“ dargestellt werden).
Hier sind einige Beispiele:
- 0x41 (entspricht Dezimalwert 65)
- 0x41 (entspricht Dezimalwert 1024)
- RICHTIG: „0x“ (sollte immer mindestens eine Ziffer enthalten - Null ist „0x0“)
- RICHTIG: „0x400“ (führende Nullen sind nicht zulässig)
- RICHTIG: „0xff“ (muss mit „0x“ prefixiert werden)
Unformatierte Daten
Wenn unformatierte Daten kodiert werden (Byte-Arrays, Kontoadressen, Hashes, Bytecode-Arrays): Als Hex kodieren, „0x“ als Präfix hinzufügen, zwei Hex-Ziffern pro Byte.
Hier sind einige Beispiele:
- 0x41 (Größe 1, „A“)
- 0x004200 (Größe 3, „\0B\0“)
- 0x (Größe 0, "")
- FALSCH: 0xf0f0f (muss eine gerade Anzahl von Ziffern haben)
- FALSCH: 004200 (muss 0x als Präfix hinzufügen)
Der Standardblockparameter
Die folgenden Methoden haben einen zusätzlichen Standardblockparameter:
Wenn Anfragen gestellt werden, die den Zustand von Ethereum beeinflussen, bestimmt der letzte Standardblockparameter die Höhe des Blocks.
Folgende Optionen sind für den Standardblockparameter möglich:
HEX String
- eine ganzzahlige BlocknummerString „frühestes“
für den frühesten/Genesis-BlockString „neueste“
- für den neuesten abgebauten BlockString „sicher“
- für den neuesten sicheren BlockString „finalisiert“
- für den neuesten finalisierten BlockString „ausstehend“
- für den ausstehenden Zustand/Transaktionen
Beispiele
Auf dieser Seite stellen wir Beispiele dafür bereit, wie man einzelne JSON_RPC API-Endpunkte mit dem Befehlszeilenwerkzeug curl(opens in a new tab) verwendet. Diese Beispiele für einzelne Endpunkte finden sich im Abschnitt Curl-Beispiele unten. Weiter unten auf der Seite stellen wir auch ein End-to-End-Beispiel bereit, wie man mithilfe eines Geth-Nodes, der JSON_RPC API und curl einen Smart Contract kompiliert und bereitstellt.
Curl-Beispiele
Beispiele zur Verwendung der JSON_RPC-API durch Ausführen von curl(opens in a new tab)-Anfragen an einem Ethereum-Knoten werden unten bereitgestellt. Jedes Beispiel enthält eine Beschreibung des spezifischen Endpunkts, seiner Parameter, seines Rückgabetyps und ein Beispiel dafür, wie es verwendet werden sollte.
Es kann sein, dass die curl-Anfragen eine Fehlermeldung im Zusammenhang mit dem Inhaltstyp zurückgeben. Das liegt daran, dass die Option --data
den Inhaltstyp auf application/x-www-form-urlencoded
festlegt. Wenn Ihr Knoten sich darüber beschwert, setzen Sie den Header manuell, indem Sie am Anfang des Aufrufs -H "Content-Type: application/json"
platzieren. In den Beispielen ist auch die URL/IP & Port-Kombination nicht enthalten, die als letztes Argument an curl übergeben werden muss (z. B. 127.0.0.1:8545
). Ein vollständiger curl-Aufruf, der diese zusätzlichen Daten enthält, hat folgende Form:
1curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545
Kommunikation, Zustand, Verlauf
Eine Handvoll Kernmethoden von JSON-RPC erfordern Daten aus dem Ethereum-Netzwerk und gehören in drei Hauptkategorien: Kommunikation, Zustand, Verlauf. Verwenden Sie die Links in diesen Abschnitten, um zu jeder Methode zu springen, oder verwenden Sie das Inhaltsverzeichnis, um die gesamte Liste der Methoden zu durchsuchen.
Kommunikationsmethoden
Diese Methoden verfolgen die Spitze der Blockchain. Das ist der Weg, wie Transaktionen sich im Netzwerk verbreiten, in Blöcke aufgenommen werden und wie Clients von neuen Blöcken erfahren.
Zustandsmethoden
Methoden, die den aktuellen Zustand aller gespeicherten Daten melden. Der „Zustand“ ist wie ein großes gemeinsames Stück RAM und enthält Kontostände, Vertragsdaten und Gasabschätzungen.
Verlaufsmethoden
Abrufen historischer Aufzeichnungen jedes Blocks bis zum Genesis-Block. Dies ist wie eine große Nur-hinzufügen-Datei, die alle Blockheaders, Blockinhalte, Onkelblöcke und Transaktionsbelege enthält.
- eth_getBlockTransactionCountByHash
- eth_getBlockTransactionCountByNumber
- eth_getUncleCountByBlockHash
- eth_getUncleCountByBlockNumber
- eth_getBlockByHash
- eth_getBlockByNumber
- eth_getTransactionByHash
- eth_getTransactionByBlockHashAndIndex
- eth_getTransactionByBlockNumberAndIndex
- eth_getTransactionReceipt
- eth_getUncleByBlockHashAndIndex
- eth_getUncleByBlockNumberAndIndex
JSON-RPC API-Methoden
web3_ClientVersion
Gibt die aktuelle Client-Version zurück.
Parameter
Keine
Rückgabewert
String
- Die aktuelle Client-Version
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'3// Result4{5 "id":67,6 "jsonrpc":"2.0",7 "result": "Mist/v0.9.3/darwin/go1.4.1"8}Kopieren
web3_sha3
Gibt Keccak-256 (nicht der standardisierte SHA3-256) von den gegebenen Daten zurück.
Parameter
DATA
- Die Daten, die in einen SHA3-Hash konvertiert werden sollen
1params: ["0x68656c6c6f20776f726c64"]Kopieren
Rückgabewert
DATA
- Das SHA3-Ergebnis des gegebenen Strings.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}'3// Result4{5 "id":64,6 "jsonrpc": "2.0",7 "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"8}Kopieren
net_version
Gibt die aktuelle Netzwerk-ID zurück.
Parameter
Keine
Rückgabewert
String
- Die aktuelle Netzwerk-ID.
Die vollständige Liste der aktuellen Netzwerk-IDs ist verfügbar unter chainlist.org(opens in a new tab). Einige häufige sind:
1
: Ethereum Mainnet5
: Goerli Testnetz11155111
: Sepolia Testnetz
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}'3// Result4{5 "id":67,6 "jsonrpc": "2.0",7 "result": "3"8}Kopieren
net_listening
Gibt true
zurück, wenn der Client aktiv auf Netzwerkverbindungen hört.
Parameter
Keine
Rückgabewert
Boolean
- true
, wenn zuhörend, ansonsten false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}'3// Result4{5 "id":67,6 "jsonrpc":"2.0",7 "result":true8}Kopieren
net_peerCount
Gibt die Anzahl der aktuell mit dem Client verbundenen Peers zurück.
Parameter
Keine
Rückgabewert
QUANTITY
- Ganzzahlwert, der die Anzahl der verbundenen Peers repräsentiert.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'3// Result4{5 "id":74,6 "jsonrpc": "2.0",7 "result": "0x2" // 28}Kopieren
eth_protocolVersion
Gibt die aktuelle Ethereum-Protokollversion zurück. Beachten Sie, dass diese Methode nicht in Geth verfügbar(opens in a new tab) ist.
Parameter
Keine
Rückgabewert
String
- Die aktuelle Ethereum-Protokollversion
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}'3// Result4{5 "id":67,6 "jsonrpc": "2.0",7 "result": "54"8}Kopieren
eth_syncing
Gibt ein Objekt mit Daten zum Synchronisierungsstatus oder false
zurück.
Parameter
Keine
Rückgabewert
Objekt|Boolean
, Ein Objekt mit Synchronisierungsstatus-Daten oder FALSE
, wenn nicht synchronisiert wird:
startingBlock
:QUANTITY
- Der Block, bei dem der Import begonnen hat (wird nur zurückgesetzt, nachdem die Synchronisierung ihren Kopf erreicht hat)currentBlock
:QUANTITY
- Der aktuelle Block, identisch zu eth_blockNumberhighestBlock
:QUANTITY
- Der geschätzte höchste Block
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": {8 startingBlock: '0x384',9 currentBlock: '0x386',10 highestBlock: '0x454'11 }12}13// Or when not syncing14{15 "id":1,16 "jsonrpc": "2.0",17 "result": false18}Alles anzeigenKopieren
eth_coinbase
Gibt die Coinbase-Adresse des Clients zurück.
Parameter
Keine
Rückgabewert
DATA
, 20 Bytes - die aktuelle Coinbase-Adresse.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}'3// Result4{5 "id":64,6 "jsonrpc": "2.0",7 "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"8}Kopieren
eth_chainId
Gibt die Blockchain-ID zurück, die für das Signieren der Replay-geschützten Transaktionen verwendet wird.
Parameter
Keine
Rückgabewert
chainId
, Hexadezimalwert als String, der den Ganzzahlwert der aktuellen Chain-ID repräsentiert.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}'3// Result4{5 "id":67,6 "jsonrpc": "2.0",7 "result": "0x1"8}Kopieren
eth_mining
Gibt true
zurück, wenn der Client aktiv neue Blöcke schürft.
Parameter
Keine
Rückgabewert
Boolean
- Gibt true
zurück, wenn der Client aktiv mint, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}'3//4{5 "id":71,6 "jsonrpc": "2.0",7 "result": true8}Kopieren
eth_hashrate
Gibt die Anzahl der Hashes pro Sekunde zurück, mit der die Node mint.
Parameter
Keine
Rückgabewert
QUANTITY
- Anzahl der Hashes pro Sekunde.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}'3// Result4{5 "id":71,6 "jsonrpc": "2.0",7 "result": "0x38a"8}Kopieren
eth_gasPrice
Gibt den aktuellen Preis pro Gas in Wei zurück.
Parameter
Keine
Rückgabewert
QUANTITY
- Ganzzahl des aktuellen Gaspreises in Wei.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'3// Result4{5 "id":73,6 "jsonrpc": "2.0",7 "result": "0x1dfd14000" // 8049999872 Wei8}Kopieren
eth_accounts
Gibt eine Liste von Adressen zurück, die dem Client gehören.
Parameter
Keine
Rückgabewert
Array von DATEN
, 20 Bytes - Adressen, die dem Client gehören.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]8}Kopieren
eth_blockNumber
Gibt die Anzahl des aktuellsten Blocks zurück.
Parameter
Keine (None)
Rückgabewert
QUANTITY
- Ganzzahliger Wert der Blocknummer, auf der sich der Client derzeit befindet.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'3// Result4{5 "id":83,6 "jsonrpc": "2.0",7 "result": "0x4b7" // 12078}Kopieren
eth_getBalance
Gibt das Guthaben des Kontos der angegebenen Adresse zurück.
Parameter
DATA
, 20 Bytes - Adresse, deren Guthaben überprüft werden soll.QUANTITY|TAG
– Ganzzahlige Blocknummer oder der String"latest"
,"earliest"
oder"pending"
, siehe Standardblockparameter
1params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]Kopieren
Rückgabewert
QUANTITY
ist ein Ganzzahlwert, der das aktuelle Gleichgewicht in Wei darstellt.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x0234c8a3397aab58" // 1589724902343750008}Kopieren
eth_getStorageAt
Gibt den Wert aus einer Speicherposition an einer gegebenen Adresse zurück.
Parameter
DATA
, 20 Bytes - Adresse des Speichers.QUANTITY
- Ganzzahlwert der Position im Speicher.QUANTITY|TAG
– Ganzzahlige Blocknummer oder der String"latest"
,"earliest"
oder"pending"
, siehe Standardblockparameter
Rückgabewert
DATA
- Der Wert an dieser Speicherposition.
Beispiel: Die Berechnung der richtigen Position hängt vom abzurufenden Speicher ab. Betrachten Sie den folgenden Vertrag, der unter 0x295a70b2de5e3953354a6a8344e616ed314d7251
von der Adresse 0x391694e7e0b0cce554cb130d723a9d27458f9298
bereitgestellt wurde.
1contract Storage {2 uint pos0;3 mapping(address => uint) pos1;4 function Storage() {5 pos0 = 1234;6 pos1[msg.sender] = 5678;7 }8}
Das Abrufen des Wertes von pos0 ist einfach:
1curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:85452{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}Kopieren
Das Abrufen eines Elements aus der Karte ist schwieriger. Die Position eines Elements in der Karte wird berechnet mit:
1keccack(LeftPad32(key, 0), LeftPad32(map position, 0))Kopieren
Das bedeutet, um den Speicher auf pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] abzurufen, müssen wir die Position berechnen mit:
1keccak(2 decodeHex(3 "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +4 "0000000000000000000000000000000000000000000000000000000000000001"5 )6)Kopieren
Die Geth-Konsole, die mit der Web3-Bibliothek geliefert wird, kann verwendet werden, um die Berechnung durchzuführen:
1> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"2undefined3> web3.sha3(key, {"encoding": "hex"})4"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"Kopieren
Nun, um den Speicher abzurufen:
1curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:85452{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}Kopieren
eth_getTransactionCount
Gibt die Anzahl der gesendeten Transaktionen von einer Adresse zurück.
Parameter
DATA
, 20 Bytes - Adresse.QUANTITY|TAG
– Ganzzahlige Blocknummer oder der String"latest"
,"earliest"
oder"pending"
, siehe Standardblockparameter
1params: [2 "0x407d73d8a49eeb85d32cf465507dd71d507100c1",3 "latest", // state at the latest block4]Kopieren
Rückgabewert
QUANTITY
- Ganzzahlwert der Anzahl der von dieser Adresse gesendeten Transaktionen.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x1" // 18}Kopieren
eth_getBlockTransactionCountByHash
Gibt die Anzahl der Transaktionen in einem Block zurück, der dem angegebenen Block-Hash entspricht.
Parameter
DATA
, 32 Bytes - Hash eines Blocks
1params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]Kopieren
Rückgabewert
QUANTITY
- Ganzzahlwert der Anzahl der Transaktionen in diesem Block.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0xb" // 118}Kopieren
eth_getBlockTransactionCountByNumber
Gibt die Anzahl der Transaktionen in einem Block zurück, die der gegebenen Blocknummer entsprechen.
Parameter
QUANTITY|TAG
- Ganzzahlwert einer Blocknummer oder der String"earliest"
,"latest"
or"pending"
, wie im Standardblockparameter beschrieben.
1params: [2 "0xe8", // 2323]Kopieren
Rückgabewert
QUANTITY
- Ganzzahlwert der Anzahl der Transaktionen in diesem Block.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0xa" // 108}Kopieren
eth_getUncleCountByBlockHash
Gibt die Anzahl der Onkel in einem Block zurück, der der gegebenen Blockhash entspricht.
Parameter
DATA
, 32 Bytes - Hash eines Blocks
1params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]Kopieren
Rückgabewert
QUANTITY
- Ganzzahlwert für die Anzahl der Onkel in diesem Block.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x1" // 18}Kopieren
eth_getUncleCountByBlockNumber
Gibt die Anzahl der Onkel in einem Block zurück, der der gegebenen Blocknummer entspricht.
Parameter
QUANTITY|TAG
- Ganzzahlwert einer Blocknummer oder der String „latest“, „earliest“ oder „pending“, wie im Standardblockparameter beschrieben
1params: [2 "0xe8", // 2323]Kopieren
Rückgabewert
QUANTITY
- Ganzzahlwert für die Anzahl der Onkel in diesem Block.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x1" // 18}Kopieren
eth_getCode
Gibt den Code an einer gegebenen Adresse zurück.
Parameter
DATA
, 20 Bytes - AdresseQUANTITY|TAG
– Ganzzahlige Blocknummer oder der String"latest"
,"earliest"
oder"pending"
, siehe Standardblockparameter
1params: [2 "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",3 "0x2", // 24]Kopieren
Rückgabewert
DATA
- Der Code von der angegebenen Adresse.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x2"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"8}Kopieren
eth_sign
Die Methode Unterschrift berechnet eine Ethereum-spezifische Signatur mit: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))
.
Durch das Hinzufügen eines Präfixes zur Nachricht wird die berechnete Signatur als Ethereum-spezifische Signatur erkennbar. Dies verhindert Missbrauch, bei dem eine bösartige dApp beliebige Daten (z. B. Transaktionen) signieren und die Signatur nutzen kann, um sich als Opfer auszugeben.
Hinweis: Die zum Signieren verwendete Adresse muss entsperrt sein.
Parameter
DATA
, 20 Bytes - AdresseDATA
, N Bytes - Nachricht zum Signieren
Rückgabewert
DATA
: Signatur
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"8}Kopieren
eth_signTransaction
Signiert eine Transaktion, die zu einem späteren Zeitpunkt an das Netzwerk gesendet werden kann, indem sie mit eth_sendRawTransaction verwendet wird.
Parameter
Objekt
- Das Transaktionsobjekt
from
:DATA
, 20 Bytes - Die Adresse, von der die Transaktion gesendet wird.to
:DATA
, 20 Bytes - (Optional beim Erstellen eines neuen Vertrags) Die Adresse, an die die Transaktion gerichtet ist.gas
:MENGE
- (Optional, Standard: 90000) Ganzzahl des Gases, das für die Transaktionsausführung bereitgestellt wurde. Es wird ungenutztes Gas zurückgegeben.gasprice
:QUANTITY
- (Optional, Standard: Noch zu bestimmen) Ganzzahlwert des Gaspreises, der für jedes bezahlte Gas in Wei verwendet wird.value
:QUANTITY
- (Optional) Ganzzahlwert, der mit dieser Transaktion in Wei gesendet wird.data
:DATA
- Der kompilierte Code eines Vertrags ODER der Hash der aufgerufenen Methode Signatur und codierter Parameter.nonce
:QUANTITY
- (Optional) Ganzzahl einer Nonce. Dies ermöglicht es, eigene ausstehende Transaktionen mit der gleichen Nonce zu überschreiben.
Rückgabewert
DATA
, Das signierte Transaktionsobjekt.
Beispiel
1// Request2curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}'3// Result4{5 "id": 1,6 "jsonrpc": "2.0",7 "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"8}Kopieren
eth_sendTransaction
Erzeugt eine neue Transaktion für einen Nachrichtenaufruf oder eine Vertragserstellung, wenn das Datenfeld einen Code enthält.
Parameter
Objekt
- Das Transaktionsobjekt
from
:DATA
, 20 Bytes - Die Adresse, von der die Transaktion gesendet wird.to
:DATA
, 20 Bytes - (Optional beim Erstellen eines neuen Vertrags) Die Adresse, an die die Transaktion gerichtet ist.gas
:MENGE
- (Optional, Standard: 90000) Ganzzahlwert des Gases, das für die Transaktionsausführung bereitgestellt wurde. Es wird ungenutztes Gas zurückgegeben.gasprice
:QUANTITY
– (Optional, Standard: Noch zu bestimmen) Ganzzahlwert des Gaspreises, der für jedes bezahlte Gas verwendet wird.Value
:QUANTITY
- (Optional) Ganzzahlwert des mit dieser Transaktion gesendeten Werts.data
:DATA
- Der kompilierte Code eines Vertrags ODER der Hash der aufgerufenen Methode Signatur und kodierter Parameter.nonce
:QUANTITY
- (Optional) Ganzzahlwert einer Nonce. Dies ermöglicht es, eigene ausstehende Transaktionen mit der gleichen Nonce zu überschreiben.
1params: [2 {3 from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",4 to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567",5 gas: "0x76c0", // 304006 gasPrice: "0x9184e72a000", // 100000000000007 value: "0x9184e72a", // 24414062508 data: "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",9 },10]Alles anzeigenKopieren
Rückgabewert
DATA
, 32 Bytes – Der Transaktions-Hash oder der Null-Hash, wenn die Transaktion noch nicht verfügbar ist.
Verwenden Sie eth_getTransactionReceipt, um die Vertragsadresse zu erhalten, nachdem die Transaktion gemint wurde, als Sie einen Vertrag erstellt haben.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"8}Kopieren
eth_sendRawTransaction
Erstellt eine neue Nachrichtenaufruftransaktion oder eine Vertragserstellung für signierte Transaktionen.
Parameter
DATA
, Die signierten Transaktionsdaten.
1params: [2 "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",3]Kopieren
Rückgabewert
DATA
, 32 Bytes – Der Transaktions-Hash oder der Null-Hash, wenn die Transaktion noch nicht verfügbar ist.
Verwenden Sie eth_getTransactionReceipt, um die Vertragsadresse zu erhalten, nachdem die Transaktion gemint wurde, als Sie einen Vertrag erstellt haben.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"8}Kopieren
eth_call
Führt sofort einen neuen Nachrichtenaufruf aus, ohne eine Transaktion auf der Blockchain zu erstellen.
Parameter
Object
- Das Transaktionsaufrufobjekt
from
:DATA
, 20 Bytes - (Optional) Die Adresse, von der die Transaktion gesendet wird.to
:DATA
, 20 Bytes – Die Adresse, an die die Transaktion gerichtet ist.gas
:QUANTITY
- (Optional) Ganzzahlwert des für die Transaktionsausführung bereitgestellten Gases. eth_call verbraucht kein Gas, aber dieser Parameter kann von einigen Ausführungen benötigt werden.gasprice
:QUANTITY
- (Optional) Ganzzahlwert des Gaspreises, der für jedes bezahlte Gas verwendet wirdvalue
:QUANTITY
- (Optional) Ganzzahlwert des mit dieser Transaktion gesendeten Wertsdata
:DATA
- (optional) Hash der Methode Unterschrift und der kodierten Parameter. Einzelheiten finden Sie unter Ethereum Contract ABI in der Solidity-Dokumentation(opens in a new tab)
QUANTITY|TAG
– Ganzzahlige Blocknummer oder der String"latest"
,"earliest"
oder"pending"
, siehe Standardblockparameter
Rückgabewert
DATA
- Der Rückgabewert des ausgeführten Vertrages.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x"8}Kopieren
eth_estimateGas
Generiert und gibt eine Schätzung zurück, wie viel Gas erforderlich ist, damit die Transaktion abgeschlossen werden kann. Die Transaktion wird nicht zur Blockchain hinzugefügt. Beachten Sie, dass die Schätzung aus verschiedenen Gründen, einschließlich der EVM-Mechanik und der Leistung des Knotens, erheblich höher sein kann als die tatsächlich von der Transaktion verbrauchte Gasmenge.
Parameter
Siehe eth_call-Parameter, mit Ausnahme, dass alle Eigenschaften optional sind. Wenn kein Gaslimit angegeben ist, verwendet Geth das Blockgaslimit aus dem anstehenden Block als Obergrenze. Infolgedessen reicht die zurückgegebene Schätzung möglicherweise nicht aus, um die Abfrage/Transaktion auszuführen, wenn die Gasmenge höher als das ausstehende Blockgaslimit ist.
Rückgabewert
QUANTITY
- Die verbrauchte Gasmenge.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x5208" // 210008}Kopieren
eth_getBlockByHash
Gibt Informationen zu einem Block per Hash zurück.
Parameter
DATA
, 32 Bytes - Hash eines Blocks.Boolean
- Beitrue
werden die vollständigen Transaktionsobjekte zurückgegeben, beifalse
nur die Hashes der Transaktionen.
1params: [2 "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",3 false,4]Kopieren
Rückgabewert
Object
- Ein Blockobjekt oder null
, wenn kein Block gefunden wurde:
number
:QUANTITY
- Die Blocknummer.null
, wenn es ein ausstehender Block ist.hash
:DATA
, 32 Bytes - Hash des Blocks.null
, wenn es ein ausstehender Block ist.parentHash
:DATA
, 32 Bytes - Hash des übergeordneten Blocks.nonce
:DATA
, 8 Bytes - Hash des generierten Proof-of-Work.null
, wenn es ein ausstehender Block ist.sha3Uncles
:DATA
, 32 Bytes - SHA3 der Onkeldaten im Block.logsBloom
:DATA
, 256 Bytes - Der Bloom-Filter für die Protokolle des Blocks.null
, wenn es ein ausstehender Block ist.TransaktionsRoot
:DATA
, 32 Bytes - Das Stammverzeichnis der Transaktions-Trie des Blocks.stateRoot
:DATA
, 32 Bytes – Die Wurzel des endgültigen Zustands-Trie des Blocks.receiptsRoot
:DATA
, 32 Bytes - Die Wurzel des Quittungstries des Blocks.miner
:DATA
, 20 Bytes - Die Adresse des Begünstigten, dem die Mining-Belohnungen gegeben wurden.difficulty
:QUANTITY
- Ganzzahlwert der Schwierigkeit für diesen Block.totalDifficulty
:QUANTITY
- Ganzzahlwert der Gesamtschwierigkeit der Blockchain bis zu diesem Block.extraData
:DATA
- Das Feld „zusätzliche Daten“ dieses Blocks.size
:QUANTITY
- Ganzzahlwert der Größe dieses Blocks in Bytes.gasLimit
:QUANTITY
- Das maximal zulässige Gas in diesem Block.gasUsed
:QUANTITY
- Das insgesamt von allen Transaktionen in diesem Block verbrauchte Gas.timestamp
:QUANTITY
- Der Unix-Zeitstempel für den Zeitpunkt, zu dem der Block sortiert wurde.transactions
:Array
- Array von Transaktionsobjekten oder 32-Byte-Transaktions-Hashes, abhängig vom zuletzt angegebenen Parameter.uncles
:Array
- Array von Onkel-Hashes.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}'3// Result4{5{6"jsonrpc": "2.0",7"id": 1,8"result": {9 "difficulty": "0x4ea3f27bc",10 "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32",11 "gasLimit": "0x1388",12 "gasUsed": "0x0",13 "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",14 "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",15 "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171",16 "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843",17 "nonce": "0x689056015818adbe",18 "number": "0x1b4",19 "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54",20 "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",21 "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",22 "size": "0x220",23 "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d",24 "timestamp": "0x55ba467c",25 "totalDifficulty": "0x78ed983323d",26 "transactions": [27 ],28 "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",29 "uncles": [30 ]31}32}Alles anzeigenKopieren
eth_getBlockByNumber
Gibt Informationen über eine Block-für-Block-Nummer zurück.
Parameter
QUANTITY|TAG
- Ganzzahlwert einer Blocknummer oder der String"earliest"
,"latest"
or"pending"
, wie im Standardblockparameter beschrieben.Boolean
- Beitrue
werden die vollständigen Transaktionsobjekte zurückgegeben, beifalse
nur die Hashes der Transaktionen.
1params: [2 "0x1b4", // 4363 true,4]Kopieren
Rückgabewerte Siehe eth_getBlockByHash
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}'Kopieren
Ergebnis siehe eth_getBlockByHash
eth_getTransactionByHash
Gibt die Informationen über eine Transaktion zurück, die anhand des Transaktions-Hashs angefordert wurde.
Parameter
DATA
, 32 Bytes - Hash einer Transaktion
1params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]Kopieren
Rückgabewert
Object
- Ein Transaktionsobjekt oder null
, wenn keine Transaktion gefunden wurde:
blockHash
:DATA
, 32 Bytes - Hash des Blocks, in dem sich diese Transaktion befand.null
, wenn es aussteht.blockNumber
:QUANTITY
- Blocknummer, in der sich diese Transaktion befand.null
, wenn es aussteht.from
:DATA
, 20 Bytes - Adresse des Senders.gas
:QUANTITY
- Vom Sender bereitgestelltes Gas.gasPrice
:QUANTITY
- Vom Sender bereitgestellter Gaspreis in Wei.hash
:DATA
, 32 Bytes - Hash der Transaktion.input
:DATA
- Die mit der Transaktion gesendeten Daten.nonce
:QUANTITY
- Die Anzahl der von dem Sender vor dieser Transaktion durchgeführten Transaktionen.to
:DATA
, 20 Bytes - Adresse des Empfängers.null
wenn es sich um eine Vertragserstellungstransaktion handelt.transactionIndex
:QUANTITY
- Ganzzahlwert der Transaktionsindexposition im Block.null
, wenn es aussteht.value
:QUANTITY
- Der übertragene Wert in Wei.v
:QUANTITY
- ECDSA Wiederherstellungs-IDr
:QUANTITY
- ECDSA Signatur rs
:QUANTITY
- ECDSA Signatur s
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}'3// Result4{5 "jsonrpc":"2.0",6 "id":1,7 "result":{8 "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",9 "blockNumber":"0x5daf3b", // 613970710 "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",11 "gas":"0xc350", // 5000012 "gasPrice":"0x4a817c800", // 2000000000013 "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",14 "input":"0x68656c6c6f21",15 "nonce":"0x15", // 2116 "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb",17 "transactionIndex":"0x41", // 6518 "value":"0xf3dbb76162000", // 429000000000000019 "v":"0x25", // 3720 "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",21 "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"22 }23}Alles anzeigenKopieren
eth_getTransactionByBlockHashAndIndex
Gibt Informationen über eine Transaktion anhand des Block-Hashs und der Transaktionsindexposition zurück.
Parameter
DATA
, 32 Bytes - Hash eines Blocks.QUANTITY
- Ganzzahlwert der Transaktionsindexposition.
1params: [2 "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",3 "0x0", // 04]Kopieren
Rückgabewert Siehe eth_getTransactionByHash
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'Kopieren
Ergebnis siehe eth_getTransactionByHash
eth_getTransactionByBlockNumberAndIndex
Gibt Informationen über eine Transaktion anhand der Blocknummer und der Transaktionsindexposition zurück.
Parameter
QUANTITY|TAG
- Eine Blocknummer oder die Zeichenfolge"earliest"
,"latest"
oder"pending"
, wie im Standardblockparameter.QUANTITY
- Die Transaktionsindexposition.
1params: [2 "0x29c", // 6683 "0x0", // 04]Kopieren
Rückgabewert Siehe eth_getTransactionByHash
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'Kopieren
Ergebnis siehe eth_getTransactionByHash
eth_getTransactionReceipt
Gibt den Beleg einer Transaktion anhand des Transaktions-Hashs zurück.
Hinweis Der Beleg ist für ausstehende Transaktionen nicht verfügbar.
Parameter
DATA
, 32 Bytes - Hash einer Transaktion
1params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"]Kopieren
Rückgabewert Object
- Ein Transaktionsbeleg-Objekt oder null
, wenn kein Beleg gefunden wurde:
transactionHash
:DATA
, 32 Bytes - Hash der Transaktion.transactionIndex
:QUANTITY
- Ganzzahlwert der Transaktionsindexposition im Block.blockHash
:DATA
, 32 Bytes - Hash des Blocks, in dem sich diese Transaktion befand.blockNumber
:QUANTITY
- Blocknummer, in der sich diese Transaktion befand.from
:DATA
, 20 Bytes - Adresse des Senders.to
:DATA
, 20 Bytes - Adresse des Empfängers. null, wenn es sich um eine Vertragserstellungstransaktion handelt.cumulativeGasUsed
:QUANTITY
- Die Gesamtmenge an Gas, die bei Ausführung dieser Transaktion im Block verwendet wurde.effectiveGasPrice
:QUANTITY
- Die Summe der Grundgebühr und der Tipp, die pro Einheit Gas bezahlt wurde.gasUsed
:QUANTITY
- Die Menge an Gas, die von dieser bestimmten Transaktion allein verwendet wurde.contractAddress
:DATA
, 20 Bytes - Die Vertragsadresse, die erstellt wurde, falls die Transaktion eine Vertragserstellung war, andernfallsnull
.logs
:Array
- Array von Log-Objekten, die diese Transaktion generiert hat.logsBloom
:DATA
, 256 Bytes - Bloom-Filter für leichte Clients, um schnell verwandte Logs abzurufen.type
:QUANTITY
- Ganzzahlwert des Transaktionstyps,0x0
für veraltete Transaktionen,0x1
für Zugriffslistentypen,0x2
für dynamische Gebühren.
Es gibt auch entweder zurück:
root
:DATA
32 Bytes des vorherigen Transaktions-Stateroots (vor Byzantium)status
:QUANTITY
entweder1
(Erfolg) or0
(Fehler)
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"],"id":1}'3// Result4{5 "jsonrpc": "2.0",6 "id": 1,7 "result": {8 "blockHash":9 "0xa957d47df264a31badc3ae823e10ac1d444b098d9b73d204c40426e57f47e8c3",10 "blockNumber": "0xeff35f",11 "contractAddress": null, // string of the address if it was created12 "cumulativeGasUsed": "0xa12515",13 "effectiveGasPrice": "0x5a9c688d4",14 "from": "0x6221a9c005f6e47eb398fd867784cacfdcfff4e7",15 "gasUsed": "0xb4c8",16 "logs": [{17 // logs as returned by getFilterLogs, etc.18 }],19 "logsBloom": "0x00...0", // 256 byte bloom filter20 "status": "0x1",21 "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",22 "transactionHash":23 "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5",24 "transactionIndex": "0x66",25 "type": "0x2"26 }27}Alles anzeigenKopieren
eth_getUncleByBlockHashAndIndex
Gibt Informationen über einen Onkel eines Blocks anhand von Hash und Onkel-Indexposition zurück.
Parameter
DATA
, 32 Bytes - Der Hash eines Blocks.QUANTITY
- Die Indexposition des Onkels.
1params: [2 "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",3 "0x0", // 04]Kopieren
Rückgabewerte Siehe eth_getBlockByHash
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'Kopieren
Ergebnis siehe eth_getBlockByHash
Hinweis: Ein Onkel enthält keine einzelnen Transaktionen.
eth_getUncleByBlockNumberAndIndex
Gibt Informationen über einen Onkel eines Blocks nach Nummer und Indexposition des Onkels zurück.
Parameter
QUANTITY|TAG
- Eine Blocknummer oder die Zeichenfolge"earliest"
,"latest"
oder"pending"
, wie im Standardblockparameter.QUANTITY
- Die Indexposition des Onkels.
1params: [2 "0x29c", // 6683 "0x0", // 04]Kopieren
Rückgabewerte Siehe eth_getBlockByHash
Hinweis: Ein Onkel enthält keine einzelnen Transaktionen.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'Kopieren
Ergebnis siehe eth_getBlockByHash
eth_getCompilers
Gibt eine Liste der verfügbaren Compiler im Client zurück.
Parameter Keine
Rückgabewerte Array
– Array der verfügbaren Compiler.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCompilers","params":[],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": ["solidity", "lll", "serpent"]8}Kopieren
eth_compileSolidity
Gibt kompilierten Solidity Code zurück.
Parameter
String
- Der Quellcode.
1params: [2 "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }",3]Kopieren
Rückgabewerte DATA
- Der kompilierte Quellcode.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSolidity","params":["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": {8 "code": "0x605880600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b603d6004803590602001506047565b8060005260206000f35b60006007820290506053565b91905056",9 "info": {10 "source": "contract test {\n function multiply(uint a) constant returns(uint d) {\n return a * 7;\n }\n}\n",11 "language": "Solidity",12 "languageVersion": "0",13 "compilerVersion": "0.9.19",14 "abiDefinition": [15 {16 "constant": true,17 "inputs": [18 {19 "name": "a",20 "type": "uint256"21 }22 ],23 "name": "multiply",24 "outputs": [25 {26 "name": "d",27 "type": "uint256"28 }29 ],30 "type": "function"31 }32 ],33 "userDoc": {34 "methods": {}35 },36 "developerDoc": {37 "methods": {}38 }39 }40}Alles anzeigenKopieren
eth_compileLLL
Gibt kompilierten LLL Code zurück.
Parameter
String
- Der Quellcode.
1params: ["(returnlll (suicide (caller)))"]Kopieren
Rückgabewerte DATA
- Der kompilierte Quellcode.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileLLL","params":["(returnlll (suicide (caller)))"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code8}Kopieren
eth_compileSerpent
Gibt kompilierten Serpent Code zurück.
Parameter
String
- Der Quellcode.
1params: ["/* some serpent */"]Kopieren
Rückgabewerte DATA
- Der kompilierte Quellcode.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSerpent","params":["/* some serpent */"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code8}Kopieren
eth_newFilter
Erstellt, basierend auf den Filteroptionen, ein Filterobjekt. Wenn sich der Status ändert, erfolgt eine Benachrichtung (Protokolle). Um zu überprüfen, ob sich der Status geändert hat, rufen Sie eth_getFilterChanges auf.
Hinweis zum Festlegen von Themenfiltern: Themen sind auftragsabhängig. Eine Transaktion mit einem Protokoll mit den Themen [A, B] wird mit den folgenden Themenfiltern abgeglichen:
[]
„alles“[A]
„A an erster Stelle (und alles danach)“[null, B]
„Alles an erster Stelle UND B an zweiter Stelle (und alles danach)“[A, B]
„A an erster Stelle UND B an zweiter Stelle (und alles danach)“[[A, B], [A, B]]
„(A ODER B) an erster Stelle UND (A ODER B) an zweiter Stelle (und alles danach)“- Parameter
Objekt
- Die Filteroptionen:
fromBlock
:QUANTITY|TAG
- (optional, Standard:"latest"
) Ganzzahlige Blocknummer oder"latest"
für den letzten geminten Block oder"pending"
,"earliest"
für noch nicht geminte Transaktionen.toBlock
:QUANTITY|TAG
- (Optional, Standard:"latest"
) Ganzzahlige Blocknummer oder"latest"
für den letzten geminten Block oder"pending"
,"earliest"
für noch nicht geminte Transaktionen.Adresse
:DATA|Array
, 20 Bytes - (Optional) Vertragsadresse oder eine Liste von Adressen, von denen Protokolle stammen sollen.topics
:Array of DATA
, - (Optional) Array von 32 BytesDATA
-Themen. Themen sind auftragsabhängig. Jedes Thema kann auch ein Array von DATEN mit „oder“-Optionen sein.
1params: [2 {3 fromBlock: "0x1",4 toBlock: "0x2",5 address: "0x8888f1f195afa192cfee860698584c030f4c9db1",6 topics: [7 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",8 null,9 [10 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",11 "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc",12 ],13 ],14 },15]Alles anzeigenKopieren
Rückgabewerte QUANTITY
- Eine Filter-ID.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x1" // 18}Kopieren
eth_newBlockFilter
Erstellt einen Filter im Knoten, um Sie zu benachrichtigen, wenn ein neuer Block ankommt. Um zu überprüfen, ob sich der Status geändert hat, rufen Sie eth_getFilterChanges auf.
Parameter Keine
Rückgabewerte QUANTITY
- Eine Filter-ID.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x1" // 18}Kopieren
eth_newPendingTransactionFilter
Erstellt einen Filter im Knoten, um Sie zu benachrichtigen, wenn eine neue ausstehende Transaktionen eintrifft. Um zu überprüfen, ob sich der Status geändert hat, rufen Sie eth_getFilterChanges auf.
Parameter Keine
Rückgabewerte QUANTITY
- Eine Filter-ID.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x1" // 18}Kopieren
eth_uninstallFilter
Deinstalliert einen Filter mit gegebener ID. Sollte immer aufgerufen werden, wenn die Uhr nicht mehr benötigt wird. Zusätzlich Timeout für Filter, wenn sie für einen bestimmten Zeitraum nicht mit eth_getFilterChanges angefordert werden.
Parameter
QUANTITY
– Die Filter-ID.
1params: [2 "0xb", // 113]Kopieren
Rückgabewerte Boolean
- true
, wenn der Filter erfolgreich deinstalliert wurde, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": true8}Kopieren
eth_getFilterChanges
Abfragemethode für einen Filter, der ein Array von Protokollen zurückgibt, die seit der letzten Abfrage aufgetreten sind.
Parameter
QUANTITY
– Die Filter-ID.
1params: [2 "0x16", // 223]Kopieren
Rückgabewerte Array
- Array von Protokollobjekten oder ein leeres Array, wenn sich seit der letzten Abfrage nichts geändert hat.
- Für mit
eth_newBlockFilter
erstellte Filter sind die Rückgabewerte Block-Hashes (DATA
, 32 Bytes), z.["0x3454645634534..."]
. - Für Filter, die mit
eth_newPendingTransactionFilter
erstellt wurden, sind die Rückgabewerte Transaktions-Hashes (DATA
, 32 Bytes), z.["0x6345343454645..."]
. - Für mit
eth_newFilter
erstellte Filter sind Protokolle Objekte mit folgenden Parametern:removed
:TAG
-true
, als das Protokoll aufgrund einer Neustrukturierung der Blockchain entfernt wurde.false
, wenn es sich um ein gültiges Protokoll handelt.logIndex
:QUANTITY
– Ganzzahlwert der Protokollindexposition im Block.null
, wenn es sich um ein ausstehendes Protokoll handelt.transactionIndex
:QUANTITY
- Ganzzahlwert der Transaktionsindexposition, aus der das Protokoll erstellt wurde.null
, wenn es sich um ein ausstehendes Protokoll handelt.transactionHash
:DATA
, 32 Bytes - Hash der Transaktionen, aus denen dieses Protokoll erstellt wurde.null
, wenn es sich um ein ausstehendes Protokoll handelt.blockHash
:DATA
, 32 Bytes - Hash des Blocks, in dem sich dieses Protokoll befand.null
, wenn es aussteht.null
, wenn es sich um ein ausstehendes Protokoll handelt.blockNumber
:QUANTITY
- Die Blocknummer, in der sich dieses Protokoll befand.null
, wenn es aussteht.null
, wenn es sich um ein ausstehendes Protokoll handelt.Adresse
:DATA
, 20 Bytes - Adresse, von der dieses Protokoll stammt.data
:DATA
- Enthält ein oder mehrere nicht indizierte 32 Byte Argumente des Protokolls.topics
:Array of DATA
- Array von 0 bis 4 32 BytesDATA
von indizierten Protokollargumenten. (In Solidity: Das erste Thema ist der Hash der Signatur des Ereignisses (z. B.Deposit (address,bytes32,uint256)
), es sei denn, Sie haben das Ereignis mit demanonymous
-Spezifizierer deklariert.)
- Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": [{8 "logIndex": "0x1", // 19 "blockNumber":"0x1b4", // 43610 "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",11 "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",12 "transactionIndex": "0x0", // 013 "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",14 "data":"0x0000000000000000000000000000000000000000000000000000000000000000",15 "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]16 },{17 ...18 }]19}Alles anzeigenKopieren
eth_getFilterLogs
Gibt ein Array aller Protokolle zurück, die dem Filter mit der angegebenen ID entsprechen.
Parameter
QUANTITY
– Die Filter-ID.
1params: [2 "0x16", // 223]Kopieren
Rückgabewerte Siehe eth_getFilterChanges
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'Kopieren
Ergebnis siehe eth_getFilterChanges
eth_getLogs
Gibt ein Array aller Protokolle zurück, die mit einem bestimmten Filterobjekt übereinstimmen.
Parameter
Object
- Die Filteroptionen:
fromBlock
:QUANTITY|TAG
- (optional, Standard:"latest"
) Ganzzahlige Blocknummer oder"latest"
für den letzten geminten Block oder"pending"
,"earliest"
für noch nicht geminte Transaktionen.toBlock
:QUANTITY|TAG
- (Optional, Standard:"latest"
) Ganzzahlige Blocknummer oder"latest"
für den letzten geminten Block oder"pending"
,"earliest"
für noch nicht geminte Transaktionen.Adresse
:DATA|Array
, 20 Bytes - (Optional) Vertragsadresse oder eine Liste von Adressen, von denen Protokolle stammen sollen.topics
:Array of DATA
, - (Optional) Array von 32 BytesDATA
-Themen. Themen sind auftragsabhängig. Jedes Thema kann auch ein Array von DATEN mit „oder“-Optionen sein.blockhash
:DATA
, 32 Bytes - (optional, future) Mit dem Hinzufügen von EIP-234 wirdblockHash
eine neue Filteroption sein, die die zurückgegebenen Protokolle auf den einzelnen Block mit dem 32-Byte-HashblockHash
beschränkt. Die Verwendung vonblockHash
entsprichtfromBlock
=toBlock
= die Blocknummer mit HashblockHash
. WennblockHash
in den Filterkriterien vorhanden ist, sind wederfromBlock
nochtoBlock
zulässig.
1params: [2 {3 topics: [4 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",5 ],6 },7]Kopieren
Rückgabewerte Siehe eth_getFilterChanges
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}'Kopieren
Ergebnis siehe eth_getFilterChanges
eth_getWork
Gibt den Hash des aktuellen Blocks, den SeedHash und die zu erfüllende Randbedingung („Ziel“) zurück.
Parameter Keine
Rückgabewerte Array
- Array mit den folgenden Eigenschaften:
DATA
, 32 Bytes - Pow-Hash des aktuellen Block-HeadersDATA
, 32 Bytes – Der Seed-Hash, der für den DAG verwendet wird.DATA
, 32 Bytes - die Randbedingung („Ziel“), 2^256 / Schwierigkeitsgrad.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": [8 "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",9 "0x5EED00000000000000000000000000005EED0000000000000000000000000000",10 "0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000"11 ]12}Alles anzeigenKopieren
eth_submitWork
Wird zum Einreichen einer Proof-of-Work-Lösung verwendet.
Parameter
DATA
, 8 Bytes - Die gefundene Nonce (64 Bit)DATA
, 32 Bytes - Der Pow-Hash des Headers (256 Bit)DATA
, 32 Bytes - Der Mix Digest (256 Bit)
1params: [2 "0x0000000000000001",3 "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",4 "0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000",5]Kopieren
Rückgabewerte Boolean
- gibt true
zurück, wenn die bereitgestellte Lösung gültig ist, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73}'3// Result4{5 "id":73,6 "jsonrpc":"2.0",7 "result": true8}Kopieren
eth_submitHashrate
Wird zum Senden der Mining-Hashrate verwendet.
Parameter
Hashrate
, eine hexadezimale String-Darstellung (32 Byte) der HashrateID
, String – Eine zufällige hexadezimale (32 Byte) ID, die den Client identifiziert
1params: [2 "0x0000000000000000000000000000000000000000000000000000000000500000",3 "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c",4]Kopieren
Rückgabewerte Boolean
- gibt true
zurück, wenn die Übermittlung erfolgreich war, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":73}'3// Result4{5 "id":73,6 "jsonrpc":"2.0",7 "result": true8}Kopieren
db_putString (veraltet)
Speichert einen String in der lokalen Datenbank.
Hinweis diese Funktion ist veraltet.
Parameter
String
- Name der Datenbank.String
- Name des Schlüssels.String
- Zu speichernder String.
1params: ["testDB", "myKey", "myString"]Kopieren
Rückgabewerte Boolean
- gibt true
zurück, wenn der Wert gespeichert wurde, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"db_putString","params":["testDB","myKey","myString"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": true8}Kopieren
db_getString (veraltet)
Gibt String aus der lokalen Datenbank zurück. Hinweis diese Funktion ist veraltet.
Parameter
String
- Name der Datenbank.String
- Name des Schlüssels.
1params: ["testDB", "myKey"]Kopieren
Rückgabewerte String
- Der zuvor gespeicherte String.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"db_getString","params":["testDB","myKey"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": "myString"8}Kopieren
db_putHex (veraltet)
Speichert Binärdaten in der lokalen Datenbank. Hinweis diese Funktion ist veraltet.
Parameter
String
- Name der Datenbank.String
- Name des Schlüssels.DATA
- Die zu speichernden Daten.
1params: ["testDB", "myKey", "0x68656c6c6f20776f726c64"]Kopieren
Rückgabewerte Boolean
- gibt true
zurück, wenn der Wert gespeichert wurde, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"db_putHex","params":["testDB","myKey","0x68656c6c6f20776f726c64"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": true8}Kopieren
db_getHex (veraltet)
Gibt Binärdaten aus der lokalen Datenbank zurück. Hinweis diese Funktion ist veraltet.
Parameter
String
- Name der Datenbank.String
- Name des Schlüssels.
1params: ["testDB", "myKey"]Kopieren
Rückgabewerte DATA
- Die zuvor gespeicherten Daten.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"db_getHex","params":["testDB","myKey"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": "0x68656c6c6f20776f726c64"8}Kopieren
shh_version (veraltet)
Gibt die aktuelle Whisper-Protokollversion zurück.
Hinweis diese Funktion ist veraltet.
Parameter Keine
Rückgabewerte String
- Die aktuelle Version des Whisper-Protokolls
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_version","params":[],"id":67}'3// Result4{5 "id":67,6 "jsonrpc": "2.0",7 "result": "2"8}Kopieren
shh_post (veraltet)
Sendet eine Flüsternachricht.
Hinweis diese Funktion ist veraltet.
Parameter
Object
- Das Flüsterpost-Objekt:
from
:DATA
, 60 Bytes - (Optional) Die Identität des Absenders.to
:DATA
, 60 Bytes - (Optional) Die Identität des Empfängers. Wenn vorhanden, wird Flüstern die Nachricht verschlüsseln, so dass nur der Empfänger sie entschlüsseln kann.topics
:Array of DATA
- Array vonDATA
-Themen, damit der Empfänger Nachrichten identifizieren kann.Payload
:DATA
- Die Nutzlast der Nachricht.Priorität
:QUANTITY
- Der Ganzzahlwert der Priorität in einem Bereich von ... (?).ttl
:QUANTITY
- Ganzzahlwert der verbleibenden Zeit in Sekunden.
1params: [2 {3 from: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",4 to: "0x3e245533f97284d442460f2998cd41858798ddf04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a0d4d661997d3940272b717b1",5 topics: [6 "0x776869737065722d636861742d636c69656e74",7 "0x4d5a695276454c39425154466b61693532",8 ],9 payload: "0x7b2274797065223a226d6",10 priority: "0x64",11 ttl: "0x64",12 },13]Alles anzeigenKopieren
Rückgabewerte Boolean
- gibt true
zurück, wenn die Nachricht gesendet wurde, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc931d93e97ab07fe42d923478ba2465f2..","topics": ["0x68656c6c6f20776f726c64"],"payload":"0x68656c6c6f20776f726c64","ttl":0x64,"priority":0x64}],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": true8}Kopieren
shh_newIdentity (veraltet)
Erstellt eine neue Flüsteridentität im Client.
Hinweis diese Funktion ist veraltet.
Parameter Keine
Rückgabewerte DATA
, 60 Bytes - Die Adresse der neuen Identität.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0xc931d93e97ab07fe42d923478ba2465f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca9007d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf"8}Kopieren
shh_hasIdentity (veraltet)
Überprüft, ob der Client die privaten Schlüssel für eine bestimmte Identität besitzt.
Hinweis diese Funktion ist veraltet.
Parameter
DATA
, 60 Bytes - Die zu überprüfende Identitätsadresse.
1params: [2 "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",3]Kopieren
Rückgabewerte Boolean
- gibt true
zurück, wenn der Client den privaten Schlüssel für diese Identität besitzt, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": true8}Kopieren
shh_newGroup (veraltet)
Hinweis diese Funktion ist veraltet.
Parameter Keine
Rückgabewerte DATA
, 60 Bytes - Die Adresse der neuen Gruppe. (?)
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0xc65f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca90931d93e97ab07fe42d923478ba2407d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf"8}Kopieren
shh_addToGroup (veraltet)
Hinweis diese Funktion ist veraltet.
Parameter
DATA
, 60 Bytes – Die Identitätsadresse, die einer Gruppe hinzugefügt werden soll (?).
1params: [2 "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",3]Kopieren
Rückgabewerte Boolean
- Gibt true
zurück, wenn die Identität erfolgreich zur Gruppe hinzugefügt wurde, andernfalls false
(?).
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": true8}Kopieren
shh_newFilter (veraltet)
Erstellt einen Filter, um Benachrichtigungen bei Empfang einer Flüsternachricht zu erhalten, die den Filteroptionen entspricht. Hinweis diese Funktion ist veraltet.
Parameter
Object
- Die Filteroptionen:
to
:DATA
, 60 Bytes - (Optional) Die Identität des Empfängers. Wenn vorhanden, wird es versuchen, eingehende Nachrichten zu entschlüsseln, wenn der Client den privaten Schlüssel für diese Identität besitzt.topics
:Array of DATA
- Array vonDATA
-Themen, die den Themen der eingehenden Nachricht entsprechen sollen. Sie können folgende Kombinationen verwenden:[A, B] = A && B
[A, [B, C]] = A && (B || C)
[null, A, B] = ALLES && A && B
null
funktioniert als Joker
1params: [2 {3 topics: ["0x12341234bf4b564f"],4 to: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",5 },6]Kopieren
Rückgabewerte QUANTITY
- Der neu erstellte Filter.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newFilter","params":[{"topics": ['0x12341234bf4b564f'],"to": "0x2341234bf4b2341234bf4b564f..."}],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": "0x7" // 78}Kopieren
shh_uninstallFilter (veraltet)
Deinstalliert einen Filter mit gegebener ID. Sollte immer aufgerufen werden, wenn die Uhr nicht mehr benötigt wird. Zusätzlich Timeout für Filter, wenn sie für einen bestimmten Zeitraum nicht mit shh_getFilterChanges angefordert werden. Hinweis diese Funktion ist veraltet.
Parameter
QUANTITY
– Die Filter-ID.
1params: [2 "0x7", // 73]Kopieren
Rückgabewerte Boolean
- true
, wenn der Filter erfolgreich deinstalliert wurde, andernfalls false
.
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_uninstallFilter","params":["0x7"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": true8}Kopieren
shh_getFilterChanges (veraltet)
Abfrageverfahren für Flüsterfilter. Gibt neue Nachrichten seit dem letzten Aufruf dieser Methode zurück. Hinweis Der Aufruf der Methode shh_getMessages setzt den Puffer für diese Methode zurück, sodass Sie keine doppelten Nachrichten erhalten. Hinweis diese Funktion ist veraltet.
Parameter
QUANTITY
– Die Filter-ID.
1params: [2 "0x7", // 73]Kopieren
Rückgabewerte Array
- Array von Nachrichten, die seit der letzten Abfrage empfangen wurden:
Hash
:DATA
, 32 Bytes (?) - Der Hash der Nachricht.from
:DATA
, 60 Bytes - Der Absender der Nachricht, falls ein Absender angegeben wurde.to
:DATA
, 60 Bytes - Der Empfänger der Nachricht, falls ein Empfänger angegeben wurde.expiry
:QUANTITY
- Ganzzahlwert der Zeit in Sekunden, wann diese Nachricht ablaufen soll (?).ttl
:QUANTITY
- Ganzzahlwert der Zeit, die die Nachricht im System schweben soll, in Sekunden (?).sent
:QUANTITY
- Ganzzahlwert des Unix-Zeitstempels, als die Nachricht gesendet wurde.topics
:Array of DATA
- Array vonDATA
-Themen, die die Nachricht enthielt.Payload
:DATA
- Die Nutzlast der Nachricht.workProved
:QUANTITY
- Ganzzahlwert der Arbeit, die diese Nachricht erforderte, bevor sie gesendet wurde (?).
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges","params":["0x7"],"id":73}'3// Result4{5 "id":1,6 "jsonrpc":"2.0",7 "result": [{8 "hash": "0x33eb2da77bf3527e28f8bf493650b1879b08c4f2a362beae4ba2f71bafcd91f9",9 "from": "0x3ec052fc33..",10 "to": "0x87gdf76g8d7fgdfg...",11 "expiry": "0x54caa50a", // 142256666612 "sent": "0x54ca9ea2", // 142256502613 "ttl": "0x64", // 10014 "topics": ["0x6578616d"],15 "payload": "0x7b2274797065223a226d657373616765222c2263686...",16 "workProved": "0x0"17 }]18}Alles anzeigenKopieren
shh_getMessages (veraltet)
Erhalten Sie alle Nachrichten, die einem Filter entsprechen. Im Gegensatz zu shh_getFilterChanges
gibt dies alle Nachrichten zurück.
Hinweis diese Funktion ist veraltet.
Parameter
QUANTITY
– Die Filter-ID.
1params: [2 "0x7", // 73]Kopieren
Rückgabewerte Siehe shh_getFilterChanges
Beispiel
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getMessages","params":["0x7"3],"id":73}'Kopieren
Ergebnis siehe shh_getFilterChanges
Anwendungsbeispiel
Bereitstellen eines Vertrags mit JSON_RPC
Dieser Abschnitt enthält eine Demonstration, wie ein Vertrag nur mithilfe der RPC-Schnittstelle bereitgestellt wird. Es gibt alternative Wege zur Bereitstellung von Verträgen, bei denen diese Komplexität abstrahiert wird – zum Beispiel die Verwendung von Bibliotheken, die auf der RPC-Schnittstelle wie web3.js(opens in a new tab) und web3.py(opens in a new tab) aufbauen. Diese Abstraktionen sind im Allgemeinen leichter zu verstehen und weniger fehleranfällig, es ist dennoch hilfreich zu verstehen, was im Hintergrund passiert.
Das Folgende ist ein unkomplizierter Smart Contract namens Multiply7
, der über die JSON-RPC-Schnittstelle auf einem Ethereum-Knoten bereitgestellt wird. Dieses Tutorial geht davon aus, dass der Reader bereits einen Geth-Knoten ausführt. Weitere Informationen zu Nodes und Clients finden Sie hier. Bitte sehen Sie in der jeweiligen Client-Dokumentation nach, wie Sie den HTTP-JSON-RPC für Nicht-Geth-Clients starten. Die meisten Clients werden standardmäßig auf localhost:8545
bereitgestellt.
1contract Multiply7 {2 event Print(uint);3 function multiply(uint input) returns (uint) {4 Print(input * 7);5 return input * 7;6 }7}
Stellen Sie zunächst sicher, dass die HTTP-RPC-Schnittstelle aktiviert ist. Das bedeutet, dass wir Geth beim Start mit dem --http
-Flag versehen. In diesem Beispiel verwenden wir den Geth-Knoten in einer privaten Entwicklungs-Blockchain. Mit diesem Ansatz benötigen wir keine Ether im echten Netzwerk.
geth --http --dev console 2>>geth.log
Dadurch wird die HTTP-RPC-Schnittstelle auf http://localhost:8545
gestartet.
Wir können überprüfen, ob die Schnittstelle läuft, indem wir die Coinbase-Adresse und den Kontostand mit curl(opens in a new tab) abrufen. Bitte beachten Sie, dass sich die Daten in diesen Beispielen auf Ihrem lokalen Knoten unterscheiden. Wenn Sie diese Befehle ausprobieren möchten, ersetzen Sie die Anfrageparameter in der zweiten Curl-Anfrage durch das Ergebnis, das von der ersten zurückgegeben wird.
curl --data '{"jsonrpc":"2.0","method":"eth_coinbase", "id":1}' -H "Content-Type: application/json" localhost:8545{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]}curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"}
Da Zahlen hexadezimal kodiert sind, wird der Saldo in Wei als hexadezimaler String zurückgegeben. Wenn wir das Guthaben in Ether als Zahl haben möchten, können wir web3 von der Geth-Konsole verwenden.
1web3.fromWei("0x1639e49bba16280000", "ether")2// "410"
Jetzt, da es etwas Ether in unserer privaten Entwicklungs-Blockchain gibt, können wir den Vertrag bereitstellen. Der erste Schritt besteht darin, den Multiply7-Vertrag in Bytecode zu kompilieren, der an die EVM gesendet werden kann. Um Solc, den Solidity-Compiler, zu installieren, folgen Sie der Solidity-Dokumentation(opens in a new tab). (Möglicherweise möchten Sie eine ältere solc
-Version verwenden, um der Version des verwendeten Compilers für unser Beispiel zu entsprechen(opens in a new tab).)
Der nächste Schritt besteht darin, den Multiply7-Vertrag in Bytecode zu kompilieren, der an die EVM gesendet werden kann.
echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin======= <stdin>:Multiply7 =======Binary:6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029
Jetzt, da wir den kompilierten Code haben, müssen wir bestimmen, wie viel Gas es kostet, ihn einzusetzen. Die RPC-Schnittstelle hat eine eth_estimateGas
-Methode, die uns eine Schätzung bereitstellt.
curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545{"jsonrpc":"2.0","id":5,"result":"0x1c31e"}
Und schließlich stellen Sie den Vertrag bereit.
curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"}
Die Transaktion wird von dem Knoten akzeptiert und ein Transaktions-Hash wird zurückgegeben. Dieser Hash kann verwendet werden, um die Transaktion zu verfolgen. Der nächste Schritt besteht darin, die Adresse zu ermitteln, an der unser Vertrag bereitgestellt wird. Jede ausgeführte Transaktion erstellt einen Beleg. Dieser Beleg enthält verschiedene Informationen über die Transaktion, wie z. B. in welchem Block die Transaktion enthalten war und wie viel Gas von der EVM verbraucht wurde. Wenn eine Transaktion einen Vertrag erstellt, enthält sie auch die Vertragsadresse. Wir können den Beleg mit der RPC-Methode eth_getTransactionReceipt
abrufen.
curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}}
Unser Vertrag wurde am 0x4d03d617d700cf81935d7f797f4e2ae719648262
erstellt. Ein Nullergebnis anstelle eines Belegs bedeutet, dass die Transaktion stattgefunden hat und noch nicht in einen Block aufgenommen wurde. Warten Sie einen Moment und überprüfen Sie, ob Ihr Miner ausgeführt wird, und versuchen Sie es erneut.
Interaktion mit Smart Contracts
In diesem Beispiel senden wir eine Transaktion mit eth_sendTransaction
an die Methode multiply
des Vertrags.
eth_sendTransaction
erfordert mehrere Argumente, insbesondere from
, to
und data
. From
ist die öffentliche Adresse unseres Kontos und to
ist die Vertragsadresse. Das Argument data
enthält eine Nutzlast, die definiert, welche Methode aufgerufen werden muss und mit welchen Argumenten. Hier kommt die ABI (Application Binary Interface)(opens in a new tab) ins Spiel. Die ABI ist eine JSON-Datei, die festlegt, wie Daten für die EVM definiert und kodiert werden.
Die Bytes der Nutzlast definieren, welche Methode im Vertrag aufgerufen wird. Dies sind die ersten 4 Bytes aus dem Keccak-Hash über den Funktionsnamen und seine Argumenttypen, kodiert in hex. Die Multiplizieren-Funktion akzeptiert ein uint, welches ein Alias für uint256 ist. Damit bleibt uns:
1web3.sha3("multiply(uint256)").substring(0, 10)2// "0xc6888fa1"
Der nächste Schritt besteht darin, die Argumente zu kodieren. Es gibt nur einen uint256, sagen wir den Wert 6. Die ABI hat einen Abschnitt, der angibt, wie uint256-Typen kodiert werden.
int<M>: enc(X)
ist die Big-Endian-Zweierkomplementkodierung von X, aufgefüllt auf der Seite höherer Ordnung (links) mit 0xff für negatives X und mit Null > Bytes für positives X, sodass die Länge ein Vielfaches von 32 Bytes ist.
Dies wird zu 0000000000000000000000000000000000000000000000000000000000006
kodiert.
Durch die Kombination des Funktionsselektors und des kodierten Arguments werden unsere Daten zu 0xc6888fa10000000000000000000000000000000000000000000000000000000000006
.
Dies kann nun an den Knoten gesendet werden:
curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"}
Da eine Transaktion gesendet wurde, wurde ein Transaktions-Hash zurückgegeben. Das Abrufen des Belegs ergibt:
1{2 blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",3 blockNumber: 268,4 contractAddress: null,5 cumulativeGasUsed: 22631,6 gasUsed: 22631,7 logs: [{8 address: "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d",9 blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",10 blockNumber: 268,11 data: "0x000000000000000000000000000000000000000000000000000000000000002a",12 logIndex: 0,13 topics: ["0x24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"],14 transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",15 transactionIndex: 016 }],17 transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",18 transactionIndex: 019}Alles anzeigen
Der Beleg enthält ein Protokoll. Dieses Protokoll wurde von der EVM bei der Transaktionsausführung generiert und in den Beleg aufgenommen. Die Funktion multiply
zeigt, dass das Ereignis Print
mit der Eingabe mal 7 ausgelöst wurde. Da das Argument für das Ereignis Print
ein uint256 war, können wir es gemäß den ABI-Regeln dekodieren, was uns die erwartete Dezimalzahl 42 zurücklässt. Abgesehen von den Daten ist es erwähnenswert, dass Themen verwendet werden können, um festzustellen, welches Ereignis das Protokoll erstellt hat:
1web3.sha3("Print(uint256)")2// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"
Dies war nur eine kurze Einführung in einige der häufigsten Aufgaben, die die direkte Verwendung von JSON-RPC demonstrieren.
Verwandte Themen
- JSON-RPC-Spezifikation(opens in a new tab)
- Knotenpunkte und Clients
- JavaScript-APIs
- Backend-APIs
- Ausführende Clients