Ugrás a fő tartalomra
Change page

JSON-RPC API

Utolsó módosítás: @Satglow(opens in a new tab), 2024. október 3.

Ahhoz, hogy egy szoftveralkalmazás interakcióba lépjen az Ethereum blokklánccal –a blokkláncadatokat olvasva vagy tranzakciókat küldve a hálózatra –, rá kell csatlakoznia egy Ethereum-csomópontra.

Ebből a célból minden Ethereum-kliens implementálja a JSON-RPC specifikációt(opens in a new tab), így az alkalmazások egységesen egyféle metóduscsomagra támaszkodhatnak, függetlenül az adott csomópont vagy kliens fajtájától.

A JSON-RPC(opens in a new tab) egy státuszmentes, könnyű remote procedure call (RPC) protokoll. Számos adatstruktúrát, valamint ezek feldolgozásának szabályait is meghatározza. Ez a megoldás nem függ az átadási módoktól, mivel a koncepciókat használni lehet ugyanabban a folyamatban, socketeknél, HTTP-vel és számos más üzenetküldő környezetben. Az adatformátum JSON (RFC 4627).

Kliensimplementációk

Az Ethereum-kliensek mindegyike használhat különböző programozási nyelveket, amikor a JSON-RPC specifikációt implementálja. Tekintse meg az egyéni kliensdokumentációt további részletekért a specifikus programozási nyelvekről. Érdemes megnézni a kliensdokumentációt a legutóbbi API-támogatási információ miatt is.

Kényelmi könyvtárak

Választhatja, hogy az Ethereum-kliensekkel közvetlenül kapcsolódik a JSON-RPC API révén, de az alkalmazásfejlesztők rendelkezésére állnak egyszerűbb opciók is. Számos JavaScript és backend API könyvtár létezik, hogy a JSON-RPC API tetejére egy wrappert (burkoló réteget) adjon. Ezekkel a könyvtárakkal a fejlesztők intuitív, egysoros metódusokat írhatnak, hogy JSON-RPC-kérést kezdeményezzenek (a háttérben), amely interakcióba lép az Ethereummal.

Konszenzusos kliens API-k

Ez az írás főleg a JSON-RPC API-val foglalkozik, melyet az Ethereum végrehajtási kliensei használnak. Ugyanakkor a konszenzusos klienseknek is van egy RPC API-ja, amellyel a felhasználók lekérhetnek információkat a csomópontról, Beacon-blokkokról, Beacon-státuszokról és más konszenzussal kapcsolatos adatokról közvetlenül a csomópontról. Ez az API a Beacon API honlapon(opens in a new tab) van dokumentálva.

Egy belső API-t használnak a kliensek közötti kommunikációra a csomóponton belül, így a konszenzusos kliens és a végrehajtási kliens képes adatot cserélni. Ezt nevezik Motor API-nak, amelynek specifikációja a GitHubon(opens in a new tab) érhető el.

Végrehajtási kliens specifikációi

Tekintse meg a teljes JSON-RPC API specifikációt a GitHubon(opens in a new tab). Ez az API a Végrehajtási API oldalon(opens in a new tab) van dokumentálva, és tartalmaz egy ellenőrt, hogy a rendelkezésre álló metódusokat ki lehessen próbálni.

Egyezmények

Hexadecimális értékű kódolás

Két fontos adattípus megy át a JSON-ön: formázatlan bájttömbök és mennyiségek. Mindkettő hexadecimális kódolásban van elküldve, de más a formázási követelmény.

Mennyiségek

A mennyiségek (egész számok, számok) kódolásánál: hexadecimálisban, „0x” előtaggal, a legtömörebb kifejeződésben kell kódolni (kivéve a nullát, mert az „0x0” lesz).

Néhány példa:

  • 0x41 (65 decimálisban)
  • 0x400 (1024 decimálisban)
  • HELYTELEN: 0x (legalább egy számjegy még szükséges, a nulla írása „0x0”)
  • HELYTELEN: 0x0400 (nem kezdődhet nullával a szám)
  • HELYTELEN: ff (a 0x előtagot ki kell tenni)

Formázatlan adat

Amikor formázatlan adatot (bájtsorok, számlacímek, hashek, bájtkódtömbök) kell kódolni: hexadecimálisban, „0x” előtaggal, két hex számjegy bájtonként.

Néhány példa:

  • 0x41 (1-es méret, „A”)
  • 0x004200 (3-as méret, „0B0”)
  • 0x (size 0, "")
  • HELYTELEN: 0xf0f0f (páros számú kell legyen)
  • HELYTELEN: 004200 (a 0x előtagot ki kell tenni)

Az alapértelmezett blokkparaméter

A következő metódusok egy extra alapértelmezett blokkparaméterrel rendelkeznek:

  • eth_getBalance
  • eth_getCode
  • eth_getTransactionCount
  • eth_getStorageAt
  • eth_call

Amikor az Ethereum státuszát érintő kérések érkeznek, akkor a legutolsó alapértelmezett blokkparaméter határozza meg a blokk méretét.

A defaultBlock paraméter a következők lehetnek:

  • HEX String – egy egész szám mint blokkszám
  • String "earliest" – a legkorábbi/genezis blokk
  • String "latest" – a legutóbb javasolt blokk
  • String "safe" – a blokk legutóbbi biztonságos feje
  • String "finalized" – a legutóbbi véglegesedett blokk
  • String "pending" – a függőben lévő státusz/tranzakciók esetében

Példák

Ebben a leírásban példákat mutatunk be, hogyan lehet használni az egyéni JSON_RPC API végpontokat a parancssoreszközzel, ami a curl(opens in a new tab). Ezek az egyéni végpontpéldák a Curl példák szekciókban találhatók alább. Ezek után bemutatunk egy példát az elejétől a végéig egy okosszerződés átfordítására és telepítésére egy Geth csomópont, a JSON_RPC API és a curl használatával.

Példák a curlre

Alább láthatók azok a példák, amikor a JSON_RPC API-t használjuk egy curl(opens in a new tab) kérést létrehozva egy Ethereum-csomópontnak. Minden példa tartalmazza az adott végpont specifikációit, paramétereit, visszatérési típusát és egy működő példát arról, hogyan kell használni.

A curl-kérések hibát adhatnak vissza a tartalom típusa miatt. Ennek az az oka, hogy a --data opció beállítja a tartalomtípust application/x-www-form-urlencoded értékre. Ha az Ön által használt csomópontnak ez nem tetszik, akkor manuálisa állítsa át a fejlécet, hogy a -H "Content-Type: application/json" a hívás elején legyen. A példák nem tartalmazzák az URL/IP és port kombinációját, amit a curl utolsó változójaként kell megadni (például 127.0.0.1:8545). Egy komplett curl-kérés, amely ezeket a plusz adatokat is tartalmazza, így néz ki:

1curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545

Pletyka, státusz, előzményadatok

Néhány központi JSON-RPC metódushoz szükség van az Ethereum hálózati adataira, amelyek általában háromfélék lehetnek: Pletyka, státusz és előzményadatok. Az ebben a részben található hivatkozások segítségével az adott metódusra tud lépni, de a tartalomjegyzéket is használhatja a metódusok teljes listájának megtekintéséhez.

Pletyka metódusok

Ezek a metódusok a lánc fejét követik nyomon. Így kerülnek be tranzakciók a hálózatra, találják meg az útjukat a blokkokba, és az, a kliensek így szereznek tudomást az új blokkokról.

  • eth_blockNumber
  • eth_sendRawTransaction

Státusz metódusok

Olyan metódusok, melyek az összes tárolt adat jelenlegi státuszát riportálják. A „státusz” olyan, akár egy nagy, megosztott RAM rész, ami számlaegyenlegeket, szerződésadatokat és gázbecsléseket tartalmaz.

  • eth_getBalance
  • eth_getStorageAt
  • eth_getTransactionCount
  • eth_getCode
  • eth_call
  • eth_estimateGas

Előzményadatok metódusok

Minden egyes blokkból képes előzményadatokat lekérni egészen a genezisig. Olyan mint egy hatalmas, egyre bővülő fájl, amely tartalmazza az összes blokkfejlécet, blokkadatot, a szülőblokk testvérblokkjait (ommer/uncle) és a tranzakció-visszaigazolásokat.

  • 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 próbafelület

Az API-módszerek felfedezéséhez és kipróbálásához használhatja a próbaeszközt(opens in a new tab). Azt is megmutatja, hogy a különböző csomópontszolgáltatók milyen metódusokat és hálózatokat támogatnak.

JSON-RPC API metódusok

web3_clientVersion

Visszaadja a jelenlegi kliensverziót.

Paraméterek

Egyik sem

Visszaad

String – A jelenlegi kliensverzió

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc":"2.0",
7 "result": "Geth/v1.12.1-stable/linux-amd64/go1.19.1"
8}
Másolás

web3_sha3

Visszaadja az adott adat keccak-256 szerinti értékét (nem a szabványosított SHA3-256 szerintit).

Paraméterek

  1. DATA – Az adatok átkonvertálva SHA3 hash formátumba
1params: ["0x68656c6c6f20776f726c64"]
Másolás

Visszaad

DATA – Az adott sztring SHA3-eredménye.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}'
3// Result
4{
5 "id":64,
6 "jsonrpc": "2.0",
7 "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
8}
Másolás

net_version

Visszaadja a jelenlegi hálózati azonosítót.

Paraméterek

Egyik sem

Visszaad

String – Jelenlegi hálózati azonosító.

A jelenlegi hálózati azonosítók teljes listája a chainlist.org(opens in a new tab) oldalon érhető el. Néhány jellemző példa:

  • 1: Ethereum főhálózata
  • 5: Goerli teszthálózat
  • 11155111: Sepolia teszthálózat

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc": "2.0",
7 "result": "3"
8}
Másolás

net_listening

A true értéket adja vissza, ha a kliens aktívan hallgatja a hálózati kapcsolatokat.

Paraméterek

Egyik sem

Visszaad

Booleantrue, amikor hallgatja, máskülönben false.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc":"2.0",
7 "result":true
8}
Másolás

net_peerCount

Visszaadja a társak számát, amelyek jelenleg a klienshez kapcsolódnak.

Paraméterek

Egyik sem

Visszaad

QUANTITY – a kapcsolódó társak száma egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'
3// Result
4{
5 "id":74,
6 "jsonrpc": "2.0",
7 "result": "0x2" // 2
8}
Másolás

eth_protocolVersion

A jelenlegi Ethereum-protokollverziót adja vissza. Vegye figyelembe, hogy ez a metódus a Geth-ben nem érhető el(opens in a new tab).

Paraméterek

Egyik sem

Visszaad

String – Az Ethereum jelenlegi protokollverziója

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc": "2.0",
7 "result": "54"
8}
Másolás

eth_syncing

Egy objektumot ad vissza a szinkronizálási státuszról szóló adattal vagy false.

Paraméterek

Egyik sem

Visszaad

A pontos visszakapott adat a kliensimplementációk szerint változik. Minden kliens false értéket küld, amikor a csomópont nem szinkronizál, és mindegyik elküldi a következő mezőket.

Object|Boolean, egy objektum a szinkronizálási státuszról szóló adattal vagy false, amikor nem szinkronizál:

  • startingBlock: QUANTITY – Az a blokk, amelynél az importálása kezdődött (csak akkor lesz visszaállítva, miután a szinkronizálás elérte a fejet)
  • currentBlock: QUANTITY – A jelenlegi blokk, azonos az eth_blockNumber mezővel
  • highestBlock: QUANTITY – A becsült legnagyobb számú blokk

Ugyanakkor az egyéni kliensek további adatokat is adhatnak. A Geth például ezt küldi vissza:

1{
2 "jsonrpc": "2.0",
3 "id": 1,
4 "result": {
5 "currentBlock": "0x3cf522",
6 "healedBytecodeBytes": "0x0",
7 "healedBytecodes": "0x0",
8 "healedTrienodes": "0x0",
9 "healingBytecode": "0x0",
10 "healingTrienodes": "0x0",
11 "highestBlock": "0x3e0e41",
12 "startingBlock": "0x3cbed5",
13 "syncedAccountBytes": "0x0",
14 "syncedAccounts": "0x0",
15 "syncedBytecodeBytes": "0x0",
16 "syncedBytecodes": "0x0",
17 "syncedStorage": "0x0",
18 "syncedStorageBytes": "0x0"
19 }
20}
Összes megjelenítése
Másolás

Amíg a Besu ezt küldi vissza:

1{
2 "jsonrpc": "2.0",
3 "id": 51,
4 "result": {
5 "startingBlock": "0x0",
6 "currentBlock": "0x1518",
7 "highestBlock": "0x9567a3",
8 "pulledStates": "0x203ca",
9 "knownStates": "0x200636"
10 }
11}
Összes megjelenítése
Másolás

Tekintse meg az adott kliens dokumentációját a további adatokért.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": {
8 startingBlock: '0x384',
9 currentBlock: '0x386',
10 highestBlock: '0x454'
11 }
12}
13// Or when not syncing
14{
15 "id":1,
16 "jsonrpc": "2.0",
17 "result": false
18}
Összes megjelenítése
Másolás

eth_coinbase

A kliens coinbase-címét adja vissza.

Paraméterek

Egyik sem

Visszaad

DATA, 20 bájt – a jelenlegi coinbase címe.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}'
3// Result
4{
5 "id":64,
6 "jsonrpc": "2.0",
7 "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
8}
Másolás

eth_chainId

Visszaadja a láncazonosítót, amellyel az újrajátszástól védett tranzakciókat írják alá.

Paraméterek

Egyik sem

Visszaad

chainId, hexadecimális érték mint sztring, amely a jelenlegi láncazonosítót mutatja egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc": "2.0",
7 "result": "0x1"
8}
Másolás

eth_mining

A visszaadott érték true, ha a kliens aktívan bányászik új blokkokat. Ez csak proof-of-work hálózatok esetén küld vissza true értéket, és talán a egyesítés (Merge) óta nincs is benne minden kliensben.

Paraméterek

Egyik sem

Visszaad

Booleantrue értéket ad vissza, ha a kliens bányászik, különben false.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}'
3//
4{
5 "id":71,
6 "jsonrpc": "2.0",
7 "result": true
8}
Másolás

eth_hashrate

Visszaadja a hashek számát másodpercenként, amellyel a csomópont a bányászatot végzi. Ez csak proof-of-work hálózatok esetén küld vissza true értéket, és talán a egyesítés (Merge) óta nincs is benne minden kliensben.

Paraméterek

Egyik sem

Visszaad

QUANTITY – hashek száma másodpercenként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}'
3// Result
4{
5 "id":71,
6 "jsonrpc": "2.0",
7 "result": "0x38a"
8}
Másolás

eth_gasPrice

Visszaadja a jelenlegi becsült gázárat wei-ben. Például a Besu kliens megvizsgálja az utolsó 100 blokkot, és a gáz egységárának mediánját küldi vissza alapból.

Paraméterek

Egyik sem

Visszaad

QUANTITY – a jelenlegi gázár wei-ben egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
3// Result
4{
5 "id":73,
6 "jsonrpc": "2.0",
7 "result": "0x1dfd14000" // 8049999872 Wei
8}
Másolás

eth_accounts

A kliens által birtokolt címek listáját adja vissza.

Paraméterek

Egyik sem

Visszaad

Array of DATA, 20 bájt – a kliens által birtokolt címek.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
8}
Másolás

eth_blockNumber

A legutóbbi blokk számát adja vissza.

Paraméterek

Egyik sem

Visszaad

QUANTITY – a legutóbbi blokk száma egész számként, amelynél a kliens tart.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'
3// Result
4{
5 "id":83,
6 "jsonrpc": "2.0",
7 "result": "0x4b7" // 1207
8}
Másolás

eth_getBalance

Az adott cím számlaegyenlegét adja vissza.

Paraméterek

  1. DATA, 20 bájt – cím, melynek az egyenlegét ellenőrizzük.
  2. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek – nézze meg az alapértelmezett blokkparamétereket
1params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]
Másolás

Visszaad

QUANTITY – a jelenlegi egyenleg wei-ben egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x0234c8a3397aab58" // 158972490234375000
8}
Másolás

eth_getStorageAt

Egy adott címen lévő tárhely pozícióját adja vissza.

Paraméterek

  1. DATA, 20 bájt – a tárhely címe.
  2. QUANTITY – a tárhelyben lévő pozíció egész számként.
  3. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek – nézze meg az alapértelmezett blokkparamétereket

Visszaad

DATA – az adott tárhelypozíció értéke.

Példa Kiszámolja a pontos pozíciót, a visszakapott tárhely függvényében. Vegyük a következő szerződést, ami itt van telepítve: 0x295a70b2de5e3953354a6a8344e616ed314d7251, ezzel a címmel:0x391694e7e0b0cce554cb130d723a9d27458f9298.

1contract Storage {
2 uint pos0;
3 mapping(address => uint) pos1;
4 function Storage() {
5 pos0 = 1234;
6 pos1[msg.sender] = 5678;
7 }
8}

A pos0 érték megszerzése egyértelmű:

1curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
2{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}
Másolás

A térkép egyik elemének megszerzése már nehezebb. A térképen egy elem pozícióját így kalkuláljuk:

1keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
Másolás

Ahhoz, hogy megszerezzük a tárhelyet a pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] tekintetében, a pozíciót így kell kalkulálni:

1keccak(
2 decodeHex(
3 "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +
4 "0000000000000000000000000000000000000000000000000000000000000001"
5 )
6)
Másolás

A web3-könyvtárban található Geth konzolt lehet használni a kalkulációhoz:

1> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
2undefined
3> web3.sha3(key, {"encoding": "hex"})
4"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"
Másolás

Most pedig a tárhely megszerzése:

1curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
2{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}
Másolás

eth_getTransactionCount

Visszaadja a tranzakciók számát, amelyeket egy adott címről küldtek.

Paraméterek

  1. DATA, 20 bájt – cím.
  2. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek – nézze meg az alapértelmezett blokkparamétereket
1params: [
2 "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
3 "latest", // state at the latest block
4]
Másolás

Visszaad

QUANTITY – a tranzakciók száma egész számként, amit erről a címről küldtek.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Másolás

eth_getBlockTransactionCountByHash

Visszaadja a tranzakciók számát egy blokkban, egy olyan blokkból, mely egyezik a megadott blokkhashsel.

Paraméterek

  1. DATA, 32 bájt – blokkhash
1params: ["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"]
Másolás

Visszaad

QUANTITY – ebben a blokkban lévő tranzakciók száma egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x8b" // 139
8}
Másolás

eth_getBlockTransactionCountByNumber

Visszaadja a tranzakciók számát egy blokkban, amely az adott blokkszámnak felel meg.

Paraméterek

  1. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek az alapértelmezett blokkparaméterek szerint.
1params: [
2 "0x13738ca", // 20396234
3]
Másolás

Visszaad

QUANTITY – ebben a blokkban lévő tranzakciók száma egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x13738ca"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x8b" // 139
8}
Másolás

eth_getUncleCountByBlockHash

Visszaadja az uncle-blokkok számát egy olyan blokkból, ami a blokkhashnek megfelel.

Paraméterek

  1. DATA, 32 bájt – blokkhash
1params: ["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"]
Másolás

Visszaad

QUANTITY – ebben a blokkban az uncle-blokkok száma egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Másolás

eth_getUncleCountByBlockNumber

Visszaadja az uncle-blokkok számát egy olyan blokkból, ami egy adott blokkszámnak megfelel.

Paraméterek

  1. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek – nézze meg az alapértelmezett blokkparamétereket
1params: [
2 "0xe8", // 232
3]
Másolás

Visszaad

QUANTITY – ebben a blokkban az uncle-blokkok száma egész számként.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x0" // 0
8}
Másolás

eth_getCode

Visszaadja az adott címen lévő kódot.

Paraméterek

  1. DATA, 20 bájt – cím
  2. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek – nézze meg az alapértelmezett blokkparamétereket
1params: [
2 "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
3 "0x5daf3b", // 6139707
4]
Másolás

Visszaad

DATA – a kód az adott címről.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x5daf3b"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029"
8}
Másolás

eth_sign

Az aláírás metódus kikalkulál egy Ethereum-specifikus aláírást a következővel: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))).

Ha az üzenethez egy előtagot adunk, akkor a kikalkulált aláírást úgy ismeri fel, mint Ethereum-specifikus aláírás. Ez megakadályozza a rosszhiszemű felhasználást, amikor egy támadó alkalmazás tetszőleges adatokat (például tranzakciókat) ír alá, és arra használja az aláírást, hogy megszemélyesítse áldozatát.

Megjegyzés: az aláíráshoz olyan cím kell, amely nincs zárolva.

Paraméterek

  1. DATA, 20 bájt – cím
  2. DATA, N bájt – az aláírandó üzenet

Visszaad

DATA: Aláírás

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
8}
Másolás

eth_signTransaction

Aláír egy olyan tranzakciót, amelyet egy későbbi időpontban be lehet küldeni a hálózatra az eth_sendRawTransaction segítségével.

Paraméterek

  1. Object – A tranzakcióobjektum
  • type:
  • from: DATA, 20 bájt – A cím, amelyről a tranzakció érkezett.
  • to: DATA, 20 bájt – (opcionális új szerződés létrehozásakor) A tranzakció címzettjének címe.
  • gas: QUANTITY – (opcionális, alapértelmezett: 90 000) A tranzakció végrehajtásához biztosított gáz egész számban megadva. Visszaküldi a fel nem használt gázt.
  • gasPrice: QUANTITY – (opcionális, alapértelmezett: To-Be-Determined) a gasPrice (gázár) egész számként, ami a wei-ben fizetendő gázra vonatkozik.
  • value: QUANTITY – (opcionális) a tranzakcióban küldött érték egész számként, wei-ben.
  • data: DATA – A szerződés kódjának átfordítása VAGY a meghívott metódus aláírásának és kódolt paramétereinek a hashe.
  • nonce: QUANTITY – (opcionális) A nonce egész számmal megadva. Ez lehetővé teszi a saját függőben lévő tranzakciók felülírását, amelyek ugyanazt a nonce-t használják.

Visszaad

DATA, Az RLP-kódolású tranzakcióobjektum, melyet a specifikus számla aláírt.

Példa

1// Request
2curl -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// Result
4{
5 "id": 1,
6 "jsonrpc": "2.0",
7 "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
8}
Másolás

eth_sendTransaction

Készít egy új üzenetküldési tranzakciót vagy szerződéslétrehozást, ha az adatmezőben kód van, és aláírja a from mezőben definiált számlával.

Paraméterek

  1. Object – A tranzakcióobjektum
  • from: DATA, 20 bájt – A cím, amelyről a tranzakció érkezett.
  • to: DATA, 20 bájt – (opcionális új szerződés létrehozásakor) A tranzakció címzettjének címe.
  • gas: QUANTITY – (opcionális, alapértelmezett: 90 000) A tranzakció végrehajtásához biztosított gáz egész számban megadva. Visszaküldi a fel nem használt gázt.
  • gasPrice: QUANTITY – (opcionális, alapértelmezett: To-Be-Determined) a gasPrice (gázár) egész számként, ami a fizetendő gázra vonatkozik.
  • value: QUANTITY – (opcionális) a tranzakcióban küldött érték egész számként.
  • input: DATA – A szerződés kódjának átfordítása VAGY a meghívott metódus aláírásának és kódolt paramétereinek a hashe.
  • nonce: QUANTITY – (opcionális) A nonce egész számmal megadva. Ez lehetővé teszi a saját függőben lévő tranzakciók felülírását, amelyek ugyanazt a nonce-t használják.
1params: [
2 {
3 from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
4 to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
5 gas: "0x76c0", // 30400
6 gasPrice: "0x9184e72a000", // 10000000000000
7 value: "0x9184e72a", // 2441406250
8 input:
9 "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
10 },
11]
Összes megjelenítése
Másolás

Visszaad

DATA, 32 bájt – a tranzakció hashe vagy a nulla hash, ha a tranzakció még nem elérhető.

Használja az eth_getTransactionReceipt parancsot, hogy megszerezze a szerződéscímet, miután a tranzakciót egy blokkban előterjesztették, és amikor létrehozta a szerződést.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
8}
Másolás

eth_sendRawTransaction

Egy új üzenetküldési tranzakciót vagy szerződéslétrehozást hoz létre az aláírt tranzakciókhoz.

Paraméterek

  1. DATA, az aláírt tranzakciós adatok.
1params: [
2 "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
3]
Másolás

Visszaad

DATA, 32 bájt – a tranzakció hashe vagy a nulla hash, ha a tranzakció még nem elérhető.

Használja az eth_getTransactionReceipt parancsot, hogy megszerezze a szerződéscímet, miután a tranzakciót egy blokkban előterjesztették, és amikor létrehozta a szerződést.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
8}
Másolás

eth_call

Azonnal végrehajt egy új üzenethívást anélkül, hogy létrehozna egy tranzakciót a blokkláncon. Gyakran használják arra, hogy csak olvasási (read-only) okosszerződés-függvényeket hajtsanak végre, például a balanceOf kód egy ERC-20-as szerződésnél.

Paraméterek

  1. Object – A tranzakcióhívás objektuma
  1. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek – nézze meg az alapértelmezett blokkparamétereket

Visszaad

DATA – a végrehajtott szerződés visszatérési értéke.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x"
8}
Másolás

eth_estimateGas

Megbecsüli, hogy egy tranzakció végrehajtásához mennyi gázra lesz szükség. A tranzakció nem kerül hozzáadásra a blokklánchoz. Vegye figyelembe, hogy a becslés szignifikánsan több is lehet, mint amennyit elhasznál a tranzakció, melynek számos oka van, beleértve az EVM működési módját és a csomópontok teljesítményét.

Paraméterek

Nézze meg az eth_call paramétereit az összes opcionális paraméter kivételével. Ha nincs megadva gázkorlátozás, akkor a Geth a függőben lévő blokk gázkorlátozását használja felső értékként. Ennek eredményeként a visszakapott becslés talán nem elég a hívás/tranzakció végrehajtásához, amikor a gáz mennyisége magasabb, mint a függőben lévő blokk gázkorlátozása.

Visszaad

QUANTITY – a felhasznált gáz mennyisége.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x5208" // 21000
8}
Másolás

eth_getBlockByHash

Egy blokkról ad információt hash alapján.

Paraméterek

  1. DATA, 32 bájt – egy blokk hashe.
  2. Boolean – Ha true, akkor visszaadja a teljes tranzakcióobjektumot, ha false, akkor csak a tranzakciók hashét.
1params: [
2 "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
3 false,
4]
Másolás

Visszaad

Object – Egy blokkobjektum, vagy null, amikor nem talál blokkot:

  • number: QUANTITY – a blokkszám. null, amikor a blokk függőben van.
  • hash: DATA, 32 bájt – a blokk hashe. null, amikor a blokk függőben van.
  • parentHash: DATA, 32 bájt – a szülőblokk hashe.
  • nonce: DATA, 8 bájt – a létrehozott proof-of-work hashe. null, amikor a blokk függőben van.
  • sha3Uncles: DATA, 32 bájt – a blokkban lévő uncle blokkok SHA3-ja.
  • logsBloom: DATA, 256 bájt – a bloom-szűrés a blokkok naplózására. null, amikor a blokk függőben van.
  • transactionsRoot: DATA, 32 bájt – a blokk tranzakciós fájának a gyökere.
  • stateRoot: DATA, 32 bájt – a blokk végső státuszfájának a gyökere.
  • receiptsRoot: DATA, 32 bájt – a blokk visszaigazolás-fájának a gyökere.
  • miner: DATA, 20 bájt – annak a címe, akinek a bányászati jutalom jár.
  • difficulty: QUANTITY – erre a blokkra vonatkozó nehézség egész számként.
  • totalDifficulty: QUANTITY – a lánc teljes nehézsége eddig a blokkig, egész számként.
  • extraData: DATA – ennek a blokknak a „további adatok” mezője.
  • size: QUANTITY – a blokk mérete bájtban, egész számként.
  • gasLimit: QUANTITY – a maximálisan megengedett gáz ebben a blokkban.
  • gasUsed: QUANTITY – a tranzakciók által elhasznált összes gáz ebben a blokkban.
  • timestamp: QUANTITY – a unix időbélyege, amikor a blokkot összeállították.
  • transactions: Array – Tranzakcióobjektumok tömbje, vagy 32 bájtos tranzakcióhashek az utolsó megadott paraméter alapján.
  • uncles: Array – Az uncle hashek sora.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}'
3// Result
4{
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}
Összes megjelenítése
Másolás

eth_getBlockByNumber

Egy blokkról ad információt a blokkszám alapján.

Paraméterek

  1. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek az alapértelmezett blokkparaméterek szerint.
  2. Boolean – Ha true, akkor visszaadja a teljes tranzakcióobjektumot, ha false, akkor csak a tranzakciók hashét.
1params: [
2 "0x1b4", // 436
3 true,
4]
Másolás

Visszaküldött információk Nézze meg az eth_getBlockByHash résznél

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}'
Másolás

Az eredményeket nézze meg az eth_getBlockByHash résznél

eth_getTransactionByHash

Információt ad egy tranzakcióról a tranzakció hashe alapján.

Paraméterek

  1. DATA, 32 bájt – tranzakció-hash
1params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]
Másolás

Visszaad

Object – Egy tranzakcióobjektum, vagy null, amikor nem talál tranzakciót:

  • blockHash: DATA, 32 bájt – a blokk-hash, amelyben ez a tranzakció volt. null, amikor függőben van.
  • blockNumber: QUANTITY – a blokkszám, amelyben ez a tranzakció volt. null, amikor függőben van.
  • from: DATA, 20 bájt – a küldő címe.
  • gas: QUANTITY – a küldő által adott gáz.
  • gasPrice: QUANTITY – a küldő által megadott gázár wei-ben.
  • hash: DATA, 32 bájt – a tranzakció hashe.
  • input: DATA – a tranzakcióval együtt küldött adatok.
  • nonce: QUANTITY – a tranzakciók száma, melyet a küldő az adott tranzakció előtt végzett.
  • to: DATA, 20 bájt – a fogadó címe. null, amikor ez egy szerződéslétrehozó tranzakció.
  • transactionIndex: QUANTITY – a tranzakcióindex pozíciója a blokkban, egész számként. null, amikor függőben van.
  • value: QUANTITY – a küldött érték wei-ben.
  • v: QUANTITY – ECDSA visszaállítási azonosító
  • r: QUANTITY – ECDSA aláírás r
  • s: QUANTITY – ECDSA aláírás s

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}'
3// Result
4{
5 "jsonrpc":"2.0",
6 "id":1,
7 "result":{
8 "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
9 "blockNumber":"0x5daf3b", // 6139707
10 "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",
11 "gas":"0xc350", // 50000
12 "gasPrice":"0x4a817c800", // 20000000000
13 "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
14 "input":"0x68656c6c6f21",
15 "nonce":"0x15", // 21
16 "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb",
17 "transactionIndex":"0x41", // 65
18 "value":"0xf3dbb76162000", // 4290000000000000
19 "v":"0x25", // 37
20 "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
21 "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
22 }
23}
Összes megjelenítése
Másolás

eth_getTransactionByBlockHashAndIndex

Egy tranzakcióról ad információt a blokk-hash és a tranzakcióindex pozíciója alapján.

Paraméterek

  1. DATA, 32 bájt – egy blokk hashe.
  2. QUANTITY – a tranzakcióindex pozíciója egész számként.
1params: [
2 "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
3 "0x0", // 0
4]
Másolás

Visszaküldött információk Nézze meg az eth_getTransactionByHash résznél

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'
Másolás

Az eredményeket nézze meg az eth_getTransactionByHash résznél

eth_getTransactionByBlockNumberAndIndex

Egy tranzakcióról ad információt a blokkszám és a tranzakcióindex pozíciója alapján.

Paraméterek

  1. QUANTITY|TAG – a blokk száma egész számként, vagy a „latest”, „earliest”, „pending”, „safe” vagy „finalized” sztringek az alapértelmezett blokkparaméterek szerint.
  2. QUANTITY – a tranzakcióindex pozíciója.
1params: [
2 "0x9c47cf", // 10241999
3 "0x24", // 36
4]
Másolás

Visszaküldött információk Nézze meg az eth_getTransactionByHash résznél

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x9c47cf", "0x24"],"id":1}'
Másolás

Az eredményeket nézze meg az eth_getTransactionByHash résznél

eth_getTransactionReceipt

Egy tranzakció visszaigazolását adja meg a tranzakció-hash alapján.

Megjegyzés: A visszaigazolás nem érthető el függőben lévő tranzakciók esetében.

Paraméterek

  1. DATA, 32 bájt – tranzakció-hash
1params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"]
Másolás

Visszaküldött információk Object – Egy tranzakció visszaigazolási objektuma, vagy null, amikor a visszaigazolást nem találja:

  • transactionHash: DATA, 32 bájt – a tranzakció hashe.
  • transactionIndex: QUANTITY – a tranzakcióindex pozíciója a blokkban, egész számként.
  • blockHash: DATA, 32 bájt – a blokk-hash, amelyben ez a tranzakció volt.
  • blockNumber: QUANTITY – a blokkszám, amelyben ez a tranzakció volt.
  • from: DATA, 20 bájt – a küldő címe.
  • to: DATA, 20 bájt – a fogadó címe. null, amikor ez egy szerződéslétrehozó tranzakció.
  • cumulativeGasUsed : QUANTITY – A gáz teljes mennyisége, amikor ez a tranzakció végrehajtásra került a blokkban.
  • effectiveGasPrice : QUANTITY – Az alapdíj és a borravaló összege a gáz egységére vonatkozóan.
  • gasUsed: QUANTITY – A felhasznált gáz mennyisége erre az adott tranzakcióra vonatkozóan.
  • contractAddress: DATA, 20 bájt – A létrehozott szerződéscím, ha ez a tranzakció szerződéslétrehozásról szól, máskülönben null.
  • logs: Array – A naplózási objektumok tömbje, amelyet ez a tranzakció generált.
  • logsBloom: DATA, 256 bájt – Bloom-szűrés a könnyű kliensekhez, hogy gyorsan elérjék a kapcsolódó naplóbejegyzéseket.
  • type: QUANTITY – a tranzakciótípus egész számként, 0x0 a korábbi tranzakciókért, 0x1 a hozzáférési lista típusért, 0x2 a dinamikus díjakért.

Emellett megadja a kettő közül az egyiket :

  • root : DATA 32 bájt tranzakció utáni státuszgyökér (pre Byzantium)
  • status: QUANTITY vagy 1 (sikeres), vagy 0 (sikertelen)

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"],"id":1}'
3// Result
4{
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 created
12 "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 filter
20 "status": "0x1",
21 "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
22 "transactionHash":
23 "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5",
24 "transactionIndex": "0x66",
25 "type": "0x2"
26 }
27}
Összes megjelenítése
Másolás

eth_getUncleByBlockHashAndIndex

Egy blokk uncle-blokkjáról ad információt a hash és az uncle-index pozíciója alapján.

Paraméterek

  1. DATA, 32 bájt – egy blokk hashe.
  2. QUANTITY – az uncle-index pozíciója.
1params: [
2 "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
3 "0x0", // 0
4]
Másolás

Visszaküldött információk Nézze meg az eth_getBlockByHash résznél

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'
Másolás

Az eredményeket nézze meg az eth_getBlockByHash résznél

Megjegyzés: A nagybácsi nem tartalmaz egyedi tranzakciókat.

eth_getUncleByBlockNumberAndIndex

Egy blokk uncle-blokkjáról ad információt a blokkszám és az uncle-index pozíciója alapján.

Paraméterek

  1. QUANTITY|TAG – a blokk száma egész számként, vagy az „earliest”, „latest”, „pending”, „safe”, „finalized” sztringek az alapértelmezett blokkparaméterek szerint.
  2. QUANTITY – az uncle-index pozíciója.
1params: [
2 "0x29c", // 668
3 "0x0", // 0
4]
Másolás

Visszaküldött információk Nézze meg az eth_getBlockByHash résznél

Megjegyzés: A nagybácsi nem tartalmaz egyedi tranzakciókat.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'
Másolás

Az eredményeket nézze meg az eth_getBlockByHash résznél

eth_newFilter

Egy szűrőobjektumot hoz létre a szűrőopciók alapján, hogy értesítsen, amikor a státusz változik (a naplóban). A státusz megváltozásának ellenőrzéséhez az eth_getFilterChanges metódust kell meghívni.

Megjegyzés a témaszűrők meghatározásához: A témák sorrendfüggők. Egy tranzakció egy olyan naplóval, melyben [A, B] téma (topic) van, a következő témaszűrőkhöz lesz hozzáillesztve:

  • [] „bármi”
  • [A] „A az első helyen (utána bármi)”
  • [null, B] „bármi az első helyen ÉS B a második helyen (és utána bármi)”
  • [A, B] „A az első helyen ÉS B a második helyen (és utána bármi)”
  • [[A, B], [A, B]] „(A VAGY B) az első helyen ÉS (A VAGY B) a második helyen (és utána bármi)”
  • Paraméterek
  1. Object – A szűrőopciók:
  • fromBlock: QUANTITY|TAG – (opcionális, alapértelmezett: „latest”) blokkszám egész számként, vagy „latest” az utolsó előterjesztett blokkra, „safe” az utolsó biztosított blokkra, „finalized” az utolsó véglegesített blokkra, vagy „pending”, „earliest” a még blokkba nem került tranzakciókra.
  • toBlock: QUANTITY|TAG – (opcionális, alapértelmezett: „latest”) blokkszám egész számként, vagy „latest” az utolsó előterjesztett blokkra,„safe” az utolsó biztosított blokkra, „finalized” az utolsó véglegesített blokkra, vagy „pending”, „earliest” a még blokkba nem került tranzakciókra.
  • address: DATA|Array, 20 bájt – (opcionális) A szerződéscím vagy címek listája, amelyekről a naplók származnak.
  • topics: Array of DATA, – (opcionális) a DATA témák (topics) 32 bájtos tömbje. A témák sorrendfüggők. Minden téma egy DATA tömb lehet „vagy” opciókkal.
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]
Összes megjelenítése
Másolás

Visszaküldött információk QUANTITY – Egy szűrő id.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Másolás

eth_newBlockFilter

Létrehoz egy szűrőt a csomópontban, hogy értesítsen az új blokk érkezéséről. A státusz megváltozásának ellenőrzéséhez az eth_getFilterChanges metódust kell meghívni.

Paraméterek Egyik sem

Visszaküldött információk QUANTITY – Egy szűrő id.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Másolás

eth_newPendingTransactionFilter

Létrehoz egy szűrőt a csomópontban, hogy értesítsen új függőben lévő tranzakciók érkezéséről. A státusz megváltozásának ellenőrzéséhez az eth_getFilterChanges metódust kell meghívni.

Paraméterek Egyik sem

Visszaküldött információk QUANTITY – Egy szűrő id.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Másolás

eth_uninstallFilter

Egy adott azonosító alatti szűrő eltávolítása. Mindig érdemes meghívni, ha már nincs szükség az adott ellenőrzésre. Emellett a szűrőket ideiglenesen leállíthatja, amikor egy időszakban nincs azokra szükség az eth_getFilterChanges metódussal.

Paraméterek

  1. QUANTITY – A szűrő azonosítója.
1params: [
2 "0xb", // 11
3]
Másolás

Visszaküldött információk Booleantrue, ha a szűrőt sikeresen eltávolította, máskülönben false.

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": true
8}
Másolás

eth_getFilterChanges

Egy szűrőre vonatkozó szelektív hívás, ami a naplótömböt adja vissza, amely az utolsó szelektív hívás óta történteket foglalja magában.

Paraméterek

  1. QUANTITY – A szűrő azonosítója.
1params: [
2 "0x16", // 22
3]
Másolás

Visszaküldött információk Array – Naplóobjektumok tömbje, vagy egy üres tömb, ha semmi sem változott a legutóbbi szelektív hívás óta.

  • Az eth_newBlockFilter által létrehozott szűrőkre a visszakapott értékek a blokkhashek (DATA, 32 bájt), például ["0x3454645634534..."].
  • Az eth_newPendingTransactionFilter által létrehozott szűrőkre a visszakapott értékek a tranzakcióhashek (DATA, 32 bájt), például ["0x6345343454645..."].
  • Az eth_newFilter által készített szűrőkre a naplók olyan objektumok lesznek, melyek a következő paraméterekkel rendelkeznek:
    • removed: TAGtrue, amikor a naplót törölték a lánc újrarendezése miatt. false, ha ez egy érvényes napló.
    • logIndex: QUANTITY – a naplóindex pozíciója a blokkban, egész számként. null, amikor a napló függőben van.
    • transactionIndex: QUANTITY – a tranzakcióindex pozíciója, amelyből a napló készült, egész számként. null, amikor a napló függőben van.
    • transactionHash: DATA, 32 bájt – a tranzakció hashe, amelyből ez a napló készült. null, amikor a napló függőben van.
    • blockHash: DATA, 32 bájt – a blokk-hash, amelyben ez a napló volt. null, amikor függőben van. null, amikor a napló függőben van.
    • blockNumber: QUANTITY – a blokkszám, ahol ez a napló volt. null, amikor függőben van. null, amikor a napló függőben van.
    • address: DATA, 20 bájt – a cím, ahonnan ez a napló származik.
    • data: DATA – nullát vagy a napló több 32 bájtos nem indexált argumentumát tartalmazza.
    • topics: Array of DATA – 0-tól 4-ig tartó tömbje a 32 bájtos, indexált naplóargumentumok DATA részleteinek. (A Solidity-ben: Az első téma (topic) az esemény aláírásának a hashe (például Deposit(address,bytes32,uint256)), kivéve ha az eseményt az anonymous specifikációval deklarálták.)
  • Példa
1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": [{
8 "logIndex": "0x1", // 1
9 "blockNumber":"0x1b4", // 436
10 "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
11 "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
12 "transactionIndex": "0x0", // 0
13 "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
14 "data":"0x0000000000000000000000000000000000000000000000000000000000000000",
15 "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
16 },{
17 ...
18 }]
19}
Összes megjelenítése
Másolás

eth_getFilterLogs

Visszaadja a megadott azonosítóval rendelkező szűrőnek megfelelő összes napló tömbjét.

Paraméterek

  1. QUANTITY – A szűrő azonosítója.
1params: [
2 "0x16", // 22
3]
Másolás

Visszaküldött információk Nézze meg az eth_getFilterChanges résznél

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'
Másolás

Az eredményeket nézze meg az eth_getFilterChanges résznél

eth_getLogs

Visszaadja az adott szűrőobjektumnak megfelelő összes naplótömböt.

Paraméterek

  1. Object – A szűrőopciók:
  • fromBlock: QUANTITY|TAG – (opcionális, alapértelmezett: „latest”) blokkszám egész számként, vagy „latest” az utolsó előterjesztett blokkra, „safe” az utolsó biztosított blokkra, „finalized” az utolsó véglegesített blokkra, vagy „pending”, „earliest” a még blokkba nem került tranzakciókra.
  • toBlock: QUANTITY|TAG – (opcionális, alapértelmezett: „latest”) blokkszám egész számként, vagy „latest” az utolsó előterjesztett blokkra,„safe” az utolsó biztosított blokkra, „finalized” az utolsó véglegesített blokkra, vagy „pending”, „earliest” a még blokkba nem került tranzakciókra.
  • address: DATA|Array, 20 bájt – (opcionális) A szerződéscím vagy címek listája, amelyekről a naplók származnak.
  • topics: Array of DATA, – (opcionális) a DATA témák (topics) 32 bájtos tömbje. A témák sorrendfüggők. Minden téma egy DATA tömb lehet „vagy” opciókkal.
  • blockhash: DATA, 32 bájt – (opcionális, jövő) Az EIP-234 bevezetésével a blockHash egy új szűrőopció lesz, amely egyetlen blokkra redukálja a visszakapott naplókat egy 32-bájtos hashsel rendelkező blockHash segítségével. A blockHash használata azonos a fromBlock = toBlock = blokkszám hashsel (blockHash). Ha a blockHash benne van a szűrőkritériumban, akkor nem engedélyezett se a fromBlock, se a toBlock.
1params: [
2 {
3 topics: [
4 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
5 ],
6 },
7]
Másolás

Visszaküldött információk Nézze meg az eth_getFilterChanges résznél

Példa

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}'
Másolás

Az eredményeket nézze meg az eth_getFilterChanges résznél

Használati példa

Egy szerződés telepítése JSON_RPC-vel

Ez a rész azt mutatja be, hogyan lehet egy szerződést telepíteni kizárólag az RPC-interfésszel. Alternatív utak állnak rendelkezésre a szerződéstelepítéshez, ahol ez a komplexitás csökken, például az RPC-interfészre épített könyvtárak segítségével, mint amilyen a web3.js(opens in a new tab) és a web3.py(opens in a new tab). Ezek az absztrakciók általában könnyebben érthetők és nem annyira hajlamosak a hibára, de akkor is érdemes megérteni, hogy mi is zajlik a háttérben.

A következő egy egyszerű, Multiply7 nevű okosszerződés, amelyet a JSON-RPC-interfésszel telepítünk egy Ethereum-csomópontra. Ez az útmutató azt feltételezi, hogy Ön már futtat egy Geth-csomópontot. A csomópontokról és a kliensekről bővebben itt olvashat. Tekintse meg az egyéni kliensdokumentációt, hogy hogyan lehet HTTP JSON-RPC-t indítani nem Geth-klienseken. A legtöbb kliens alapértelmezés szerint a localhost:8545 kódon működik.

1contract Multiply7 {
2 event Print(uint);
3 function multiply(uint input) returns (uint) {
4 Print(input * 7);
5 return input * 7;
6 }
7}

Az első dolog, hogy a HTTP RPC-interfész engedélyezve legyen. Ez azt jelenti, hogy a Geth-nek a beállításkor megadjuk a --http jelölőt (flag). Ebben a példában egy Geth-csomópontot használunk egy privát fejlesztési láncon. Ehhez a megközelítéshez nincs szükség etherre, mint egy valódi hálózaton.

geth --http --dev console 2>>geth.log

Ez elindítja a HTTP RPC interfészt a http://localhost:8545 kódon.

A curl(opens in a new tab) segítségével a Coinbase-címet és egyenleget lekérve ellenőrizhetjük, hogy az interfész fut-e. Vegye figyelembe, hogy e példában az adatok mások, mint az Ön lokális csomópontján. Ha ki szeretné próbálni ezeket a parancsokat, akkor a lekérdezés paramétereit a második curl kérésben cserélje le az első kérésre kapott eredményekre.

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"}

Mivel a számok hexadecimálisan vannak kódolva, ezért a visszakapott egyenleg wei-ben egy hexadecimális sztring. Ha az egyenleget etherben, számként szeretnénk megkapni, akkor használhatjuk a web3-at a Geth-konzolból.

1web3.fromWei("0x1639e49bba16280000", "ether")
2// "410"

Most, hogy ethert tettünk a privát fejlesztési láncra, telepíthetjük a szerződést. Az első lépés, hogy a Multiply7 szerződést át kell fordítani bájtkódra, hogy el lehessen küldeni az EVM-nek. A solc, a Solidity átfordító telepítéséhez kövesse a Solidity dokumentációt(opens in a new tab). (Előfordulhat, hogy egy régebbi solc kiadást szeretne használni, hogy az illeszkedjen a példában szereplő átfordító verziójához(opens in a new tab).)

Most tehát átfordíthatjuk a Multiply7 szerződést bájtkódra, hogy el lehessen küldeni az EVM-nek.

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

Megvan az átfordított kód, úgyhogy most meghatározzunk, mennyi gázköltséget igényel a telepítése. Az RPC-interfésznek van egy eth_estimateGas metódusa, ami megadja a becsült értéket.

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"}

Végül telepítjük a szerződést.

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"}

A tranzakciót elfogadta a csomópont, és visszaküldte a tranzakcióhasht. Ezzel a hashsel lehet nyomon követni a tranzakciót. A következő lépés, hogy meghatározzuk a címet, ahová a szerződés telepítésre került. Minden végrehajtott tranzakció egy visszaigazolást ad. Ez a visszaigazolás számos információt tartalmaz a tranzakcióról, például melyik blokkba került be és mennyi gázt használt fel az EVM. Ha egy tranzakció létrehoz egy szerződést, akkor a szerződés címe is benne lesz a visszaigazolásban. A visszaigazolást megszerezhetjük az eth_getTransactionReceipt RPC metódussal.

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"}}

A szerződést a 0x4d03d617d700cf81935d7f797f4e2ae719648262 címen hozta létre. Ha nullát kapunk eredményül, akkor a tranzakció még nem került be a blokkba. Várjon egy kicsit, ellenőrizze, hogy a konszenzuskliens fut-e, és próbálja meg újra.

Interakció okosszerződésekkel

Ebben a példában elküldünk egy tranzakciót az eth_sendTransaction metódussal a szerződés multiply metódusának.

Az eth_sendTransaction számos argumentumot igényel, mint a from, to és data. From a számla nyilvános címe, a to pedig a szerződés címe. A data tartalmazza a csomagot, hogy melyik metódust milyen argumentumokkal kell meghívni. Itt jön képbe az ABI (application binary interface)(opens in a new tab). Az ABI egy JSON-fájl, amely meghatározza, hogyan kell az EVM számára megadni és kódolni az adatokat.

Az adattörzs bájtjai határozzák meg, hogy a szerződés melyik metódusát hívják meg. Ez a Kessak-hash első 4 bájtja a függvénynév és az argumentumtípusok felett, hexadecimálisan kódolva. A szorzás függvény uint-et fogad el, ami azonos az uint256-tal. Ez a következőt jelenti:

1web3.sha3("multiply(uint256)").substring(0, 10)
2// "0xc6888fa1"

A következő lépés az argumentumok kódolása. Egyetlen uint256 van csak, amelynek értéke legyen 6. Az ABI egyik része azt mutatja be, hogy miként kell kódolni az uint256 típusokat.

int<M>: enc(X) az X két kiegészítős big-endian kódolása, a magasabb rendű (bal) oldalon 0xff-el feltöltve negatív X esetén és nulla > bájttal pozitív X esetén úgy, hogy a hossza a 32 bájt többszöröse legyen.

Ennek a kódolása a következő: 0000000000000000000000000000000000000000000000000000000000000006.

A függvényválasztót és a kódolt argumentumot kombinálva az adatunk a következő: 0xc6888fa10000000000000000000000000000000000000000000000000000000000000006.

Ezt el lehet küldeni a csomópontnak:

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"}

Mivel egy tranzakciót küldtünk, ezért egy hasht kapunk vissza. A visszaigazolás megérkezésekor a következőt látjuk:

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: 0
16 }],
17 transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",
18 transactionIndex: 0
19}
Összes megjelenítése

A visszaigazolás tartalmaz egy naplót. Ezt a naplót az EVM generálta a tranzakció-végrehajtáskor és beletette a visszaigazolásba. A multiply függvény azt mutatja, hogy a Print eseményt a bemeneti érték 7-szeresével indította el. Mivel a Print eseményre az argumentum egy uint256 volt, kódolhatjuk az ABI szabályai szerint, ami a várt 42-es decimális értéket adja. Az adat mellett érdemes megjegyezni, hogy a témák (topics) révén meghatározható, hogy melyik esemény hozta létre a naplót:

1web3.sha3("Print(uint256)")
2// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"

Ez csak egy rövid bevezető volt a leggyakoribb feladatokba, a JSON-RPC közvetlen használatát demonstrálandó.

  • JSON-RPC specifikáció(opens in a new tab)
  • Csomópontok és kliensek
  • JavaScript API-ok
  • Backend API-ok
  • Végrehajtási kliensek

Hasznosnak találta a cikket?