JSON-RPC API
Останні оновлення сторінки: 23 лютого 2026 р.
Щоб програмне забезпечення могло взаємодіяти з блокчейном Ethereum — зчитувати дані блокчейну або надсилати транзакції до мережі — воно повинно підключатися до вузла Ethereum.
Для цього кожен клієнт Ethereum реалізує специфікацію JSON-RPCopens in a new tab, тому існує єдиний набір методів, на які можуть покладатися застосунки, незалежно від конкретної реалізації вузла або клієнта.
JSON-RPCopens in a new tab — це легковагий протокол віддаленого виклику процедур (RPC) без збереження стану. Він визначає декілька структур даних і правила їх обробки. Він є транспортно -агностичним, оскільки концепції можна використовувати в межах одного процесу, через сокети, по HTTP або у багатьох різних середовищах передачі повідомлень. Він використовує JSON (RFC 4627) як формат данних.
Реалізації клієнтів
Користувачі Ethereum можуть користуватись різними мовами програмування при використанні JSON-RPC. Див. документацію окремих клієнтів для отримання додаткової інформації щодо конкретних мов програмування. Ми рекомендуємо слідкувати за данними кожного користувача для підтримки API останньої версії.
Допоміжні бібліотеки
Ви можете обрати взаємодію з клієнтами Ethereum на пряму, через JSON-RPC API, хоча для розрибників Dapp є легші варіанти. Існує багато бібліотек JavaScript та API для серверної частини, які надають оболонки для JSON-RPC API. З подібними бібліотеками, розробники можуть писати інтуїтивно, використовуючи однолінійний метод мови програмування, щоб розпізнати запити JSON-RPC, які взаємодіють з Ethereum.
API консенсус-клієнтів
На цій сторінці розглядається переважно JSON-RPC API, що використовується клієнтами-виконавцями Ethereum. Однак, консенсус-клієнти також мають RPC API, який дозволяє користувачам запитувати інформацію про вузол, запитувати блоки Beacon, стан Beacon та іншу інформацію, пов'язану з консенсусом, безпосередньо з вузла. Цей API задокументовано на веб-сторінці Beacon APIopens in a new tab.
Внутрішній API також використовується для зв'язку між клієнтами в межах вузла, тобто він дає змогу консенсус-клієнту та клієнту-виконавцю обмінюватися даними. Він називається Engine API, а специфікації доступні на GitHubopens in a new tab.
Специфікація клієнта-виконавця
Прочитайте повну специфікацію JSON-RPC API на GitHubopens in a new tab. Цей API задокументовано на вебсторінці Execution APIopens in a new tab і містить інспектор, щоб випробувати всі доступні методи.
Умовності
Кодування шістнадцяткових значень
Через JSON передаються два ключові типи даних: неформатовані масиви байтів і кількісні значення. Обидва передаються в шістнадцятковому кодуванні, але з різними вимогами до форматування.
Кількісні значення
Під час кодування кількісних значень (цілих чисел, чисел): кодуйте як шістнадцяткове значення з префіксом «0x», у найкомпактнішому представленні (невеликий виняток: нуль слід представляти як «0x0»).
Ось кілька прикладів:
- 0x41 (65 у десятковій системі)
- 0x400 (1024 у десятковій системі)
- НЕПРАВИЛЬНО: 0x (завжди має бути принаймні одна цифра — нуль — це «0x0»)
- НЕПРАВИЛЬНО: 0x0400 (нулі на початку не допускаються)
- НЕПРАВИЛЬНО: ff (повинен мати префікс 0x)
Неформатовані дані
Під час кодування неформатованих даних (масивів байтів, адрес облікових записів, хешів, масивів байт-коду): кодуйте як шістнадцяткове значення, з префіксом «0x», дві шістнадцяткові цифри на байт.
Ось кілька прикладів:
- 0x41 (розмір 1, «A»)
- 0x004200 (розмір 3, «0B0»)
- 0x (розмір 0, «»)
- НЕПРАВИЛЬНО: 0xf0f0f (має бути парна кількість цифр)
- НЕПРАВИЛЬНО: 004200 (має бути префікс 0x)
Параметр блоку
Наведені нижче методи мають параметр блоку:
Коли робляться запити, що опитують стан Ethereum, наданий параметр блоку визначає висоту блоку.
Для параметра блоку можливі наступні опції:
HEX String— цілочисельний номер блокуString "earliest"— для найранішого/генезис-блокуString "latest"— для останнього запропонованого блокуString "safe"— для останнього безпечного головного блокуString "finalized"— для останнього фіналізованого блокуString "pending"— для стану/транзакцій, що очікують на розгляд
Приклади
На цій сторінці ми наводимо приклади використання окремих кінцевих точок JSON-RPC API за допомогою інструменту командного рядка, curlopens in a new tab. Ці приклади окремих кінцевих точок наведені нижче в розділі Приклади Curl. Далі на сторінці ми також наводимо наскрізний приклад компіляції та розгортання смарт-контракту за допомогою вузла Geth, JSON_RPC API та curl.
Приклади Curl
Нижче наведено приклади використання JSON_RPC API шляхом виконання запитів curlopens in a new tab до вузла Ethereum. Кожен приклад містить опис конкретної кінцевої точки, її параметрів, типу, що повертається, і робочий приклад її використання.
Запити curl можуть повертати повідомлення про помилку, пов'язане з типом вмісту. Це тому, що опція --data встановлює тип контенту на application/x-www-form-urlencoded. Якщо ваш вузол скаржиться на це, встановіть заголовок вручну, розмістивши -H "Content-Type: application/json" на початку виклику. Приклади також не містять комбінації URL-адреси/IP-адреси та порту, яка має бути останнім аргументом для curl (наприклад, 127.0.0.1:8545). Повний запит curl, що включає ці додаткові дані, має такий вигляд:
1curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545Передача даних, стан, історія
Декілька основних методів JSON-RPC вимагають даних з мережі Ethereum і чітко поділяються на три основні категорії: передача даних, стан та історія. Використовуйте посилання в цих розділах, щоб перейти до кожного методу, або скористайтеся змістом, щоб переглянути весь список методів.
Методи передачі даних
Ці методи відстежують верхівку ланцюга. Саме так транзакції поширюються мережею, потрапляють у блоки, і так клієнти дізнаються про нові блоки.
Методи стану
Методи, що повідомляють про поточний стан усіх збережених даних. «Стан» — це як один великий спільний фрагмент оперативної пам'яті, що містить баланси облікових записів, дані контрактів та оцінки газу.
Методи історії
Отримує історичні записи кожного блоку аж до генезис-блоку. Це схоже на один великий файл, що допускає лише дозапис, і містить усі заголовки блоків, тіла блоків, блоки-дядьки та квитанції про транзакції.
- 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
Ви можете використовувати інструмент ігрового майданчикаopens in a new tab, щоб знайти та випробувати методи API. Він також показує, які методи та мережі підтримуються різними постачальниками вузлів.
Методи JSON-RPC API
web3_clientVersion
Повертає поточну версію клієнта.
Параметри
Немає
Повертає
String - поточна версія клієнта
Приклад
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": "Geth/v1.12.1-stable/linux-amd64/go1.19.1"8}web3_sha3
Повертає Keccak-256 (а не стандартизований SHA3-256) для наданих даних.
Параметри
DATA— дані для перетворення в хеш SHA3
1params: ["0x68656c6c6f20776f726c64"]Повертає
DATA — результат SHA3 для наданого рядка.
Приклад
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}net_version
Повертає ідентифікатор поточної мережі.
Параметри
Немає
Повертає
String — ідентифікатор поточної мережі.
Повний список поточних ідентифікаторів мереж доступний на chainlist.orgopens in a new tab. Деякі з найпоширеніших:
1: основна мережа Ethereum11155111: тестова мережа Sepolia560048: тестова мережа Hoodi
Приклад
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}net_listening
Повертає true, якщо клієнт активно слухає мережеві підключення.
Параметри
Немає
Повертає
Boolean — true, коли слухає, інакше — false.
Приклад
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}net_peerCount
Повертає кількість пірів, підключених до клієнта.
Параметри
Немає
Повертає
QUANTITY — ціле число, що позначає кількість підключених пірів.
Приклад
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}eth_protocolVersion
Повертає поточну версію протоколу Ethereum. Зверніть увагу, що цей метод недоступний у Gethopens in a new tab.
Параметри
Немає
Повертає
String — поточна версія протоколу Ethereum
Приклад
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}eth_syncing
Повертає об'єкт з даними про стан синхронізації або false.
Параметри
Немає
Повертає
Точні дані, що повертаються, відрізняються залежно від реалізації клієнта. Усі клієнти повертають False, коли вузол не синхронізується, і всі клієнти повертають такі поля.
Object|Boolean, об’єкт із даними стану синхронізації або FALSE, якщо не синхронізується:
startingBlock:QUANTITY— блок, з якого почався імпорт (буде скинуто лише після того, як синхронізація досягне своєї верхівки)currentBlock:QUANTITY— поточний блок, такий же, як eth_blockNumberhighestBlock:QUANTITY— приблизний найвищий блок
Однак окремі клієнти можуть також надавати додаткові дані. Наприклад, Geth повертає наступне:
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}Показати всеТоді як Besu повертає:
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}Показати всеДля отримання детальнішої інформації зверніться до документації вашого клієнта.
Приклад
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}Показати всеeth_coinbase
Повертає адресу coinbase клієнта.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПримітка: цей метод було визнано застарілим у версії v1.14.0 і більше не підтримується. Спроба використати цей метод призведе до помилки «Метод не підтримується».
Параметри
Немає
Повертає
DATA, 20 байтів — поточна адреса coinbase.
Приклад
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}eth_chainId
Повертає ідентифікатор ланцюга, який використовується для підпису транзакцій, захищених від повторного відтворення.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
Немає
Повертає
chainId, шістнадцяткове значення у вигляді рядка, що представляє ціле число поточного ідентифікатора ланцюга.
Приклад
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}eth_mining
Повертає true, якщо клієнт активно майнить нові блоки. Це може повертати true лише для мереж із доказом виконання роботи, і може бути недоступним для деяких клієнтів після The Merge.
Параметри
Немає
Повертає
Boolean - повертає true, якщо клієнт майнить, інакше false.
Приклад
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}eth_hashrate
Повертає кількість хешів за секунду, з якою вузол здійснює майнінг. Це може повертати true лише для мереж із доказом виконання роботи, і може бути недоступним для деяких клієнтів після The Merge.
Параметри
Немає
Повертає
QUANTITY — кількість хешів за секунду.
Приклад
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}eth_gasPrice
Повертає оцінку поточної ціни за газ у wei. Наприклад, клієнт Besu перевіряє останні 100 блоків і за замовчуванням повертає медіанну ціну одиниці газу.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
Немає
Повертає
QUANTITY — ціле число поточної ціни газу у wei.
Приклад
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}eth_accounts
Повертає список адрес, що належать клієнту.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
Немає
Повертає
Array of DATA, 20 байтів — адреси, що належать клієнту.
Приклад
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}eth_blockNumber
Повертає номер останнього блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
Немає
Повертає
QUANTITY — ціле число, що позначає номер поточного блоку, на якому знаходиться клієнт.
Приклад
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}eth_getBalance
Повертає баланс облікового запису за вказаною адресою.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 20 байтів — адреса для перевірки балансу.QUANTITY|TAG— цілочисельний номер блоку або рядок"latest","earliest","pending","safe"чи"finalized", див. параметр блоку
1params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]Повертає
QUANTITY — ціле число поточного балансу у wei.
Приклад
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}eth_getStorageAt
Повертає значення з позиції сховища за вказаною адресою.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 20 байтів — адреса сховища.QUANTITY— ціле число, що позначає позицію в сховищі.QUANTITY|TAG— цілочисельний номер блоку або рядок"latest","earliest","pending","safe"чи"finalized", див. параметр блоку
Повертає
DATA — значення в цій позиції сховища.
Приклад
Обчислення правильної позиції залежить від сховища, яке потрібно отримати. Розглянемо наступний контракт, розгорнутий за адресою 0x295a70b2de5e3953354a6a8344e616ed314d7251 з адреси 0x391694e7e0b0cce554cb130d723a9d27458f9298.
1contract Storage {2 uint pos0;3 mapping(address => uint) pos1;4 constructor() {5 pos0 = 1234;6 pos1[msg.sender] = 5678;7 }8}Отримати значення pos0 просто:
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"}Отримати елемент зіставлення складніше. Позиція елемента в зіставленні обчислюється за допомогою:
1keccak(LeftPad32(key, 0), LeftPad32(map position, 0))Це означає, що для отримання сховища на pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] нам потрібно обчислити позицію за допомогою:
1keccak(2 decodeHex(3 "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +4 "0000000000000000000000000000000000000000000000000000000000000001"5 )6)Консоль geth, що постачається з бібліотекою web3, може бути використана для обчислення:
1> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"2undefined3> web3.sha3(key, {"encoding": "hex"})4"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"Тепер, щоб отримати сховище:
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"}eth_getTransactionCount
Повертає кількість транзакцій, надісланих з адреси.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 20 байтів — адреса.QUANTITY|TAG— цілочисельний номер блоку або рядок"latest","earliest","pending","safe"чи"finalized", див. параметр блоку
1params: [2 "0x407d73d8a49eeb85d32cf465507dd71d507100c1",3 "latest", // стан останнього блоку4]Повертає
QUANTITY — ціле число, що позначає кількість транзакцій, надісланих із цієї адреси.
Приклад
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}eth_getBlockTransactionCountByHash
Повертає кількість транзакцій у блоці за заданим хешем блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 32 байти — хеш блоку
1params: ["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"]Повертає
QUANTITY — ціле число, що позначає кількість транзакцій у цьому блоці.
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x8b" // 1398}eth_getBlockTransactionCountByNumber
Повертає кількість транзакцій у блоці за заданим номером блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
QUANTITY|TAG— ціле число, що позначає номер блоку, або рядок"earliest","latest","pending","safe"чи"finalized", як у параметрі блоку.
1params: [2 "0x13738ca", // 203962343]Повертає
QUANTITY — ціле число, що позначає кількість транзакцій у цьому блоці.
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x13738ca"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x8b" // 1398}eth_getUncleCountByBlockHash
Повертає кількість блоків-дядьків у блоці за заданим хешем блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 32 байти — хеш блоку
1params: ["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"]Повертає
QUANTITY — ціле число, що позначає кількість блоків-дядьків у цьому блоці.
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x1" // 18}eth_getUncleCountByBlockNumber
Повертає кількість блоків-дядьків у блоці за заданим номером блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
QUANTITY|TAG— цілочисельний номер блоку або рядок"latest","earliest","pending","safe"чи"finalized", див. параметр блоку
1params: [2 "0xe8", // 2323]Повертає
QUANTITY — ціле число, що позначає кількість блоків-дядьків у цьому блоці.
Приклад
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": "0x0" // 08}eth_getCode
Повертає код за вказаною адресою.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 20 байтів — адресаQUANTITY|TAG— цілочисельний номер блоку або рядок"latest","earliest","pending","safe"чи"finalized", див. параметр блоку
1params: [2 "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",3 "0x5daf3b", // 61397074]Повертає
DATA — код із вказаної адреси.
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x5daf3b"],"id":1}'3// Result4{5 "id":1,6 "jsonrpc": "2.0",7 "result": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029"8}eth_sign
Метод sign обчислює специфічний для Ethereum підпис за допомогою: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))).
Додавання префікса до повідомлення робить обчислений підпис розпізнаваним як специфічний підпис Ethereum. Це запобігає зловживанню, коли зловмисний dapp може підписувати довільні дані (наприклад, транзакцію) і використовувати підпис, щоб видати себе за жертву.
Примітка: адреса для підпису має бути розблокована.
Параметри
DATA, 20 байтів — адресаDATA, N байтів - повідомлення для підпису
Повертає
DATA: підпис
Приклад
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}eth_signTransaction
Підписує транзакцію, яку можна буде пізніше надіслати в мережу за допомогою eth_sendRawTransaction.
Параметри
Object— об'єкт транзакції
type:from:DATA, 20 байтів — адреса, з якої надсилається транзакція.to:DATA, 20 байтів — (необов'язково при створенні нового контракту) адреса, на яку спрямована транзакція.gas:QUANTITY— (необов'язково, за замовчуванням: 90000) ціле число газу, наданого для виконання транзакції. Він поверне невикористаний газ.gasPrice:QUANTITY— (необов'язково, за замовчуванням: буде визначено) ціле число gasPrice, що використовується для кожного оплаченого газу, у Wei.value:QUANTITY— (необов'язково) ціле число значення, надісланого з цією транзакцією, у Wei.data:DATA— скомпільований код контракту АБО хеш підпису викликаного методу та закодованих параметрів.nonce:QUANTITY— (необов'язково) ціле число nonce. Це дає змогу перезаписувати власні транзакції, що очікують на розгляд, які використовують той самий nonce.
Повертає
DATA, об'єкт транзакції, закодований за RLP, підписаний зазначеним обліковим записом.
Приклад
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}eth_sendTransaction
Створює нову транзакцію виклику повідомлення або створення контракту, якщо поле даних містить код, і підписує її за допомогою облікового запису, зазначеного у from.
Параметри
Object— об'єкт транзакції
from:DATA, 20 байтів — адреса, з якої надсилається транзакція.to:DATA, 20 байтів — (необов'язково при створенні нового контракту) адреса, на яку спрямована транзакція.gas:QUANTITY— (необов'язково, за замовчуванням: 90000) ціле число газу, наданого для виконання транзакції. Він поверне невикористаний газ.gasPrice:QUANTITY- (необов'язково, за замовчуванням: буде визначено) Ціле число gasPrice, що використовується для кожного оплаченого газу.value:QUANTITY— (необов'язково) ціле число значення, надісланого з цією транзакцією.input:DATA— скомпільований код контракту АБО хеш підпису викликаного методу та закодованих параметрів.nonce:QUANTITY— (необов'язково) ціле число nonce. Це дає змогу перезаписувати власні транзакції, що очікують на розгляд, які використовують той самий nonce.
1params: [2 {3 from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",4 to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567",5 gas: "0x76c0", // 304006 gasPrice: "0x9184e72a000", // 100000000000007 value: "0x9184e72a", // 24414062508 input:9 "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",10 },11]Показати всеПовертає
DATA, 32 байти - хеш транзакції або нульовий хеш, якщо транзакція ще недоступна.
Використовуйте eth_getTransactionReceipt, щоб отримати адресу контракту після того, як транзакція була запропонована в блоці, коли ви створили контракт.
Приклад
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}eth_sendRawTransaction
Створює нову транзакцію виклику повідомлення або створення контракту для підписаних транзакцій.
Параметри
DATA, дані підписаної транзакції.
1params: [2 "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",3]Повертає
DATA, 32 байти - хеш транзакції або нульовий хеш, якщо транзакція ще недоступна.
Використовуйте eth_getTransactionReceipt, щоб отримати адресу контракту після того, як транзакція була запропонована в блоці, коли ви створили контракт.
Приклад
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}eth_call
Виконує новий виклик повідомлення негайно, не створюючи транзакцію на блокчейні. Часто використовується для виконання функцій смарт-контрактів, доступних лише для читання, наприклад balanceOf для контракту ERC-20.
Параметри
Object— об'єкт виклику транзакції
from:DATA, 20 байтів - (необов'язково) Адреса, з якої надсилається транзакція.to:DATA, 20 байтів — адреса, на яку спрямована транзакція.gas:QUANTITY— (необов'язково) ціле число газу, наданого для виконання транзакції. eth_call споживає нуль газу, але цей параметр може знадобитися для деяких виконань.gasPrice:QUANTITY- (необов'язково) Ціле число gasPrice, що використовується для кожного оплаченого газуvalue:QUANTITY— (необов'язково) ціле число значення, надісланого з цією транзакцієюinput:DATA- (необов'язково) Хеш підпису методу та закодованих параметрів. Для отримання докладної інформації див. Ethereum Contract ABI в документації Solidityopens in a new tab.
QUANTITY|TAG— цілочисельний номер блоку або рядок"latest","earliest","pending","safe"чи"finalized", див. параметр блоку
Повертає
DATA — значення, що повертається виконаним контрактом.
Приклад
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}eth_estimateGas
Генерує та повертає оцінку того, скільки газу необхідно для завершення транзакції. Транзакція не буде додана до блокчейну. Зверніть увагу, що оцінка може бути значно більшою, ніж кількість газу, фактично використаного транзакцією, з різних причин, включаючи механіку EVM та продуктивність вузла.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
Див. параметри eth_call, за винятком того, що всі властивості є необов'язковими. Якщо ліміт газу не вказано, geth використовує ліміт газу блоку з блоку, що очікує на розгляд, як верхню межу. У результаті повернутої оцінки може бути недостатньо для виконання виклику/транзакції, коли кількість газу перевищує ліміт газу для блоку, що очікує на підтвердження.
Повертає
QUANTITY — кількість використаного газу.
Приклад
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}eth_getBlockByHash
Повертає інформацію про блок за хешем.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 32 байти - Хеш блоку.Boolean— якщоtrue, повертає повні об’єкти транзакцій, якщоfalse— лише хеші транзакцій.
1params: [2 "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",3 false,4]Повертає
Object — об'єкт блоку або null, якщо блок не знайдено:
number:QUANTITY— номер блоку.null, якщо це блок, що очікує на розгляд.hash:DATA, 32 байти — хеш блоку.null, якщо це блок, що очікує на розгляд.parentHash:DATA, 32 байти — хеш батьківського блоку.nonce:DATA, 8 байтів — хеш згенерованого доказу виконання роботи.null, коли це блок, що очікує на розгляд,0x0для блоків із доказом частки (після The Merge)sha3Uncles:DATA, 32 байти — SHA3 даних блоків-дядьків у блоці.logsBloom:DATA, 256 байтів — фільтр Блума для журналів блоку.null, якщо це блок, що очікує на розгляд.transactionsRoot:DATA, 32 байти — корінь дерева транзакцій блоку.stateRoot:DATA, 32 байти — корінь дерева кінцевого стану блоку.receiptsRoot:DATA, 32 байти — корінь дерева квитанцій блоку.miner:DATA, 20 байтів — адреса бенефіціара, якому були надані винагороди за блок.difficulty:QUANTITY— ціле число складності для цього блоку.totalDifficulty:QUANTITY— ціле число загальної складності ланцюга до цього блоку.extraData:DATA— поле «додаткові дані» цього блоку.size:QUANTITY— ціле число, розмір цього блоку в байтах.gasLimit:QUANTITY— максимальний обсяг газу, дозволений у цьому блоці.gasUsed:QUANTITY— загальний обсяг газу, використаний усіма транзакціями в цьому блоці.timestamp:QUANTITY— мітка часу Unix, коли блок був зібраний.transactions:Array— масив об'єктів транзакцій або 32-байтові хеші транзакцій залежно від останнього наданого параметра.uncles:Array— масив хешів блоків-дядьків.
Приклад
1// Запит2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}'3// Результат4{5 "jsonrpc": "2.0",6 "id": 1,7 "result": {8 "difficulty": "0x4ea3f27bc",9 "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32",10 "gasLimit": "0x1388",11 "gasUsed": "0x0",12 "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",13 "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",14 "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171",15 "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843",16 "nonce": "0x689056015818adbe",17 "number": "0x1b4",18 "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54",19 "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",20 "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",21 "size": "0x220",22 "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d",23 "timestamp": "0x55ba467c",24 "totalDifficulty": "0x78ed983323d",25 "transactions": [26 ],27 "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",28 "uncles": [29 ]30 }31}Показати всеeth_getBlockByNumber
Повертає інформацію про блок за номером блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
QUANTITY|TAG— ціле число, що позначає номер блоку, або рядок"earliest","latest","pending","safe"чи"finalized", як у параметрі блоку.Boolean— якщоtrue, повертає повні об’єкти транзакцій, якщоfalse— лише хеші транзакцій.
1params: [2 "0x1b4", // 4363 true,4]Повертає Див. eth_getBlockByHash
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}'Результат див. у eth_getBlockByHash
eth_getTransactionByHash
Повертає інформацію про транзакцію за хешем транзакції.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 32 байти - хеш транзакції
1params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]Повертає
Object — об’єкт транзакції або null, якщо транзакція не знайдена:
blockHash:DATA, 32 байти — хеш блоку, у якому була ця транзакція.null, якщо вона очікує на розгляд.blockNumber:QUANTITY— номер блоку, у якому була ця транзакція.null, якщо вона очікує на розгляд.from:DATA, 20 байтів — адреса відправника.gas:QUANTITY— газ, наданий відправником.gasPrice:QUANTITY— ціна газу, надана відправником, у Wei.hash:DATA, 32 байти — хеш транзакції.input:DATA— дані, надіслані разом із транзакцією.nonce:QUANTITY— кількість транзакцій, здійснених відправником до цієї.to:DATA, 20 байтів — адреса одержувача.null, якщо це транзакція створення контракту.transactionIndex:QUANTITY— ціле число, що позначає позицію індексу транзакцій у блоці.null, якщо вона очікує на розгляд.value:QUANTITY— передане значення у Wei.v:QUANTITY— ідентифікатор відновлення ECDSAr:QUANTITY— підпис ECDSA rs:QUANTITY— підпис ECDSA s
Приклад
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}Показати всеeth_getTransactionByBlockHashAndIndex
Повертає інформацію про транзакцію за хешем блоку та позицією індексу транзакції.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 32 байти - хеш блоку.QUANTITY— ціле число, що позначає позицію індексу транзакції.
1params: [2 "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",3 "0x0", // 04]Повертає Див. eth_getTransactionByHash
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'Результат див. у eth_getTransactionByHash
eth_getTransactionByBlockNumberAndIndex
Повертає інформацію про транзакцію за номером блоку та позицією індексу транзакції.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
QUANTITY|TAG— номер блоку або рядок"earliest","latest","pending","safe"чи"finalized", як у параметрі блоку.QUANTITY— позиція індексу транзакції.
1params: [2 "0x9c47cf", // 102419993 "0x24", // 364]Повертає Див. eth_getTransactionByHash
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x9c47cf", "0x24"],"id":1}'Результат див. у eth_getTransactionByHash
eth_getTransactionReceipt
Повертає квитанцію про транзакцію за хешем транзакції.
Примітка Квитанція недоступна для транзакцій, що очікують на розгляд.
Параметри
DATA, 32 байти - хеш транзакції
1params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"]Повертає
Object — об'єкт квитанції про транзакцію або null, якщо квитанцію не знайдено:
transactionHash:DATA, 32 байти — хеш транзакції.transactionIndex:QUANTITY— ціле число, що позначає позицію індексу транзакцій у блоці.blockHash:DATA, 32 байти — хеш блоку, у якому була ця транзакція.blockNumber:QUANTITY— номер блоку, у якому була ця транзакція.from:DATA, 20 байтів — адреса відправника.to:DATA, 20 байтів — адреса одержувача. null, якщо це транзакція створення контракту.cumulativeGasUsed:QUANTITY- загальна кількість газу, використана під час виконання цієї транзакції в блоці.effectiveGasPrice:QUANTITY— сума базової комісії та чайових, сплачених за одиницю газу.gasUsed:QUANTITY- кількість газу, використана лише цією конкретною транзакцією.contractAddress:DATA, 20 байтів — створена адреса контракту, якщо транзакція була створенням контракту, інакше —null.logs:Array— масив об'єктів журналу, згенерованих цією транзакцією.logsBloom:DATA, 256 байтів — фільтр Блума для легких клієнтів, що дає змогу швидко отримувати пов'язані журнали.type:QUANTITY— ціле число, що позначає тип транзакції,0x0для застарілих транзакцій,0x1для типів списку доступу,0x2для динамічних комісій.
Він також повертає одне з:
root:DATA32 байти кореня стану після транзакції (до оновлення Byzantium)status:QUANTITYабо1(успіх), або0(невдача)
Приклад
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, // рядок адреси, якщо він був створений12 "cumulativeGasUsed": "0xa12515",13 "effectiveGasPrice": "0x5a9c688d4",14 "from": "0x6221a9c005f6e47eb398fd867784cacfdcfff4e7",15 "gasUsed": "0xb4c8",16 "logs": [{17 // журнали, повернуті getFilterLogs тощо.18 }],19 "logsBloom": "0x00...0", // 256-байтовий фільтр Блума20 "status": "0x1",21 "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",22 "transactionHash":23 "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5",24 "transactionIndex": "0x66",25 "type": "0x2"26 }27}Показати всеeth_getUncleByBlockHashAndIndex
Повертає інформацію про анкл-блок за хешем і позицією індексу анкл-блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
DATA, 32 байти — хеш блоку.QUANTITY— позиція індексу блоку-дядька.
1params: [2 "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",3 "0x0", // 04]Повертає Див. eth_getBlockByHash
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'Результат див. у eth_getBlockByHash
Примітка: Блок-дядько не містить окремих транзакцій.
eth_getUncleByBlockNumberAndIndex
Повертає інформацію про анкл-блок за номером і позицією індексу анкл-блоку.
Спробувати кінцеву точку на ігровому майданчикуopens in a new tabПараметри
QUANTITY|TAG— номер блоку або рядок"earliest","latest","pending","safe"чи"finalized", як у параметрі блоку.QUANTITY— позиція індексу блоку-дядька.
1params: [2 "0x29c", // 6683 "0x0", // 04]Повертає Див. eth_getBlockByHash
Примітка: Блок-дядько не містить окремих транзакцій.
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'Результат див. у eth_getBlockByHash
eth_newFilter
Створює об’єкт фільтра на основі параметрів фільтра для сповіщення про зміну стану (журналів). Щоб перевірити, чи змінився стан, викличте eth_getFilterChanges.
Примітка щодо вказування фільтрів тем: Теми залежать від порядку. Транзакція з журналом з темами [A, B] буде відповідати наступним фільтрам тем:
[]"будь-що"[A]"A на першій позиції (і будь-що після)"[null, B]"будь-що на першій позиції ТА B на другій позиції (і будь-що після)"[A, B]"A на першій позиції ТА B на другій позиції (і будь-що після)"[[A, B], [A, B]]"(A АБО B) на першій позиції ТА (A АБО B) на другій позиції (і будь-що після)"- Параметри
Object— параметри фільтра:
fromBlock:QUANTITY|TAG— (необов'язково, за замовчуванням:"latest") цілочисельний номер блоку, або"latest"для останнього запропонованого блоку,"safe"для останнього безпечного блоку,"finalized"для останнього фіналізованого блоку, або"pending","earliest"для транзакцій, які ще не в блоці.toBlock:QUANTITY|TAG— (необов'язково, за замовчуванням:"latest") цілочисельний номер блоку, або"latest"для останнього запропонованого блоку,"safe"для останнього безпечного блоку,"finalized"для останнього фіналізованого блоку, або"pending","earliest"для транзакцій, які ще не в блоці.address:DATA|Array, 20 байтів — (необов’язково) адреса контракту або список адрес, з яких мають походити журнали.topics:Array of DATA, - (необов'язково) масив 32-байтовихDATAтем. Теми залежать від порядку. Кожна тема також може бути масивом DATA з опціями «або».
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]Показати всеПовертає
QUANTITY — ідентифікатор фільтра.
Приклад
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}eth_newBlockFilter
Створює фільтр у вузлі, щоб сповіщати про надходження нового блоку. Щоб перевірити, чи змінився стан, викличте eth_getFilterChanges.
Параметри Немає
Повертає
QUANTITY — ідентифікатор фільтра.
Приклад
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}eth_newPendingTransactionFilter
Створює фільтр у вузлі, щоб сповіщати про надходження нових транзакцій, що очікують на розгляд. Щоб перевірити, чи змінився стан, викличте eth_getFilterChanges.
Параметри Немає
Повертає
QUANTITY — ідентифікатор фільтра.
Приклад
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}eth_uninstallFilter
Видаляє фільтр із вказаним ідентифікатором. Слід завжди викликати, коли спостереження більше не потрібне. Крім того, час очікування фільтрів спливає, якщо їх не запитують за допомогою eth_getFilterChanges протягом певного періоду.
Параметри
QUANTITY— ідентифікатор фільтра.
1params: [2 "0xb", // 113]Повертає
Boolean — true, якщо фільтр успішно видалено, інакше false.
Приклад
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}eth_getFilterChanges
Метод опитування для фільтра, який повертає масив журналів, що з'явилися з моменту останнього опитування.
Параметри
QUANTITY— ідентифікатор фільтра.
1params: [2 "0x16", // 223]Повертає
Array — масив об'єктів журналу або порожній масив, якщо з моменту останнього опитування нічого не змінилося.
-
Для фільтрів, створених за допомогою
eth_newBlockFilter, повертаються хеші блоків (DATA, 32 байти), наприклад,["0x3454645634534..."]. -
Для фільтрів, створених за допомогою
eth_newPendingTransactionFilter, повертаються хеші транзакцій (DATA, 32 байти), наприклад["0x6345343454645..."]. -
Для фільтрів, створених за допомогою
eth_newFilter, журнали є об'єктами з такими параметрами:removed:TAG—true, якщо журнал було видалено через реорганізацію ланцюга.false, якщо це дійсний журнал.logIndex:QUANTITY— ціле число, що позначає позицію індексу журналу в блоці.null, якщо це журнал, що очікує на розгляд.transactionIndex:QUANTITY— ціле число, що позначає позицію індексу транзакцій, з якого було створено журнал.null, якщо це журнал, що очікує на розгляд.transactionHash:DATA, 32 байти — хеш транзакцій, з яких було створено цей журнал.null, якщо це журнал, що очікує на розгляд.blockHash:DATA, 32 байти — хеш блоку, у якому був цей журнал.null, якщо вона очікує на розгляд.null, якщо це журнал, що очікує на розгляд.blockNumber:QUANTITY— номер блоку, у якому був цей журнал.null, якщо вона очікує на розгляд.null, якщо це журнал, що очікує на розгляд.address:DATA, 20 байтів — адреса, з якої походить цей журнал.data:DATA— неіндексовані дані журналу змінної довжини. (У solidity: нуль або більше 32-байтових неіндексованих аргументів журналу.)topics:Array of DATA— масив від 0 до 4 32-байтовихDATAіндексованих аргументів журналу. (У solidity: першою темою є хеш підпису події (наприклад,Deposit(address,bytes32,uint256)), за винятком випадків, коли ви оголосили подію зі специфікаторомanonymous.)
-
Приклад
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}Показати всеeth_getFilterLogs
Повертає масив усіх журналів, що відповідають фільтру з вказаним ідентифікатором.
Параметри
QUANTITY— ідентифікатор фільтра.
1params: [2 "0x16", // 223]Повертає Див. eth_getFilterChanges
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'Результат див. у eth_getFilterChanges
eth_getLogs
Повертає масив усіх журналів, що відповідають заданому об'єкту фільтра.
Параметри
Object— параметри фільтра:
fromBlock:QUANTITY|TAG— (необов'язково, за замовчуванням:"latest") цілочисельний номер блоку, або"latest"для останнього запропонованого блоку,"safe"для останнього безпечного блоку,"finalized"для останнього фіналізованого блоку, або"pending","earliest"для транзакцій, які ще не в блоці.toBlock:QUANTITY|TAG— (необов'язково, за замовчуванням:"latest") цілочисельний номер блоку, або"latest"для останнього запропонованого блоку,"safe"для останнього безпечного блоку,"finalized"для останнього фіналізованого блоку, або"pending","earliest"для транзакцій, які ще не в блоці.address:DATA|Array, 20 байтів — (необов’язково) адреса контракту або список адрес, з яких мають походити журнали.topics:Array of DATA, - (необов'язково) масив 32-байтовихDATAтем. Теми залежать від порядку. Кожна тема також може бути масивом DATA з опціями «або».blockHash:DATA, 32 байти — (необов'язково, майбутнє) з додаванням EIP-234,blockHashстане новим параметром фільтра, який обмежує повернуті журнали одним блоком з 32-байтовим хешемblockHash. ВикористанняblockHashеквівалентноfromBlock=toBlock= номер блоку з хешемblockHash. ЯкщоblockHashприсутній у критеріях фільтра, то ніfromBlock, ніtoBlockне дозволяються.
1params: [2 {3 topics: [4 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",5 ],6 },7]Повертає Див. eth_getFilterChanges
Приклад
1// Request2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}'Результат див. у eth_getFilterChanges
Приклад використання
Розгортання контракту за допомогою JSON-RPC
Цей розділ містить демонстрацію того, як розгорнути контракт, використовуючи лише інтерфейс RPC. Існують альтернативні способи розгортання контрактів, де ця складність абстрагована — наприклад, за допомогою бібліотек, побудованих на основі інтерфейсу RPC, таких як web3.jsopens in a new tab та web3.pyopens in a new tab. Ці абстракції, як правило, легші для розуміння та менш схильні до помилок, але все ж корисно розуміти, що відбувається «під капотом».
Нижче наведено простий смарт-контракт під назвою Multiply7, який буде розгорнуто за допомогою інтерфейсу JSON-RPC на вузлі Ethereum. Цей посібник передбачає, що читач уже має запущений вузол Geth. Більше інформації про вузли та клієнти доступно тут. Будь ласка, зверніться до документації окремих клієнтів, щоб дізнатися, як запустити HTTP JSON-RPC для клієнтів, відмінних від Geth. Більшість клієнтів за замовчуванням обслуговують на localhost:8545.
1contract Multiply7 {2 event Print(uint);3 function multiply(uint input) returns (uint) {4 Print(input * 7);5 return input * 7;6 }7}Перше, що потрібно зробити, це переконатися, що інтерфейс HTTP RPC увімкнено. Це означає, що ми надаємо Geth прапор --http під час запуску. У цьому прикладі ми використовуємо вузол Geth у приватному ланцюжку розробки. Використовуючи цей підхід, нам не потрібен етер у реальній мережі.
geth --http --dev console 2>>geth.logЦе запустить інтерфейс HTTP RPC на http://localhost:8545.
Ми можемо перевірити, що інтерфейс працює, отримавши адресу coinbase (отримавши першу адресу з масиву облікових записів) та баланс за допомогою curlopens in a new tab. Зверніть увагу, що дані в цих прикладах будуть відрізнятися на вашому локальному вузлі. Якщо ви хочете спробувати ці команди, замініть параметри запиту в другому запиті curl на результат, повернутий першим.
curl --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[], "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"}Оскільки числа закодовані в шістнадцятковому форматі, баланс повертається в wei у вигляді шістнадцяткового рядка. Якщо ми хочемо мати баланс в етерах як число, ми можемо використовувати web3 з консолі Geth.
1web3.fromWei("0x1639e49bba16280000", "ether")2// "410"Тепер, коли в нашому приватному ланцюжку розробки є трохи етеру, ми можемо розгорнути контракт. Перший крок — скомпілювати контракт Multiply7 у байт-код, який можна надіслати в EVM. Щоб установити solc, компілятор Solidity, дотримуйтесь документації Solidityopens in a new tab. (Можливо, ви захочете використати старішу версію solc, щоб вона відповідала версії компілятора, використаній у нашому прикладіopens in a new tab.)
Наступним кроком є компіляція контракту Multiply7 у байт-код, який можна надіслати до EVM.
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Тепер, коли у нас є скомпільований код, нам потрібно визначити, скільки газу коштує його розгортання. Інтерфейс RPC має метод eth_estimateGas, який дасть нам оцінку.
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"}І нарешті, розгорніть контракт.
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"}Транзакція приймається вузлом, і повертається хеш транзакції. Цей хеш можна використовувати для відстеження транзакції. Наступний крок — визначити адресу, за якою розгорнуто наш контракт. Кожна виконана транзакція створить квитанцію. Ця квитанція містить різну інформацію про транзакцію, наприклад, у якому блоці було включено транзакцію та скільки газу було використано EVM. Якщо транзакція
створює контракт, вона також міститиме адресу контракту. Ми можемо отримати квитанцію за допомогою методу eth_getTransactionReceipt RPC.
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"}}Наш контракт було створено за адресою 0x4d03d617d700cf81935d7f797f4e2ae719648262. Результат null замість квитанції означає, що транзакцію ще не включено до блоку. Зачекайте трохи, перевірте, чи запущений ваш клієнт консенсусу, і повторіть спробу.
Взаємодія зі смарт-контрактами
У цьому прикладі ми надішлемо транзакцію за допомогою eth_sendTransaction до методу multiply контракту.
eth_sendTransaction вимагає кілька аргументів, а саме from, to і data. From — це публічна адреса нашого облікового запису, а to — адреса контракту. Аргумент data містить корисне навантаження, яке визначає, який метод потрібно викликати і з якими аргументами. Саме тут у гру вступає ABI (двійковий інтерфейс програми)opens in a new tab. ABI — це JSON-файл, який визначає, як визначати та кодувати дані для EVM.
Байти корисного навантаження визначають, який метод у контракті викликається. Це перші 4 байти з хешу Keccak від імені функції та типів її аргументів, закодовані в шістнадцятковому форматі. Функція multiply приймає uint, що є псевдонімом для uint256. У результаті ми отримуємо:
1web3.sha3("multiply(uint256)").substring(0, 10)2// "0xc6888fa1"Наступним кроком є кодування аргументів. Існує лише один uint256, скажімо, значення 6. ABI має розділ, який визначає, як кодувати типи uint256.
int<M>: enc(X) — це кодування X у форматі доповняльного коду з порядком від старшого до молодшого (big-endian), доповнене з боку старшого розряду (ліворуч) 0xff для від’ємних X і нульовими байтами для додатних X, таким чином, щоб довжина була кратною 32 байтам.
Це кодується в 0000000000000000000000000000000000000000000000000000000000000006.
Поєднавши селектор функції та закодований аргумент, наші дані матимуть вигляд 0xc6888fa10000000000000000000000000000000000000000000000000000000000000006.
Тепер це можна надіслати на вузол:
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"}Оскільки транзакцію було надіслано, було повернуто хеш транзакції. Отримання квитанції дає:
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}Показати всеКвитанція містить журнал. Цей журнал був згенерований EVM під час виконання транзакції та включений у квитанцію. Функція multiply показує, що подія Print була викликана з вхідним значенням, помноженим на 7. Оскільки аргументом для події Print було uint256, ми можемо розшифрувати його відповідно до правил ABI, що дасть нам очікуване десяткове значення 42. Крім даних, варто зазначити, що теми можна використовувати для визначення того, яка подія створила запис у журналі:
1web3.sha3("Print(uint256)")2// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"Це був лише короткий вступ до деяких з найпоширеніших завдань, що демонструє пряме використання JSON-RPC.