{"id":13720600,"url":"https://github.com/sambacha/ethereum-api","last_synced_at":"2025-06-15T18:35:11.350Z","repository":{"id":54666838,"uuid":"300817883","full_name":"sambacha/ethereum-api","owner":"sambacha","description":"Solidity API contract design information for utilizing RPC/RESTful Node Interaction  and GraphQL","archived":false,"fork":false,"pushed_at":"2021-10-05T03:06:36.000Z","size":14138,"stargazers_count":23,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-02T23:38:26.692Z","etag":null,"topics":["abi","api","besu","coinbase","contracts","ethereum","evm","graphql","hyperledger","openapi","potsman","rosetta","smart","smartcontract","solidity","swagger"],"latest_commit_sha":null,"homepage":"https://api.besu.io","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sambacha.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-03T07:02:14.000Z","updated_at":"2024-07-09T09:51:17.000Z","dependencies_parsed_at":"2022-08-13T23:20:18.119Z","dependency_job_id":null,"html_url":"https://github.com/sambacha/ethereum-api","commit_stats":null,"previous_names":["sambacha/besu-api"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sambacha%2Fethereum-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sambacha%2Fethereum-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sambacha%2Fethereum-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sambacha%2Fethereum-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sambacha","download_url":"https://codeload.github.com/sambacha/ethereum-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252525992,"owners_count":21762411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abi","api","besu","coinbase","contracts","ethereum","evm","graphql","hyperledger","openapi","potsman","rosetta","smart","smartcontract","solidity","swagger"],"created_at":"2024-08-03T01:01:05.687Z","updated_at":"2025-05-05T15:47:46.903Z","avatar_url":"https://github.com/sambacha.png","language":null,"funding_links":[],"categories":["Other repositories"],"sub_categories":[],"readme":":url-project: https://sambacha.github.io/besu-api\n:url-docs:  https://sambacha.github.io/besu-api\n:url-org: https://sambacha.github.io/\n:url-group: {url-org}/besu-api\n:url-site-readme: {url-group}/besu-api/blob/master/README.adoc\n:url-besu: https://besu.hyperledger.org/\n:public-key: /gpg/6F6EB43E.asc\n:active-key: {url-group}{public-key}\n:docbook:\n\n:toc: \n= API-first Smart Contract Design \n\n\n== Run JSON RPC in Postman\n\nimage::https://run.pstmn.io/button.svg[link=\"https://god.postman.co/run-collection/1231c564d4789c586507\"]\n\n\n== View the JSON RPC API \n\nlink:https://api.besu.io[View Postman Catalog]\n\nlink:https://sambacha.github.io/besu-api/[View the JSON RPC Catalog]\n\n:description: Optimizing solidity contracts for API access, focusing on Hyperledger Besu \n\n3 Main Ways of Designing an API for Contract Interaction\n\n- Direct RPC / IPC (e.g. direct polling to a client such as Geth)\n- 3rd Party Provider (e.g. Infura/Alchemey/Quicknode) also The Graph.\n- Middleware Client (e.g. Kafka Broker or some other MQ)\n\n== Service Providers\n\nlink:https://dashboard.alchemyapi.io/signup?referral=496d4069-ca19-4c95-9cee-cd15c699a355[Alchemyapi Referral]\n\n\n== Schemas \n\nUse these to help design how to best interact with a node\n\n- Truffle Contract Object\n- Chain State\n- Sample Postman API's\n- Besu RPC Postman Deff. \n\n== Connectivity to Ethereum Mainnet\n\n=== Cloudflare JSON-RPC Gateway\n\nlink:cloudflare-eth.com/[cloudflare-eth.com]\n\nlink:https://www.cloudflare.com/distributed-web-gateway/#ethereum-gateway[cloudflare.com/distributed-web-gateway/#ethereum-gateway]\n\n==== Setup DNS\nGo to your DNS settings for your domain. If your website is on Cloudflare, the DNS settings are accessible from your \ndashboard. If your website is not on Cloudflare, and you need help finding the DNS records, see here.\n\n==== Create `CNAME` Record Pointing to `https://cloudflare-eth.com/`\n\nAdd a CNAME record from your domain (e.g. www.example.com) to cloudflare-eth.com Note: if your website is on Cloudflare, the \nlittle cloud next to this record will automatically turn gray. Because you’ve CNAME’d to our gateway, you’ll automatically \nreceive Cloudflare's enterprise-level performance and security enhancements, but you won’t be able to control those settings \nyourself.\n\nOnce you have added those records:\n- Type your domain name (e.g. www.example.com) into the text box below and click \"Submit\".\n\nThis will generate an SSL certificate, which will allow traffic from your domain to be served securely over HTTPS. Be prepared \nto wait up to 90 seconds. You will receive a confirmation message when the certificate has been successfully issued. When this \nhas been issued, then any Ethereum RPC query to your website will automatically resolve to https://cloudflare-eth.com/ and the \nresponse will be served from the Ethereum network.\n\n\u003e Note: Ensure you have configured any CAA Policies to enable Cloudflare to issue a certificate \n\n\n== API Design Overview \n\n- JSON RPC\n- RESTful API\n- GraphQL \n\nTransaction mining causes smart contracts to emit events and write logs to the blockchain.\n\nThe smart contract address is the link to the logs and the blockchain includes the logs, but\ncontracts cannot access logs. Log storage is cheaper than contract storage (that is, it costs less\ngas) so storing and accessing the required data in logs reduces the cost. For example, use logs to\ndisplay all transfers made using a specific contract, but not the current state of the contract.\n\nA Dapp front end can either access logs using the\nxref:../HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.adoc[JSON-RPC API filter methods] or\nsubscribe to logs using the link:../HowTo/Interact/APIs/RPC-PubSub.md#logs[RPC Pub/Sub API].\n\nUse link:../Reference/API-Methods.md#admin_generatelogbloomcache[`admin_generateLogBloomCache`] to\nimprove log retrieval performance.\n\n\n\n== Events in Solidity\n\nSolidity provides two types of events, **anonymous** and **non-anonymous**. The default is non-anonymous, and most developers will not need to worry about anonymous events.\n\nFor non-anonymous events, up to 3 topics may be indexed (instead of 4), since the first topic is reserved to specify the event signature. This allows non-anonymous events to always be filtered by their event signature.\n\nThis topic hash is always in the first slot of the indexed data, and is computed by normalizing the Event signature and taking the keccak256 hash of it.\n\nFor anonymous events, up to 4 topics may be indexed, and there is no signature topic hash, so the events cannot be filtered by the event signature.\n\nEach additional indexed property is processed depending on whether its length is fixed or dynamic.\n\nFor fixed length types (e.g. uint, bytes5), all of which are internally exactly 32 bytes (shorter types are padded with zeros; numeric values are padded on the left, data values padded on the right), these are included directly by their actual value, 32 bytes of data.\n\nFor dynamic types (e.g. string, uint256[]) , the value is hashed using keccak256 and this hash is used.\n\nBecause dynamic types are hashed, there are important consequences in parsing events that should be kept in mind. Mainly that the original value is lost in the event. So, it is possible to tell is a topic is equal to a given string, but if they do not match, there is no way to determine what the value was.\n\nIf a developer requires that a string value is required to be both able to be filtered and also able to be read, the value must be included in the signature twice, once indexed and once non-indexed (e.g. someEvent(string indexed searchBy, string clearText)).\n\nFor a more detailed description, please refer to the https://docs.soliditylang.org/en/v0.8.1/abi-spec.html#events Solidity Event Documentation \n\n=== Example of Event Indexing \n\n[source, javascript]\n-----------------\n// Short example of manually creating filters for an ERC-20\n// Transfer event.\n//\n// Most users should generally use the Contract API to\n// compute filters, as it is much simpler, but this is\n// provided as an illustration for those curious. See\n// below for examples of the equivalent Contract API.\n\n// ERC-20:\n//   Transfer(address indexed src, address indexed dst, uint val\n//\n// -------------------^\n// ----------------------------------------^\n//\n// Notice that only *src* and *dst* are *indexed*, so ONLY they\n// qualify for filtering.\n//\n// Also, note that in Solidity an Event uses the first topic to\n// identify the Event name; for Transfer this will be:\n//   id(\"Transfer(address,address,uint256)\")\n//\n// Other Notes:\n//  - A topic must be 32 bytes; so shorter types must be padded\n\n// List all token transfers  *from*  myAddress\nfilter = {\n    address: tokenAddress,\n    topics: [\n        id(\"Transfer(address,address,uint256)\"),\n        hexZeroPad(myAddress, 32)\n    ]\n}\n\n// List all token transfers  *to*  myAddress:\nfilter = {\n    address: tokenAddress,\n    topics: [\n        id(\"Transfer(address,address,uint256)\"),\n        null,\n        hexZeroPad(myAddress, 32)\n    ]\n}\n\n// List all token transfers  *to*  myAddress or myOtherAddress:\nfilter = {\n    address: tokenAddress,\n    topics: [\n        id(\"Transfer(address,address,uint256)\"),\n        null,\n        [\n            hexZeroPad(myAddress, 32),\n            hexZeroPad(myOtherAddress, 32),\n        ]\n    ]\n}\n-----------------\n\n\n== DotEnv Configuration\n\nThese settings directly affect query/response time for Hyperledger Besu\n\n[source, cfg]\n-----------------\nBLOCKS_PER_BLOOM_CACHE=\nexport BESU_OPTS=\"--add-opens java.base/sun.security.provider=ALL-UNNAMED\"\nset BESU_OPTS=\"--add-opens java.base/sun.security.provider=ALL-UNNAMED\"\nBLOCKS_PER_BLOOM_CACHE\nBESU_AUTO_LOG_BLOOM_CACHING_ENABLED=false\nBESU_KEY_VALUE_STORAGE=rocksdb\nBESU_LOGGING=DEBUG\n-----------------\n\n== Topics\n\nLog entries contain up to four topics. The first topic is the\n\u003c\u003cevent-signature-hash,event signature hash\u003e\u003e and up to three topics are the indexed\n\u003c\u003cevent-parameters,event parameters\u003e\u003e.\n\n\u003e Example 1\n\n\nA log entry for an event with one indexed parameter:\n\n[source,json]\n-----------------\n{\n  \"logIndex\": \"0x0\",\n  \"removed\": false,\n  \"blockNumber\": \"0x84\",\n  \"blockHash\": \"0x5fc573d76ec48ec80cbc43f299ebc306a8168112e3a4485c23e84e9a40f5d336\",\n  \"transactionHash\": \"0xcb52f02342c2498df82c49ac26b2e91e182155c8b2a2add5b6dc4c249511f85a\",\n  \"transactionIndex\": \"0x0\",\n  \"address\": \"0x42699a7612a82f1d9c36148af9c77354759b210b\",\n  \"data\": \"0x\",\n  \"topics\": [\n    \"0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3\",\n    \"0x0000000000000000000000000000000000000000000000000000000000000001\"\n  ]\n}\n-----------------\n\n== Event parameters\n\nUp to three event parameters can have the `indexed` attribute. Logs store these indexed parameters\nas `topics`. Indexed parameters are searchable and filterable.\n\nTopics are 32 bytes. If an indexed argument is an array (including `string` and `byte` datatypes),\nthe log stores the keccak-256 hash of the paramater as a topic.\n\nLog `data` includes non-indexed parameters but is difficult to search or filter.\n\n\u003e Example 2\n\n\nA Solidity contract storing one indexed and one non-indexed parameter and has an event emitting\nthe value of each parameter:\n\n\n* Storage.sol:\n+\n[source, solidity]\n-----------------\npragma solidity ^0.5.1;\ncontract Storage {\n  uint256 public valueIndexed;\n  uint256 public valueNotIndexed;\n\n  event Event1(uint256 indexed valueIndexed, uint256 valueNotIndexed);\n\n  function setValue(uint256 _valueIndexed, uint256 _valueNotIndexed) public {\n    valueIndexed = _valueIndexed;\n    valueNotIndexed = _valueNotIndexed;\n    emit Event1(_valueIndexed, _valueNotIndexed);\n  }\n}\n-----------------\n\n\u003e Example 3\n\n\nA log entry created by invoking the contract in the previous example with `valueIndexed` set to\n5 and `valueNotIndexed` set to 7:\n\n\n[source,json]\n-----------------\n {\n   \"logIndex\": \"0x0\",\n   \"removed\": false,\n   \"blockNumber\": \"0x4d6\",\n   \"blockHash\": \"0x7d0ac7c12ac9f622d346d444c7e0fa4dda8d4ed90de80d6a28814613a4884a67\",\n   \"transactionHash\": \"0xe994022ada94371ace00c4e1e20663a01437846ced02f18b3f3afec827002781\",\n   \"transactionIndex\": \"0x0\",\n   \"address\": \"0x43d1f9096674b5722d359b6402381816d5b22f28\",\n   \"data\": \"0x0000000000000000000000000000000000000000000000000000000000000007\",\n   \"topics\": [\n    \"0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8\",\n    \"0x0000000000000000000000000000000000000000000000000000000000000005\"\n   ]\n }\n-----------------\n\n== Event signature hash\n\nThe first topic in a log entry is always the event signature hash. The event signature hash is\na keccak-256 hash of the event name and input argument types, with argument names ignored. For\nexample, the event `Hello(uint256 worldId)` has the signature hash `keccak('Hello(uint256)')`. The\nsignature identifies to which event log topics belong.\n\n\u003e Example 4\n\n\nA Solidity contract with two different events:\n\n* Storage.sol:\n+\n[source, solidity]\n-----------------\npragma solidity ^0.5.1;\n\ncontract Storage {\n\nuint256 public valueA;\nuint256 public valueB;\n\n     event Event1(uint256 indexed valueA);\n     event Event2(uint256 indexed valueB);\n\n     function setValue(uint256 _valueA) public {\n       valueA = _valueA;\n       emit Event1(_valueA);\n     }\n\n     function setValueAgain(uint256 _valueB) public {\n       valueB = _valueB;\n       emit Event2(_valueB);\n     }\n   }\n-----------------\n\nThe event signature hash for event 1 is `keccak('Event1(uint256)')` and the event signature hash\nfor event 2 is `keccak('Event2(uint256)')`. The hashes are:\n\n* `04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3` for **event 1**\n* `06df6fb2d6d0b17a870decb858cc46bf7b69142ab7b9318f7603ed3fd4ad240e` for **event 2.**\n\n\u003e Informative\n\n You can use a library keccak (sha3) hash function, such as provided in\n [Web3.js](https://web3js.readthedocs.io/en/v1.2.11/web3-utils.html?highlight=sha3#sha3), or an online tool,\n such as link:https://emn178.github.io/online-tools/keccak_256.html, to generate event signature\n hashes.\n\n\u003e Example 5\n\n\nLog entries from invoking the Solidity contract in the previous example:\n\n[source, json]\n-----------------\n[\n  {\n    \"logIndex\": \"0x0\",\n    \"removed\": false,\n    \"blockNumber\": \"0x84\",\n    \"blockHash\": \"0x5fc573d76ec48ec80cbc43f299ebc306a8168112e3a4485c23e84e9a40f5d336\",\n    \"transactionHash\": \"0xcb52f02342c2498df82c49ac26b2e91e182155c8b2a2add5b6dc4c249511f85a\",\n    \"transactionIndex\": \"0x0\",\n    \"address\": \"0x42699a7612a82f1d9c36148af9c77354759b210b\",\n    \"data\": \"0x\",\n    \"topics\": [\n      \"0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3\",\n      \"0x0000000000000000000000000000000000000000000000000000000000000001\"\n    ]\n  },\n  {\n    \"logIndex\": \"0x0\",\n    \"removed\": false,\n    \"blockNumber\": \"0x87\",\n    \"blockHash\": \"0x6643a1e58ad857f727552e4572b837a85b3ca64c4799d085170c707e4dad5255\",\n    \"transactionHash\": \"0xa95295fcea7df3b9e47ab95d2dadeb868145719ed9cc0e6c757c8a174e1fcb11\",\n    \"transactionIndex\": \"0x0\",\n    \"address\": \"0x42699a7612a82f1d9c36148af9c77354759b210b\",\n    \"data\": \"0x\",\n    \"topics\": [\n      \"0x06df6fb2d6d0b17a870decb858cc46bf7b69142ab7b9318f7603ed3fd4ad240e\",\n      \"0x0000000000000000000000000000000000000000000000000000000000000002\"\n    ]\n  }\n]\n-----------------\n\n\n== Topic filters\n\nlink:../Reference/API-Objects.md#filter-options-object[Filter options objects] have a `topics` key to\nfilter logs by topics.\n\nTopics are order-dependent. A transaction with a log containing topics `[A, B]` matches with the\nfollowing topic filters:\n\n* `[]` - Match any topic\n* `[A]` - Match A in first position\n* `[[null], [B]]` - Match any topic in first position AND B in second position\n* `[[A],[B]]` - Match A in first position AND B in second position\n* `[[A, C], [B, D]]` - Match (A OR C) in first position AND (B OR D) in second position.\n\n\u003e Example 6\n\n\nThe following filter option object returns log entries for the\n[Event Parameters example contract](#event-parameters) with `valueIndexed` set to 5 or 9:\n\n[source, json]\n-----------------\n{\n  \"fromBlock\":\"earliest\",\n  \"toBlock\":\"latest\",\n  \"address\":\"0x43d1f9096674b5722d359b6402381816d5b22f28\",\n  \"topics\":[\n   [\"0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8\"],\n   [\"0x0000000000000000000000000000000000000000000000000000000000000005\", \"0x0000000000000000000000000000000000000000000000000000000000000009\"]\n  ]\n}\n-----------------\n\n\n== Hyperledger Besu EVM API Objects \n\nThe following objects are parameters for or returned by Besu API methods.\n\n=== Block object\n\nReturned by link:API-Methods.md#eth_getblockbyhash[`eth_getBlockByHash`] and link:API-Methods.md#eth_getblockbynumber[`eth_getBlockByNumber`].\n\n|===\n| Key | Type | Value\n\n| *number*\n| _Quantity_, Integer\n| Block number.\n`null` when block is pending.\n\n| *hash*\n| _Data_, 32 bytes\n| Hash of the block.\n`null` when block is pending.\n\n| *parentHash*\n| _Data_, 32 bytes\n| Hash of the parent block.\n\n| *nonce*\n| _Data_, 8 bytes\n| Hash of the generated proof of work.\n`null` when block is pending.\n\n| *sha3Uncles*\n| _Data_, 32 bytes\n| SHA3 of the uncle's data in the block.\n\n| *logsBloom*\n| _Data_, 256 bytes\n| Bloom filter for the block logs.\n`null` when block is pending.\n\n| *transactionsRoot*\n| _Data_, 32 bytes\n| Root of the transaction trie for the block.\n\n| *stateRoot*\n| Data, 32 bytes\n| Root of the final state trie for the block.\n\n| *receiptsRoot*\n| Data, 32 bytes\n| Root of the receipts trie for the block.\n\n| *miner*\n| Data, 20 bytes\n| Address to pay mining rewards to.\n\n| *difficulty*\n| Quantity, Integer\n| Difficulty for this block.\n\n| *totalDifficulty*\n| Quantity, Integer\n| Total difficulty of the chain until this block.\n\n| *extraData*\n| Data\n| Extra data field for this block.\nThe first 32 bytes is vanity data you can set using the link:../Reference/CLI/CLI-Syntax.md#miner-extra-data[`--miner-extra-data`] command line option.\nStores extra data when used with link:../HowTo/Configure/Consensus-Protocols/Clique.md#genesis-file[Clique] and link:../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file[IBFT].\n\n| *size*\n| Quantity, Integer\n| Size of block in bytes.\n\n| *gasLimit*\n| Quantity\n| Maximum gas allowed in this block.\n\n| *gasUsed*\n| Quantity\n| Total gas used by all transactions in this block.\n\n| *timestamp*\n| Quantity\n| Unix timestamp for block assembly.\n\n| *transactions*\n| Array\n| Array of \u003c\u003ctransaction-object,transaction objects\u003e\u003e, or 32 byte transaction hashes depending on the specified boolean parameter.\n\n| *uncles*\n| Array\n| Array of uncle hashes.\n|===\n\n= Filter options object\n\nParameter for link:API-Methods.md#eth_newfilter[`eth_newFilter`], link:API-Methods.md#eth_getlogs[`eth_getLogs`], and link:API-Methods.md#priv_getlogs[`priv_getLogs`].\nUsed to link:../HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.xml[`filter logs`].\n\n|===\n| Key | Type | Required/Optional | Value |\n\n| *fromBlock*\n| Quantity\n| Tag\n| Optional\n| Integer block number or `latest`, `pending`, `earliest`.\nSee link:../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter[Block Parameter].\nDefault is `latest`.\n\n| *toBlock*\n| Quantity\n| Tag\n| Optional\n| Integer block number or `latest`, `pending`, `earliest`.\nSee link:../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter[Block Parameter].\nDefault is `latest`.\n\n| *address*\n| Data\n| Array\n| Optional\n| Contract address or array of addresses from which link:../Concepts/Events-and-Logs.xml[logs] originate.\n\n| *topics*\n| Array of Data, 32 bytes each\n| Optional\n| Array of topics by which to link:../Concepts/Events-and-Logs.md#topic-filters[filter logs].\n|\n|===\n\nlink:API-Methods.md#eth_getlogs[`eth_getLogs`] and link:API-Methods.md#priv_getlogs[`priv_getLogs`] have an extra key.\n\n|===\n| Key | Type | Required/Optional | Value\n\n| *blockhash*\n| Data, 32 bytes\n| Optional.\n| Hash of block for which to return logs.\nIf you specify `blockhash`, you cannot specify `fromBlock` and `toBlock`.\n|===\n\n= Log object\n\nReturned by link:API-Methods.md#eth_getfilterchanges[`eth_getFilterChanges`] and link:API-Methods.md#priv_getlogs[`priv_getLogs`].\n\u003c\u003ctransaction-receipt-object,`Transaction receipt objects`\u003e\u003e can contain an array of log objects.\n\n|===\n| Key | Type | Value\n\n| *removed*\n| Tag\n| `true` if log removed because of a chain reorganization.\n`false` if a valid log.\n\n| *logIndex*\n| Quantity, Integer\n| Log index position in the block.\n`null` when log is pending.\n\n| *transactionIndex*\n| Quantity, Integer\n| Index position of the starting transaction for the log.\n`null` when log is pending.\n\n| *transactionHash*\n| Data, 32 bytes\n| Hash of the starting transaction for the log.\n`null` when log is pending.\n\n| *blockHash*\n| Data, 32 bytes\n| Hash of the block that includes the log.\n`null` when log is pending.\n\n| *blockNumber*\n| Quantity\n| Number of block that includes the log.\n`null` when log is pending.\n\n| *address*\n| Data, 20 bytes\n| Address the log originated from.\n\n| *data*\n| Data\n| Non-indexed arguments of the log.\n\n| *topics*\n| Array of Data, 32 bytes each\n| link:../Concepts/Events-and-Logs.md#event-signature-hash[Event signature hash] and 0 to 3 link:../Concepts/Events-and-Logs.md#event-parameters[indexed log arguments].\n|===\n\n= Pending transaction object\n\nReturned by link:API-Methods.md#txpool_besupendingtransactions[`txpool_besuPendingTransactions`].\n\n|===\n| Key | Type | Value\n\n| *from*\n| Data, 20 bytes\n| Address of the sender.\n\n| *gas*\n| Quantity\n| Gas provided by the sender.\n\n| *gasPrice*\n| Quantity\n| Gas price, in wei, provided by the sender.\n\n| *hash*\n| Data, 32 bytes\n| Hash of the transaction.\n\n| *input*\n| Data\n| Data sent with the transaction to create or invoke a contract.\n\n| *nonce*\n| Quantity\n| Number of transactions made by the sender before this one.\n\n| *to*\n| Data, 20 bytes\n| Address of the receiver.\n`null` if a contract creation transaction.\n\n| *value*\n| Quantity\n| Value transferred, in wei.\n\n| *v*\n| Quantity\n| ECDSA Recovery ID.\n\n| *r*\n| Data, 32 bytes\n| ECDSA signature r.\n\n| *s*\n| Data, 32 bytes\n| ECDSA signature s.\n|===\n\n= Private transaction object\n\nReturned by link:API-Methods.md#priv_getprivatetransaction[`priv_getPrivateTransaction`].\n\n|===\n| Key | Type | Value\n\n| *from*\n| Data, 20 bytes\n| Address of the sender.\n\n| *gas*\n| Quantity\n| Gas provided by the sender.\n\n| *gasPrice*\n| Quantity\n| Gas price, in Wei, provided by the sender.\n\n| *hash*\n| Data, 32 bytes\n| Hash of the transaction.\n\n| *input*\n| Data\n| The data to create or invoke a contract.\n\n| *nonce*\n| Quantity\n| Number of transactions made by the sender to the privacy group before this one.\n\n| *to*\n| Data, 20 bytes\n| `null` if a contract creation transaction, otherwise, the contract address.\n\n| *value*\n| Quantity\n| `null` because private transactions cannot transfer Ether.\n\n| *v*\n| Quantity\n| ECDSA Recovery ID.\n\n| *r*\n| Data, 32 bytes\n| ECDSA signature r.\n\n| *s*\n| Data, 32 bytes\n| ECDSA signature s.\n\n| *privateFrom*\n| Data, 32 bytes\n| https://docs.orion.pegasys.tech/en/stable/[Orion] public key of the sender.\n\n| *privateFor*\n| Array of Data, 32 bytes each\n| https://docs.orion.pegasys.tech/en/stable/[Orion] public keys of recipients.\nNot returned if using `privacyGroupId` to link:../Concepts/Privacy/Privacy-Groups.md#privacy-types[send the transaction].\n\n| *privacyGroupId*\n| Data, 32 bytes\n| https://docs.orion.pegasys.tech/en/stable/[Orion] privacy group ID of recipients.\nNot returned if using `privateFor` to link:../Concepts/Privacy/Privacy-Groups.md#privacy-types[send the transaction].\n\n| *restriction*\n| String\n| Must be link:../Concepts/Privacy/Private-Transactions.xml[`restricted`].\n|===\n\n= Range object\n\nReturned by link:API-Methods.md#debug_storagerangeat[`debug_storageRangeAt`].\n\n|===\n| Key | Type | Value\n\n| *storage*\n| Object\n| Key hash and value.\nPreimage key is null if it falls outside the cache.\n\n| *nextKey*\n| Hash\n| Hash of next key if further storage in range.\nOtherwise, not included.\n|===\n\n== Structured log object\n\nLog information returned as part of the \u003c\u003ctrace-object,Trace object\u003e\u003e.\n\n|===\n| Key | Type | Value\n\n| *pc*\n| Integer\n| Current program counter.\n\n| *op*\n| String\n| Current OpCode.\n\n| *gas*\n| Integer\n| Gas remaining.\n\n| *gasCost*\n| Integer\n| Cost in wei of each gas unit.\n\n| *depth*\n| Integer\n| Execution depth.\n\n| *exceptionalHaltReasons*\n| Array\n| One or more strings representing an error condition causing the EVM execution to terminate.\nThese strings suggest that EVM execution terminated for reasons such as running out of gas or attempting to execute an unknown instruction.\nGenerally a single exceptional halt reason returns but it's possible for more than one to occur at once.\n\n| *stack*\n| Array of 32 byte arrays\n| EVM execution stack before executing current operation.\n\n| *memory*\n| Array of 32 byte arrays\n| Memory space of the contract before executing current operation.\n\n| *storage*\n| Object\n| Storage entries changed by the current transaction.\n|===\n\n= Trace object\n\nReturned by link:API-Methods.md#debug_traceblock[`debug_traceBlock`], link:API-Methods.md#debug_traceblockbyhash[`debug_traceBlockByHash`], link:API-Methods.md#debug_traceblockbynumber[`debug_traceBlockByNumber`], and link:API-Methods.md#debug_tracetransaction[`debug_traceTransaction`].\n\n|===\n| Key | Type | Value\n\n| *gas*\n| Integer\n| Gas used by the transaction.\n\n| *failed*\n| Boolean\n| True if transaction failed, otherwise, false.\n\n| *returnValue*\n| String\n| Bytes returned from transaction execution (without a `0x` prefix).\n\n| *structLogs*\n| Array\n| Array of structured log objects.\n|===\n\n= Transaction object\n\nReturned by link:API-Methods.md#eth_gettransactionbyhash[`eth_getTransactionByHash`], link:API-Methods.md#eth_gettransactionbyblockhashandindex[`eth_getTransactionByBlockHashAndIndex`], and link:API-Methods.md#eth_gettransactionbyblocknumberandindex[`eth_getTransactionsByBlockNumberAndIndex`].\n\n|===\n| Key | Type | Value\n\n| *blockHash*\n| Data, 32 bytes\n| Hash of the block containing this transaction.\n`null` when transaction is pending.\n\n| *blockNumber*\n| Quantity\n| Block number of the block containing this transaction.\n`null` when transaction is pending.\n\n| *from*\n| Data, 20 bytes\n| Address of the sender.\n\n| *gas*\n| Quantity\n| Gas provided by the sender.\n\n| *gasPrice*\n| Quantity\n| Gas price, in wei, provided by the sender.\n\n| *hash*\n| Data, 32 bytes\n| Hash of the transaction.\n\n| *input*\n| Data\n| Data sent with the transaction to create or invoke a contract.\nFor link:../Concepts/Privacy/Privacy-Overview.xml[private transactions], it's a pointer to the transaction location in https://docs.orion.pegasys.tech/en/stable/[Orion].\n\n| *nonce*\n| Quantity\n| Number of transactions made by the sender before this one.\n\n| *to*\n| Data, 20 bytes\n| Address of the receiver.\n`null` if a contract creation transaction.\n\n| *transactionIndex*\n| Quantity, Integer\n| Index position of the transaction in the block.\n`null` when transaction is pending.\n\n| *value*\n| Quantity\n| Value transferred, in wei.\n\n| *v*\n| Quantity\n| ECDSA Recovery ID.\n\n| *r*\n| Data, 32 bytes\n| ECDSA signature r.\n\n| *s*\n| Data, 32 bytes\n| ECDSA signature s.\n|===\n\n= Transaction call object\n\nParameter for link:API-Methods.md#eth_call[`eth_call`] and link:API-Methods.md#eth_estimategas[`eth_estimateGas`].\n\n!!!note\n\n All parameters are optional for [`eth_estimateGas`](API-Methods.md#eth_estimategas).\n\n|===\n| Key | Type | Required/Optional | Value\n\n| *from*\n| Data, 20 bytes\n| Optional\n| Address of the transaction sender.\n\n| *to*\n| Data, 20 bytes\n| Required\n| Address of the transaction receiver.\n\n| *gas*\n| Quantity, Integer\n| Optional\n| Gas provided for the transaction execution.\n`eth_call` consumes zero gas, but other executions might need this parameter.\n`eth_estimateGas` ignores this value.\n\n| *gasPrice*\n| Quantity, Integer\n| Optional\n| Price used for each paid gas.\n\n| *value*\n| Quantity, Integer\n| Optional\n| Value sent with this transaction.\n\n| *data*\n| Data\n| Optional\n| Hash of the method signature and encoded parameters.\nFor details, see https://solidity.readthedocs.io/en/develop/abi-spec.html[Ethereum Contract ABI].\n|===\n\n= Transaction receipt object\n\nReturned by link:API-Methods.md#eth_gettransactionreceipt[`eth_getTransactionReceipt`].\n\n|===\n| Key | Type | Value\n\n| *blockHash*\n| Data, 32 bytes\n| Hash of block containing this transaction.\n\n| *blockNumber*\n| Quantity\n| Block number of block containing this transaction.\n\n| *contractAddress*\n| Data, 20 bytes\n| Contract address created, if contract creation transaction, otherwise, `null`.\n\n| *cumulativeGasUsed*\n| Quantity\n| Total amount of gas used by previous transactions in the block and this transaction.\n\n| *from*\n| Data, 20 bytes\n| Address of the sender.\n\n| *gasUsed*\n| Quantity\n| Amount of gas used by this specific transaction.\n\n| *logs*\n| Array\n| Array of \u003c\u003clog-object,log objects\u003e\u003e generated by this transaction.\n\n| *logsBloom*\n| Data, 256 bytes\n| Bloom filter for light clients to quickly retrieve related logs.\n\n| *status*\n| Quantity\n| Either `0x1` (success) or `0x0` (failure)\n\n| *to*\n| Data, 20 bytes\n| Address of the receiver, if sending ether, otherwise, null.\n\n| *transactionHash*\n| Data, 32 bytes\n| Hash of the transaction.\n\n| *transactionIndex*\n| Quantity, Integer\n| Index position of transaction in the block.\n\n| *revertReason*\n| String\n| ABI-encoded string that displays the link:../HowTo/Send-Transactions/Revert-Reason.xml[reason for reverting the transaction].\nOnly available if revert reason is link:../Reference/CLI/CLI-Syntax.md#revert-reason-enabled[enabled].\n|===\n\n!!!note\n\n For pre-Byzantium transactions, the transaction receipt object includes the following instead\n of `status`:\n\n|===\n| Key | Type | Value\n\n| *root*\n| Data, 32 bytes\n| Post-transaction stateroot\n|===\n\n= Transaction trace object\n\nReturned by link:API-Methods.md#trace_replayblocktransactions[`trace_replayBlockTransactions`].\n\n|===\n| Key | Type | Value\n\n| *output*\n| Boolean\n| Transaction result.\n1 for success and 0 for failure.\n\n| *stateDiff*\n| Object\n| link:Trace-Types.md#statediff[State changes in the requested block].\n\n| *trace*\n| Array\n| link:Trace-Types.md#trace[Ordered list of calls to other contracts].\n\n| *vmTrace*\n| Object\n| link:Trace-Types.md#vmtrace[Ordered list of EVM actions].\n\n| *transactionHash*\n| Data, 32 bytes\n| Hash of the replayed transaction.\n|===\n\n= Private transaction receipt object\n\nReturned by link:API-Methods.md#priv_getTransactionReceipt[`priv_getTransactionReceipt`].\n\n|===\n| Key | Type | Value\n\n| *contractAddress*\n| Data, 20 bytes\n| Contract address created if a contract creation transaction, otherwise, `null`.\n\n| *from*\n| Data, 20 bytes\n| Address of the sender.\n\n| *output*\n| Data\n| RLP-encoded return value of a contract call if a value returns, otherwise, `null`.\n\n| *commitmentHash*\n| Data, 32 bytes\n| Hash of the privacy marker transaction.\n\n| *transactionHash*\n| Data, 32 bytes\n| Hash of the private transaction.\n\n| *privateFrom*\n| Data, 32 bytes\n| https://docs.orion.pegasys.tech/en/stable/[Orion] public key of the sender.\n\n| *privateFor* or *privacyGroupId*\n| Array or Data, 32 bytes\n| https://docs.orion.pegasys.tech/en/stable/[Orion] public keys or privacy group ID of the recipients.\n\n| *status*\n| Quantity\n| Either `0x1` (success) or `0x0` (failure).\n\n| *logs*\n| Array\n| Array of \u003c\u003clog-object,log objects\u003e\u003e generated by this private transaction.\n|===\n== Data Model\n\nThis section serves to describe the relationships between the various\ncomponents in an . It seeks to present an explicit set of named resource\ntypes and how they relate to one another.\n\nThis data model seeks to identify explicitly any implicit relationships\nand to add semantic color to these. It is a work in progress and likely\nto be incomplete and/or wrong.\n\n=== Projects and Named Resources\n\nCertain resources are _named_, meaning that these entities may be\nreferenced by user-defined semantic identifiers. Since Truffle targets\nthe full development lifecycle, this means names refer to different\nthings at different times.\n\nand , for example, both use names. These resources represent entities\nthat change over time. Contracts are written, rewritten, and/or updated\nmany times between a project's start and past its production deployment.\nDevelopment networks reset, and public networks fork.\n\nTo represent these entities across the entire project lifecycle, Truffle\nDB models names as a linked list of references to immutable entities.\n\nEach Named resource contains the non-nullable string attribute `name`,\nused to index by type.\n\n*NameRecord* can be considered generically to represent a linked list of\ncurrent and past resource name references for a given resource type `T`.\nEach NameRecord has the same `name`, plus the following: - `type` to\nrepresent the underlying named resource type - `resource` to point to\nthe underlying resource - `previous` to point to the previous name\n\nIn order to track the current NameRecords for a given type, the\n*Project* resource serves as the aggregation point for the heads of\nthese linked lists.\n\n!define SHOW_PROJECT !define SHOW_NAME_RECORD !define\nSHOW_NAME_RECORD_INTERNAL\n\n!include uml/macros.iuml\n\n=== Data Model Resources\n\n==== Contracts, Constructors, and Instances\n\nscale 0.75\n\n!define SHOW_CONTRACT !define SHOW_INSTANCE !define SHOW_CONSTRUCTOR\n!define SHOW_INTERFACE\n\n!define SHOW_COMPILATION !define EXTERN_COMPILATION !define\nSHOW_SOURCE_MAP\n\n!define SHOW_BYTECODE !define EXTERN_BYTECODE\n\n!define SHOW_NETWORK !define EXTERN_NETWORK\n\n!include uml/macros.iuml\n\n==== Sources, Bytecodes, and Compilations\n\nscale 0.75\n\n!define SHOW_CONTRACT !define EXTERN_CONTRACT\n\n!define SHOW_BYTECODE !define SHOW_SOURCE !define SHOW_COMPILATION\n!define SHOW_COMPILER !define SHOW_SOURCE_MAP\n\n!include uml/macros.iuml\n\n==== Contract Interfaces\n\nContract Interfaces have not been implemented in the first version of\nTruffle DB, but will be added in a future iteration.\n\nscale 0.75\n\n!define SHOW_INTERFACE !define SHOW_INTERFACE_INTERNAL\n\n!include uml/macros.iuml\n\n==== Network\n\nscale 0.75\n\n!define SHOW_NETWORK !define SHOW_NETWORK_INTERNAL\n\n!include uml/macros.iuml\n\nA network resource comprises a friendly name, a network ID, and a known\nhistoric block.\n\n=== Combined Data Model\n\nscale 0.75\n\n!define SHOW_PROJECT !define SHOW_NAME_RECORD !define SHOW_NETWORK\n!define SHOW_NETWORK_INTERNAL\n\n!define SHOW_BYTECODE\n\n!define SHOW_COMPILATION !define SHOW_COMPILER\n\n!define SHOW_SOURCE\n\n!define SHOW_CONTRACT !define SHOW_INTERFACE !define SHOW_INSTANCE\n!define SHOW_ABI !define SHOW_AST !define SHOW_INSTRUCTION !define\nSHOW_SOURCE_MAP !define SHOW_SOURCE_RANGE !define SHOW_CONSTRUCTOR\n\n!include uml/macros.iuml\n\n\n\n\n\n== JSON RPC \n\nNodes created by the current generation of Ethereum clients expose\ninconsistent and incompatible remote procedure call (RPC) methods\nbecause no formal Ethereum RPC specification exists. This proposal\nstandardizes such a specification to provide developers with a\npredictable Ethereum RPC interface regardless of underlying node\nimplementation.\n\n== Specification\n\n[[eip-1474-title-remote-procedure-call-specification-author-paul-bouchon-mailbitpshrnet-erik-marks-rekmarks-discussions-to-httpsethereum-magiciansorgteip-remote-procedure-call-specification1537-status-draft-type-standards-track-category-interface-created-2018-10-02]]\n==== eip: 1474 title: Remote procedure call specification author: Paul Bouchon mail@bitpshr.net, Erik Marks (@rekmarks) discussions-to: https://ethereum-magicians.org/t/eip-remote-procedure-call-specification/1537[https://ethereum-magicians.org/t/eip-remote-procedure-call-specification/1537] status: Draft type: Standards Track category: Interface created: 2018-10-02\n\n=== Concepts\n\n==== RFC-2119\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\",\n\"SHOULD\", \"SHOULD NOT\", \"RECOMMENDED\", \"MAY\", and \"OPTIONAL\" in this\ndocument are to be interpreted as described in\nhttps://www.ietf.org/rfc/rfc2119.txt[RFC-2119].\n\n==== JSON-RPC\n\nCommunication with Ethereum nodes is accomplished using\nhttps://www.jsonrpc.org/specification[JSON-RPC], a stateless,\nlightweight https://en.wikipedia.org/wiki/Remote_procedure_call[remote\nprocedure call] protocol that uses http://www.json.org/[JSON] as its\ndata format. Ethereum RPC methods *MUST* be called using\nhttps://www.jsonrpc.org/specification#request_object[JSON-RPC request\nobjects] and *MUST* respond with\nhttps://www.jsonrpc.org/specification#response_object[JSON-RPC response\nobjects].\n\n==== Error codes\n\nIf an Ethereum RPC method encounters an error, the `error` member\nincluded on the response object *MUST* be an object containing a `code`\nmember and descriptive `message` member. The following list contains all\npossible error codes and associated messages:\n\n[cols=\",,,\",options=\"header\",]\n|===\n|Code |Message |Meaning |Category\n|-32700 |Parse error |Invalid JSON |standard\n\n|-32600 |Invalid request |JSON is not a valid request object |standard\n\n|-32601 |Method not found |Method does not exist |standard\n\n|-32602 |Invalid params |Invalid method parameters |standard\n\n|-32603 |Internal error |Internal JSON-RPC error |standard\n\n|-32000 |Invalid input |Missing or invalid parameters |non-standard\n\n|-32001 |Resource not found |Requested resource not found |non-standard\n\n|-32002 |Resource unavailable |Requested resource not available\n|non-standard\n\n|-32003 |Transaction rejected |Transaction creation failed |non-standard\n\n|-32004 |Method not supported |Method is not implemented |non-standard\n\n|-32005 |Limit exceeded |Request exceeds defined limit |non-standard\n\n|-32006 |JSON-RPC version not supported |Version of JSON-RPC protocol is\nnot supported |non-standard\n|===\n\nExample error response:\n\n[source,sh]\n----\n{\n    \"id\": 1337\n    \"jsonrpc\": \"2.0\",\n    \"error\": {\n        \"code\": -32003,\n        \"message\": \"Transaction rejected\"\n    }\n}\n----\n\n==== Value encoding\n\nSpecific types of values passed to and returned from Ethereum RPC\nmethods require special encoding:\n\n===== `Quantity`\n\n* A `Quantity` value *MUST* be hex-encoded.\n* A `Quantity` value *MUST* be \"0x\"-prefixed.\n* A `Quantity` value *MUST* be expressed using the fewest possible hex\ndigits per byte.\n* A `Quantity` value *MUST* express zero as \"0x0\".\n\nExamples `Quantity` values:\n\n[cols=\",,\",options=\"header\",]\n|===\n|Value |Valid |Reason\n|0x |`invalid` |empty not a valid quantity\n|0x0 |`valid` |interpreted as a quantity of zero\n|0x00 |`invalid` |leading zeroes not allowed\n|0x41 |`valid` |interpreted as a quantity of 65\n|0x400 |`valid` |interpreted as a quantity of 1024\n|0x0400 |`invalid` |leading zeroes not allowed\n|ff |`invalid` |values must be prefixed\n|===\n\n===== `Block Identifier`\n\nThe RPC methods below take a default block identifier as a parameter.\n\n* `eth_getBalance`\n* `eth_getStorageAt`\n* `eth_getTransactionCount`\n* `eth_getCode`\n* `eth_call`\n* `eth_getProof`\n\nSince there is no way to clearly distinguish between a `Data` parameter\nand a `Quantity` parameter, link:./eip-1898.md[EIP-1898] provides a\nformat to specify a block either using the block hash or block number.\nThe block identifier is a JSON `object` with the following fields:\n\n[cols=\",,\",options=\"header\",]\n|===\n|Property |Type |Description\n|`[blockNumber]` |\\{link:#quantity[`Quantity`]} |The block in the\ncanonical chain with this number\n\n|OR `[blockHash]` |\\{link:#data[`Data`]} |The block uniquely identified\nby this hash. The `blockNumber` and `blockHash` properties are mutually\nexclusive; exactly one of them must be set.\n\n|`requireCanonical` |\\{`boolean`} |(optional) Whether or not to throw an\nerror if the block is not in the canonical chain as described below.\nOnly allowed in conjunction with the `blockHash` tag. Defaults to\n`false`.\n|===\n\nIf the block is not found, the callee SHOULD raise a JSON-RPC error (the\nrecommended error code is `-32001: Resource not found`. If the tag is\n`blockHash` and `requireCanonical` is `true`, the callee SHOULD\nadditionally raise a JSON-RPC error if the block is not in the canonical\nchain (the recommended error code is `-32000: Invalid input` and in any\ncase should be different than the error code for the block not found\ncase so that the caller can distinguish the cases). The block-not-found\ncheck SHOULD take precedence over the block-is-canonical check, so that\nif the block is not found the callee raises block-not-found rather than\nblock-not-canonical.\n\n===== `Data`\n\n* A `Data` value *MUST* be hex-encoded.\n* A `Data` value *MUST* be \"0x\"-prefixed.\n* A `Data` value *MUST* be expressed using two hex digits per byte.\n\nExamples `Data` values:\n\n[cols=\",,\",options=\"header\",]\n|===\n|Value |Valid |Reason\n|0x |`valid` |interpreted as empty data\n|0x0 |`invalid` |each byte must be represented using two hex digits\n|0x00 |`valid` |interpreted as a single zero byte\n|0x41 |`true` |interpreted as a data value of 65\n|0x004200 |`true` |interpreted as a data value of 16896\n|0xf0f0f |`false` |bytes require two hex digits\n|004200 |`false` |values must be prefixed\n|===\n\n===== Proposing changes\n\nNew Ethereum RPC methods and changes to existing methods *MUST* be\nproposed via the traditional EIP process. This allows for community\nconsensus around new method implementations and proposed method\nmodifications. RPC method proposals *MUST* reach \"draft\" status before\nbeing added to this proposal and the official Ethereum RPC specification\ndefined herein.\n\n=== Methods\n\n==== web3_clientVersion\n\n===== Description\n\nReturns the version of the current client\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{`string`} - client version\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"web3_clientVersion\",\n    \"params\": [],\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"Mist/v0.9.3/darwin/go1.4.1\"\n}\n----\n\n'''''\n\n==== web3_sha3\n\n===== Description\n\nHashes data using the Keccak-256 algorithm\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |data to hash\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - Keccak-256 hash of the given data\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"web3_sha3\",\n    \"params\": [\"0x68656c6c6f20776f726c64\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xc94770007dda54cF92009BFF0dE90c06F603a09f\"\n}\n----\n\n'''''\n\n==== net_listening\n\n===== Description\n\nDetermines if this client is listening for new network connections\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{`boolean`} - `true` if listening is active or `false` if listening is\nnot active\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"net_listening\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": true\n}\n----\n\n'''''\n\n==== net_peerCount\n\n===== Description\n\nReturns the number of peers currently connected to this client\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of connected peers\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"net_peerCount\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x2\"\n}\n----\n\n'''''\n\n==== net_version\n\n===== Description\n\nReturns the chain ID associated with the current network\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{`string`} - chain ID associated with the current network\n\nCommon chain IDs:\n\n* `\"1\"` - Ethereum mainnet\n* `\"3\"` - Ropsten testnet\n* `\"4\"` - Rinkeby testnet\n* `\"42\"` - Kovan testnet\n\n*Note:* See EIP-155 for a link:./eip-155.md#list-of-chain-ids[complete\nlist] of possible chain IDs.\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"net_version\",\n    \"params\": [],\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"3\"\n}\n----\n\n'''''\n\n==== eth_accounts\n\n===== Description\n\nReturns a list of addresses owned by this client\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{link:#data[`Data[]`]} - array of addresses\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_accounts\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": [\"0xc94770007dda54cF92009BFF0dE90c06F603a09f\"]\n}\n----\n\n'''''\n\n==== eth_blockNumber\n\n===== Description\n\nReturns the number of the most recent block seen by this client\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of the latest block\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_blockNumber\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xc94\"\n}\n----\n\n'''''\n\n==== eth_call\n\n===== Description\n\nExecutes a new message call immediately without submitting a transaction\nto the network\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{`object`} |@property \\{link:#data[`Data`]} `[from]` - transaction\nsender@property \\{link:#data[`Data`]} `to` - transaction recipient or\n`null` if deploying a contract@property \\{link:#quantity[`Quantity`]}\n`[gas]` - gas provided for transaction execution@property\n\\{link:#quantity[`Quantity`]} `[gasPrice]` - price in wei of each gas\nused@property \\{link:#quantity[`Quantity`]} `[value]` - value in wei\nsent with this transaction@property \\{link:#data[`Data`]} `[data]` -\ncontract code or a hashed method call with encoded args\n\n|2\n|\\{link:#quantity[`Quantity`]|`string`|link:#block-identifier[`Block Identifier`]}\n|block number, or one of `\"latest\"`, `\"earliest\"` or `\"pending\"`, or a\nblock identifier as described in\nlink:#block-identifier[`Block Identifier`]\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - return value of executed contract\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_call\",\n    \"params\": [{\n        \"data\": \"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675\",\n        \"from\": \"0xb60e8dd61c5d32be8058bb8eb970870f07233155\",\n        \"gas\": \"0x76c0\",\n        \"gasPrice\": \"0x9184e72a000\",\n        \"to\": \"0xd46e8dd67c5d32be8058bb8eb970870f07244567\",\n        \"value\": \"0x9184e72a\"\n    }]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x\"\n}\n----\n\n'''''\n\n==== eth_coinbase\n\n===== Description\n\nReturns the coinbase address for this client\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{link:#data[`Data`]} - coinbase address\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_coinbase\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xc94770007dda54cF92009BFF0dE90c06F603a09f\"\n}\n----\n\n'''''\n\n==== eth_estimateGas\n\n===== Description\n\nEstimates the gas necessary to complete a transaction without submitting\nit to the network\n\n*Note:* The resulting gas estimation may be significantly more than the\namount of gas actually used by the transaction. This is due to a variety\nof reasons including EVM mechanics and node performance.\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{`object`} |@property \\{link:#data[`Data`]} `[from]` - transaction\nsender@property \\{link:#data[`Data`]} `[to]` - transaction\nrecipient@property \\{link:#quantity[`Quantity`]} `[gas]` - gas provided\nfor transaction execution@property \\{link:#quantity[`Quantity`]}\n`[gasPrice]` - price in wei of each gas used@property\n\\{link:#quantity[`Quantity`]} `[value]` - value in wei sent with this\ntransaction@property \\{link:#data[`Data`]} `[data]` - contract code or a\nhashed method call with encoded args\n\n|2 |\\{link:#quantity[`Quantity`]|`string`} |block number, or one of\n`\"latest\"`, `\"earliest\"` or `\"pending\"`\n|===\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - amount of gas required by transaction\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_estimateGas\",\n    \"params\": [{\n        \"data\": \"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675\",\n        \"from\": \"0xb60e8dd61c5d32be8058bb8eb970870f07233155\",\n        \"gas\": \"0x76c0\",\n        \"gasPrice\": \"0x9184e72a000\",\n        \"to\": \"0xd46e8dd67c5d32be8058bb8eb970870f07244567\",\n        \"value\": \"0x9184e72a\"\n    }]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x5208\"\n}\n----\n\n'''''\n\n==== eth_gasPrice\n\n===== Description\n\nReturns the current price of gas expressed in wei\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - current gas price in wei\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_gasPrice\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x09184e72a000\"\n}\n----\n\n'''''\n\n==== eth_getBalance\n\n===== Description\n\nReturns the balance of an address in wei\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |address to query for balance\n\n|2\n|\\{link:#quantity[`Quantity`]|`string`|link:#block-identifier[`Block Identifier`]}\n|block number, or one of `\"latest\"`, `\"earliest\"` or `\"pending\"`, or a\nblock identifier as described in\nlink:#block-identifier[`Block Identifier`]\n|===\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - balance of the provided account in wei\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getBalance\",\n    \"params\": [\"0xc94770007dda54cF92009BFF0dE90c06F603a09f\", \"latest\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x0234c8a3397aab58\"\n}\n----\n\n'''''\n\n==== eth_getBlockByHash\n\n===== Description\n\nReturns information about a block specified by hash\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash of a block\n\n|2 |\\{`boolean`} |`true` will pull full transaction objects, `false`\nwill pull transaction hashes\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no block is found, otherwise a block object\nwith the following members:\n\n* \\{link:#data[`Data`]} `extraData` - \"extra data\" field of this block\n* \\{link:#data[`Data`]} `hash` - block hash or `null` if pending\n* \\{link:#data[`Data`]} `logsBloom` - logs bloom filter or `null` if\npending\n* \\{link:#data[`Data`]} `miner` - address that received this block's\nmining rewards\n* \\{link:#data[`Data`]} `nonce` - proof-of-work hash or `null` if\npending\n* \\{link:#data[`Data`]} `parentHash` - parent block hash\n* \\{link:#data[`Data`]} `receiptsRoot` -root of the this block's\nreceipts trie\n* \\{link:#data[`Data`]} `sha3Uncles` - SHA3 of the uncles data in this\nblock\n* \\{link:#data[`Data`]} `stateRoot` - root of this block's final state\ntrie\n* \\{link:#data[`Data`]} `transactionsRoot` - root of this block's\ntransaction trie\n* \\{link:#quantity[`Quantity`]} `difficulty` - difficulty for this block\n* \\{link:#quantity[`Quantity`]} `gasLimit` - maximum gas allowed in this\nblock\n* \\{link:#quantity[`Quantity`]} `gasUsed` - total used gas by all\ntransactions in this block\n* \\{link:#quantity[`Quantity`]} `number` - block number or `null` if\npending\n* \\{link:#quantity[`Quantity`]} `size` - size of this block in bytes\n* \\{link:#quantity[`Quantity`]} `timestamp` - unix timestamp of when\nthis block was collated\n* \\{link:#quantity[`Quantity`]} `totalDifficulty` - total difficulty of\nthe chain until this block\n* \\{`Array\u003cTransaction\u003e`} `transactions` - list of transaction objects\nor hashes\n* \\{`Array\u003cTransaction\u003e`} `uncles` - list of uncle hashes\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getBlockByHash\",\n    \"params\":[\"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\", true]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"difficulty\": \"0x027f07\",\n        \"extraData\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"gasLimit\": \"0x9f759\",\n        \"gasUsed\": \"0x9f759\",\n        \"hash\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"logsBloom\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"miner\": \"0x4e65fda2159562a496f9f3522f89122a3088497a\",\n        \"nonce\": \"0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2\",\n        \"number\": \"0x1b4\",\n        \"parentHash\": \"0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5\",\n        \"sha3Uncles\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"size\":  \"0x027f07\",\n        \"stateRoot\": \"0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff\",\n        \"timestamp\": \"0x54e34e8e\"\n        \"totalDifficulty\":  \"0x027f07\",\n        \"transactions\": []\n        \"transactionsRoot\": \"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\",\n        \"uncles\": [\"0x1606e5...\", \"0xd5145a9...\"]\n    }\n}\n----\n\n'''''\n\n==== eth_getBlockByNumber\n\n===== Description\n\nReturns information about a block specified by number\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]|`string`} |block number, or one of\n`\"latest\"`, `\"earliest\"` or `\"pending\"`\n\n|2 |\\{`boolean`} |`true` will pull full transaction objects, `false`\nwill pull transaction hashes\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no block is found, otherwise a block object\nwith the following members:\n\n* \\{link:#data[`Data`]} `extraData` - \"extra data\" field of this block\n* \\{link:#data[`Data`]} `hash` - block hash or `null` if pending\n* \\{link:#data[`Data`]} `logsBloom` - logs bloom filter or `null` if\npending\n* \\{link:#data[`Data`]} `miner` - address that received this block's\nmining rewards\n* \\{link:#data[`Data`]} `nonce` - proof-of-work hash or `null` if\npending\n* \\{link:#data[`Data`]} `parentHash` - parent block hash\n* \\{link:#data[`Data`]} `receiptsRoot` -root of the this block's\nreceipts trie\n* \\{link:#data[`Data`]} `sha3Uncles` - SHA3 of the uncles data in this\nblock\n* \\{link:#data[`Data`]} `stateRoot` - root of this block's final state\ntrie\n* \\{link:#data[`Data`]} `transactionsRoot` - root of this block's\ntransaction trie\n* \\{link:#quantity[`Quantity`]} `difficulty` - difficulty for this block\n* \\{link:#quantity[`Quantity`]} `gasLimit` - maximum gas allowed in this\nblock\n* \\{link:#quantity[`Quantity`]} `gasUsed` - total used gas by all\ntransactions in this block\n* \\{link:#quantity[`Quantity`]} `number` - block number or `null` if\npending\n* \\{link:#quantity[`Quantity`]} `size` - size of this block in bytes\n* \\{link:#quantity[`Quantity`]} `timestamp` - unix timestamp of when\nthis block was collated\n* \\{link:#quantity[`Quantity`]} `totalDifficulty` - total difficulty of\nthe chain until this block\n* \\{`Array\u003cTransaction\u003e`} `transactions` - list of transaction objects\nor hashes\n* \\{`Array\u003cTransaction\u003e`} `uncles` - list of uncle hashes\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getBlockByNumber\",\n    \"params\":[\"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\", true]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"difficulty\": \"0x027f07\",\n        \"extraData\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"gasLimit\": \"0x9f759\",\n        \"gasUsed\": \"0x9f759\",\n        \"hash\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"logsBloom\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"miner\": \"0x4e65fda2159562a496f9f3522f89122a3088497a\",\n        \"nonce\": \"0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2\",\n        \"number\": \"0x1b4\",\n        \"parentHash\": \"0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5\",\n        \"sha3Uncles\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"size\":  \"0x027f07\",\n        \"stateRoot\": \"0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff\",\n        \"timestamp\": \"0x54e34e8e\"\n        \"totalDifficulty\":  \"0x027f07\",\n        \"transactions\": []\n        \"transactionsRoot\": \"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\",\n        \"uncles\": [\"0x1606e5...\", \"0xd5145a9...\"]\n    }\n}\n----\n\n'''''\n\n==== eth_getBlockTransactionCountByHash\n\n===== Description\n\nReturns the number of transactions in a block specified by block hash\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash of a block\n|===\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of transactions in the specified\nblock\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getBlockTransactionCountByHash\",\n    \"params\": [\"0xc94770007dda54cF92009BFF0dE90c06F603a09f\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xc\"\n}\n----\n\n'''''\n\n==== eth_getBlockTransactionCountByNumber\n\n===== Description\n\nReturns the number of transactions in a block specified by block number\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]|`string`} |block number, or one of\n`\"latest\"`, `\"earliest\"` or `\"pending\"`\n|===\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of transactions in the specified\nblock\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getBlockTransactionCountByNumber\",\n    \"params\": [\"0xe8\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xa\"\n}\n----\n\n'''''\n\n==== eth_getCode\n\n===== Description\n\nReturns the contract code stored at a given address\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |address to query for code\n\n|2\n|\\{link:#quantity[`Quantity`]|`string`|link:#block-identifier[`Block Identifier`]}\n|block number, or one of `\"latest\"`, `\"earliest\"` or `\"pending\"`, or a\nblock identifier as described in\nlink:#block-identifier[`Block Identifier`]\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - code from the specified address\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getCode\",\n    \"params\": [\"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b\", \"0x2\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056\"\n}\n----\n\n'''''\n\n==== eth_getFilterChanges\n\n===== Description\n\nReturns a list of all logs based on filter ID since the last log\nretrieval\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]} |ID of the filter\n|===\n\n===== Returns\n\n\\{`Array\u003cLog\u003e`} - array of log objects with the following members:\n\n* \\{link:#data[`Data`]} `address` - address from which this log\noriginated\n* \\{link:#data[`Data`]} `blockHash` - hash of block containing this log\nor `null` if pending\n* \\{link:#data[`Data`]} `data` - contains the non-indexed arguments of\nthe log\n* \\{link:#data[`Data`]} `transactionHash` - hash of the transaction that\ncreated this log or `null` if pending\n* \\{link:#quantity[`Quantity`]} `blockNumber` - number of block\ncontaining this log or `null` if pending\n* \\{link:#quantity[`Quantity`]} `logIndex` - index of this log within\nits block or `null` if pending\n* \\{link:#quantity[`Quantity`]} `transactionIndex` - index of the\ntransaction that created this log or `null` if pending\n* \\{link:#data[`Data[]`]} `topics` - list of order-dependent topics\n* \\{`boolean`} `removed` - `true` if this filter has been destroyed and\nis invalid\n\n*Note:* The return value of `eth_getFilterChanges` when retrieving logs\nfrom `eth_newBlockFilter` and `eth_newPendingTransactionFilter` filters\nwill be an array of hashes, not an array of Log objects.\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getFilterChanges\",\n    \"params\": [\"0x16\"]\n}' \u003curl\u003e\n\n# Response\n{\n   \"id\": 1337,\n   \"jsonrpc\": \"2.0\",\n    \"result\": [{\n        \"address\": \"0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d\",\n        \"blockHash\": \"0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d\",\n        \"blockNumber\":\"0x1b4\",\n        \"data\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"logIndex\": \"0x1\",\n        \"topics\": [],\n        \"transactionHash\":  \"0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf\",\n        \"transactionIndex\": \"0x0\"\n   }]\n}\n----\n\n'''''\n\n==== eth_getFilterLogs\n\n===== Description\n\nReturns a list of all logs based on filter ID\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]} |ID of the filter\n|===\n\n===== Returns\n\n\\{`Array\u003cLog\u003e`} - array of log objects with the following members:\n\n* \\{link:#data[`Data`]} address - address from which this log originated\n* \\{link:#data[`Data`]} blockHash - hash of block containing this log or\n`null` if pending\n* \\{link:#data[`Data`]} data - contains the non-indexed arguments of the\nlog\n* \\{link:#data[`Data`]} transactionHash - hash of the transaction that\ncreated this log or `null` if pending\n* \\{link:#quantity[`Quantity`]} blockNumber - number of block containing\nthis log or `null` if pending\n* \\{link:#quantity[`Quantity`]} logIndex - index of this log within its\nblock or `null` if pending\n* \\{link:#quantity[`Quantity`]} transactionIndex - index of the\ntransaction that created this log or `null` if pending\n* \\{`Array\u003cData\u003e`} topics - list of order-dependent topics\n* \\{`boolean`} removed - `true` if this filter has been destroyed and is\ninvalid\n\n*Note:* The return value of `eth_getFilterLogs` when retrieving logs\nfrom `eth_newBlockFilter` and `eth_newPendingTransactionFilter` filters\nwill be an array of hashes, not an array of Log objects.\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getFilterLogs\",\n    \"params\": [\"0x16\"]\n}' \u003curl\u003e\n\n# Response\n{\n   \"id\": 1337,\n   \"jsonrpc\": \"2.0\",\n    \"result\": [{\n        \"address\": \"0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d\",\n        \"blockHash\": \"0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d\",\n        \"blockNumber\":\"0x1b4\",\n        \"data\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"logIndex\": \"0x1\",\n        \"topics\": [],\n        \"transactionHash\":  \"0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf\",\n        \"transactionIndex\": \"0x0\"\n   }]\n}\n----\n\n'''''\n\n==== eth_getLogs\n\n===== Description\n\nReturns a list of all logs based on a filter object\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{`object`} |@property \\{link:#quantity[`Quantity`]|`string`}\n`[fromBlock]` - block number, or one of `\"latest\"`, `\"earliest\"` or\n`\"pending\"`@property \\{link:#quantity[`Quantity`]|`string`} `[toBlock]`\n- block number, or one of `\"latest\"`, `\"earliest\"` or\n`\"pending\"`@property \\{link:#data[`Data`]|link:#data[`Data[]`]}\n`[address]` - contract address or a list of addresses from which logs\nshould originate@property \\{link:#data[`Data[]`]} `[topics]` - list of\norder-dependent topics@property \\{link:#data[`Data`]} `[blockhash]` -\nrestrict logs to a block by hash\n|===\n\n*Note:* If `blockhash` is passed, neither `fromBlock` nor `toBlock` are\nallowed or respected.\n\n===== Returns\n\n\\{`Array\u003cLog\u003e`} - array of log objects with the following members:\n\n* \\{link:#data[`Data`]} `address` - address from which this log\noriginated\n* \\{link:#data[`Data`]} `blockHash` - hash of block containing this log\nor `null` if pending\n* \\{link:#data[`Data`]} `data` - contains the non-indexed arguments of\nthe log\n* \\{link:#data[`Data`]} `transactionHash` - hash of the transaction that\ncreated this log or `null` if pending\n* \\{link:#quantity[`Quantity`]} `blockNumber` - number of block\ncontaining this log or `null` if pending\n* \\{link:#quantity[`Quantity`]} `logIndex` - index of this log within\nits block or `null` if pending\n* \\{link:#quantity[`Quantity`]} `transactionIndex` - index of the\ntransaction that created this log or `null` if pending\n* \\{link:#data[`Data`]} `topics` - list of order-dependent topics\n* \\{`boolean`} `removed` - `true` if this filter has been destroyed and\nis invalid\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getLogs\",\n    \"params\": [{\n        \"topics\":[\"0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b\"]\n    }]\n}' \u003curl\u003e\n\n# Response\n{\n   \"id\": 1337,\n   \"jsonrpc\": \"2.0\",\n    \"result\": [{\n        \"address\": \"0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d\",\n        \"blockHash\": \"0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d\",\n        \"blockNumber\":\"0x1b4\",\n        \"data\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"logIndex\": \"0x1\",\n        \"topics\": [],\n        \"transactionHash\":  \"0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf\",\n        \"transactionIndex\": \"0x0\"\n   }]\n}\n----\n\n'''''\n\n==== eth_getStorageAt\n\n===== Description\n\nReturns the value from a storage position at an address\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |address of stored data\n\n|2 |\\{link:#quantity[`Quantity`]} |index into stored data\n\n|3\n|\\{link:#quantity[`Quantity`]|`string`|link:#block-identifier[`Block Identifier`]}\n|block number, or one of `\"latest\"`, `\"earliest\"` or `\"pending\"`, or a\nblock identifier as described in\nlink:#block-identifier[`Block Identifier`]\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - value stored at the given address and data index\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getStorageAt\",\n    \"params\": [\"0x295a70b2de5e3953354a6a8344e616ed314d7251\", \"0x0\", \"latest\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x00000000000000000000000000000000000000000000000000000000000004d2\"\n}\n----\n\n'''''\n\n==== eth_getTransactionByBlockHashAndIndex\n\n===== Description\n\nReturns information about a transaction specified by block hash and\ntransaction index\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash of a block\n\n|2 |\\{link:#quantity[`Quantity`]} |index of a transaction in the\nspecified block\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no transaction is found, otherwise a\ntransaction object with the following members:\n\n* \\{link:#data[`Data`]} `r` - ECDSA signature r\n* \\{link:#data[`Data`]} `s` - ECDSA signature s\n* \\{link:#data[`Data`]} `blockHash` - hash of block containing this\ntransaction or `null` if pending\n* \\{link:#data[`Data`]} `from` - transaction sender\n* \\{link:#data[`Data`]} `hash` - hash of this transaction\n* \\{link:#data[`Data`]} `input` - contract code or a hashed method call\n* \\{link:#data[`Data`]} `to` - transaction recipient or `null` if\ndeploying a contract\n* \\{link:#quantity[`Quantity`]} `v` - ECDSA recovery ID\n* \\{link:#quantity[`Quantity`]} `blockNumber` - number of block\ncontaining this transaction or `null` if pending\n* \\{link:#quantity[`Quantity`]} `gas` - gas provided for transaction\nexecution\n* \\{link:#quantity[`Quantity`]} `gasPrice` - price in wei of each gas\nused\n* \\{link:#quantity[`Quantity`]} `nonce` - unique number identifying this\ntransaction\n* \\{link:#quantity[`Quantity`]} `transactionIndex` - index of this\ntransaction in the block or `null` if pending\n* \\{link:#quantity[`Quantity`]} `value` - value in wei sent with this\ntransaction\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getTransactionByBlockHashAndIndex\",\n    \"params\":[\"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\", \"0x0\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"blockHash\": \"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2\",\n        \"blockNumber\": \"0x5daf3b\",\n        \"from\": \"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d\",\n        \"gas\": \"0xc350\",\n        \"gasPrice\": \"0x4a817c800\",\n        \"hash\": \"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b\",\n        \"input\": \"0x68656c6c6f21\",\n        \"nonce\": \"0x15\",\n        \"r\": \"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea\",\n        \"s\": \"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c\",\n        \"to\": \"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb\",\n        \"transactionIndex\": \"0x41\",\n        \"v\": \"0x25\",\n        \"value\": \"0xf3dbb76162000\"\n    }\n}\n----\n\n'''''\n\n==== eth_getTransactionByBlockNumberAndIndex\n\n===== Description\n\nReturns information about a transaction specified by block number and\ntransaction index\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]|`string`} |block number, or one of\n`\"latest\"`, `\"earliest\"` or `\"pending\"`\n\n|2 |\\{link:#quantity[`Quantity`]} |index of a transaction in the\nspecified block\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no transaction is found, otherwise a\ntransaction object with the following members:\n\n* \\{link:#data[`Data`]} `r` - ECDSA signature r\n* \\{link:#data[`Data`]} `s` - ECDSA signature s\n* \\{link:#data[`Data`]} `blockHash` - hash of block containing this\ntransaction or `null` if pending\n* \\{link:#data[`Data`]} `from` - transaction sender\n* \\{link:#data[`Data`]} `hash` - hash of this transaction\n* \\{link:#data[`Data`]} `input` - contract code or a hashed method call\n* \\{link:#data[`Data`]} `to` - transaction recipient or `null` if\ndeploying a contract\n* \\{link:#quantity[`Quantity`]} `v` - ECDSA recovery ID\n* \\{link:#quantity[`Quantity`]} `blockNumber` - number of block\ncontaining this transaction or `null` if pending\n* \\{link:#quantity[`Quantity`]} `gas` - gas provided for transaction\nexecution\n* \\{link:#quantity[`Quantity`]} `gasPrice` - price in wei of each gas\nused\n* \\{link:#quantity[`Quantity`]} `nonce` - unique number identifying this\ntransaction\n* \\{link:#quantity[`Quantity`]} `transactionIndex` - index of this\ntransaction in the block or `null` if pending\n* \\{link:#quantity[`Quantity`]} `value` - value in wei sent with this\ntransaction\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getTransactionByBlockNumberAndIndex\",\n    \"params\":[\"0x29c\", \"0x0\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"blockHash\": \"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2\",\n        \"blockNumber\": \"0x5daf3b\",\n        \"from\": \"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d\",\n        \"gas\": \"0xc350\",\n        \"gasPrice\": \"0x4a817c800\",\n        \"hash\": \"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b\",\n        \"input\": \"0x68656c6c6f21\",\n        \"nonce\": \"0x15\",\n        \"r\": \"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea\",\n        \"s\": \"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c\",\n        \"to\": \"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb\",\n        \"transactionIndex\": \"0x41\",\n        \"v\": \"0x25\",\n        \"value\": \"0xf3dbb76162000\"\n    }\n}\n----\n\n'''''\n\n==== eth_getTransactionByHash\n\n===== Description\n\nReturns information about a transaction specified by hash\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash of a transaction\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no transaction is found, otherwise a\ntransaction object with the following members:\n\n* \\{link:#data[`Data`]} `r` - ECDSA signature r\n* \\{link:#data[`Data`]} `s` - ECDSA signature s\n* \\{link:#data[`Data`]} `blockHash` - hash of block containing this\ntransaction or `null` if pending\n* \\{link:#data[`Data`]} `from` - transaction sender\n* \\{link:#data[`Data`]} `hash` - hash of this transaction\n* \\{link:#data[`Data`]} `input` - contract code or a hashed method call\n* \\{link:#data[`Data`]} `to` - transaction recipient or `null` if\ndeploying a contract\n* \\{link:#quantity[`Quantity`]} `v` - ECDSA recovery ID\n* \\{link:#quantity[`Quantity`]} `blockNumber` - number of block\ncontaining this transaction or `null` if pending\n* \\{link:#quantity[`Quantity`]} `gas` - gas provided for transaction\nexecution\n* \\{link:#quantity[`Quantity`]} `gasPrice` - price in wei of each gas\nused\n* \\{link:#quantity[`Quantity`]} `nonce` - unique number identifying this\ntransaction\n* \\{link:#quantity[`Quantity`]} `transactionIndex` - index of this\ntransaction in the block or `null` if pending\n* \\{link:#quantity[`Quantity`]} `value` - value in wei sent with this\ntransaction\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getTransactionByHash\",\n    \"params\": [\"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"blockHash\": \"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2\",\n        \"blockNumber\": \"0x5daf3b\",\n        \"from\": \"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d\",\n        \"gas\": \"0xc350\",\n        \"gasPrice\": \"0x4a817c800\",\n        \"hash\": \"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b\",\n        \"input\": \"0x68656c6c6f21\",\n        \"nonce\": \"0x15\",\n        \"r\": \"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea\",\n        \"s\": \"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c\",\n        \"to\": \"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb\",\n        \"transactionIndex\": \"0x41\",\n        \"v\": \"0x25\",\n        \"value\": \"0xf3dbb76162000\"\n    }\n}\n----\n\n'''''\n\n==== eth_getTransactionCount\n\n===== Description\n\nReturns the number of transactions sent from an address\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |address to query for sent transactions\n\n|2\n|\\{link:#quantity[`Quantity`]|`string`|link:#block-identifier[`Block Identifier`]}\n|block number, or one of `\"latest\"`, `\"earliest\"` or `\"pending\"`, or a\nblock identifier as described in\nlink:#block-identifier[`Block Identifier`]\n|===\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of transactions sent from the\nspecified address\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getTransactionCount\",\n    \"params\": [\"0xc94770007dda54cF92009BFF0dE90c06F603a09f\", \"latest\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x1\"\n}\n----\n\n'''''\n\n==== eth_getTransactionReceipt\n\n===== Description\n\nReturns the receipt of a transaction specified by hash\n\n*Note:* Transaction receipts are unavailable for pending transactions.\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash of a transaction\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no transaction is found, otherwise a\ntransaction receipt object with the following members:\n\n* \\{link:#data[`Data`]} `blockHash` - hash of block containing this\ntransaction\n* \\{link:#data[`Data`]} `contractAddress` - address of new contract or\n`null` if no contract was created\n* \\{link:#data[`Data`]} `from` - transaction sender\n* \\{link:#data[`Data`]} `logsBloom` - logs bloom filter\n* \\{link:#data[`Data`]} `to` - transaction recipient or `null` if\ndeploying a contract\n* \\{link:#data[`Data`]} `transactionHash` - hash of this transaction\n* \\{link:#quantity[`Quantity`]} `blockNumber` - number of block\ncontaining this transaction\n* \\{link:#quantity[`Quantity`]} `cumulativeGasUsed` - gas used by this\nand all preceding transactions in this block\n* \\{link:#quantity[`Quantity`]} `gasUsed` - gas used by this transaction\n* \\{link:#quantity[`Quantity`]} `status` - `1` if this transaction was\nsuccessful or `0` if it failed\n* \\{link:#quantity[`Quantity`]} `transactionIndex` - index of this\ntransaction in the block\n* \\{`Array\u003cLog\u003e`} `logs` - list of log objects generated by this\ntransaction\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getTransactionReceipt\",\n    \"params\": [\"0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"blockHash\": '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',\n        \"blockNumber\": '0xb',\n        \"contractAddress\": '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n        \"cumulativeGasUsed\": '0x33bc',\n        \"gasUsed\": '0x4dc',\n        \"logs\": [],\n        \"logsBloom\": \"0x00...0\",\n        \"status\": \"0x1\",\n        \"transactionHash\": '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238',\n        \"transactionIndex\":  '0x1'\n    }\n}\n----\n\n'''''\n\n==== eth_getUncleByBlockHashAndIndex\n\n===== Description\n\nReturns information about an uncle specified by block hash and uncle\nindex position\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash of a block\n|2 |\\{link:#quantity[`Quantity`]} |index of uncle\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no block or uncle is found, otherwise an\nuncle object with the following members:\n\n* \\{link:#data[`Data`]} `extraData` - \"extra data\" field of this block\n* \\{link:#data[`Data`]} `hash` - block hash or `null` if pending\n* \\{link:#data[`Data`]} `logsBloom` - logs bloom filter or `null` if\npending\n* \\{link:#data[`Data`]} `miner` - address that received this block's\nmining rewards\n* \\{link:#data[`Data`]} `nonce` - proof-of-work hash or `null` if\npending\n* \\{link:#data[`Data`]} `parentHash` - parent block hash\n* \\{link:#data[`Data`]} `receiptsRoot` -root of the this block's\nreceipts trie\n* \\{link:#data[`Data`]} `sha3Uncles` - SHA3 of the uncles data in this\nblock\n* \\{link:#data[`Data`]} `stateRoot` - root of this block's final state\ntrie\n* \\{link:#data[`Data`]} `transactionsRoot` - root of this block's\ntransaction trie\n* \\{link:#quantity[`Quantity`]} `difficulty` - difficulty for this block\n* \\{link:#quantity[`Quantity`]} `gasLimit` - maximum gas allowed in this\nblock\n* \\{link:#quantity[`Quantity`]} `gasUsed` - total used gas by all\ntransactions in this block\n* \\{link:#quantity[`Quantity`]} `number` - block number or `null` if\npending\n* \\{link:#quantity[`Quantity`]} `size` - size of this block in bytes\n* \\{link:#quantity[`Quantity`]} `timestamp` - unix timestamp of when\nthis block was collated\n* \\{link:#quantity[`Quantity`]} `totalDifficulty` - total difficulty of\nthe chain until this block\n* \\{`Array\u003cTransaction\u003e`} `uncles` - list of uncle hashes\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getUncleByBlockHashAndIndex\",\n    \"params\": [\"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b\", \"0x0\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"difficulty\": \"0x027f07\",\n        \"extraData\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"gasLimit\": \"0x9f759\",\n        \"gasUsed\": \"0x9f759\",\n        \"hash\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"logsBloom\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"miner\": \"0x4e65fda2159562a496f9f3522f89122a3088497a\",\n        \"nonce\": \"0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2\",\n        \"number\": \"0x1b4\",\n        \"parentHash\": \"0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5\",\n        \"sha3Uncles\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"size\":  \"0x027f07\",\n        \"stateRoot\": \"0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff\",\n        \"timestamp\": \"0x54e34e8e\"\n        \"totalDifficulty\":  \"0x027f07\",\n        \"transactionsRoot\": \"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\",\n        \"uncles\": []\n    }\n}\n----\n\n'''''\n\n==== eth_getUncleByBlockNumberAndIndex\n\n===== Description\n\nReturns information about an uncle specified by block number and uncle\nindex position\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]|`string`} |block number, or one of\n`\"latest\"`, `\"earliest\"` or `\"pending\"`\n\n|2 |\\{link:#quantity[`Quantity`]} |index of uncle\n|===\n\n===== Returns\n\n\\{`null|object`} - `null` if no block or uncle is found, otherwise an\nuncle object with the following members:\n\n* \\{link:#data[`Data`]} `extraData` - \"extra data\" field of this block\n* \\{link:#data[`Data`]} `hash` - block hash or `null` if pending\n* \\{link:#data[`Data`]} `logsBloom` - logs bloom filter or `null` if\npending\n* \\{link:#data[`Data`]} `miner` - address that received this block's\nmining rewards\n* \\{link:#data[`Data`]} `nonce` - proof-of-work hash or `null` if\npending\n* \\{link:#data[`Data`]} `parentHash` - parent block hash\n* \\{link:#data[`Data`]} `receiptsRoot` -root of the this block's\nreceipts trie\n* \\{link:#data[`Data`]} `sha3Uncles` - SHA3 of the uncles data in this\nblock\n* \\{link:#data[`Data`]} `stateRoot` - root of this block's final state\ntrie\n* \\{link:#data[`Data`]} `transactionsRoot` - root of this block's\ntransaction trie\n* \\{link:#quantity[`Quantity`]} `difficulty` - difficulty for this block\n* \\{link:#quantity[`Quantity`]} `gasLimit` - maximum gas allowed in this\nblock\n* \\{link:#quantity[`Quantity`]} `gasUsed` - total used gas by all\ntransactions in this block\n* \\{link:#quantity[`Quantity`]} `number` - block number or `null` if\npending\n* \\{link:#quantity[`Quantity`]} `size` - size of this block in bytes\n* \\{link:#quantity[`Quantity`]} `timestamp` - unix timestamp of when\nthis block was collated\n* \\{link:#quantity[`Quantity`]} `totalDifficulty` - total difficulty of\nthe chain until this block\n* \\{`Array\u003cTransaction\u003e`} `uncles` - list of uncle hashes\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getUncleByBlockNumberAndIndex\",\n    \"params\": [\"0x29c\", \"0x0\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"difficulty\": \"0x027f07\",\n        \"extraData\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"gasLimit\": \"0x9f759\",\n        \"gasUsed\": \"0x9f759\",\n        \"hash\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"logsBloom\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\",\n        \"miner\": \"0x4e65fda2159562a496f9f3522f89122a3088497a\",\n        \"nonce\": \"0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2\",\n        \"number\": \"0x1b4\",\n        \"parentHash\": \"0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5\",\n        \"sha3Uncles\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"size\":  \"0x027f07\",\n        \"stateRoot\": \"0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff\",\n        \"timestamp\": \"0x54e34e8e\"\n        \"totalDifficulty\":  \"0x027f07\",\n        \"transactionsRoot\": \"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\",\n        \"uncles\": []\n    }\n}\n----\n\n'''''\n\n==== eth_getUncleCountByBlockHash\n\n===== Description\n\nReturns the number of uncles in a block specified by block hash\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash of a block\n|===\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of uncles in the specified block\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getUncleCountByBlockHash\",\n    \"params\": [\"0xc94770007dda54cF92009BFF0dE90c06F603a09f\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xc\"\n}\n----\n\n'''''\n\n==== eth_getUncleCountByBlockNumber\n\n===== Description\n\nReturns the number of uncles in a block specified by block number\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]|`string`} |block number, or one of\n`\"latest\"`, `\"earliest\"` or `\"pending\"`\n|===\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of uncles in the specified block\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getUncleCountByBlockNumber\",\n    \"params\": [\"0xe8\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x1\"\n}\n----\n\n'''''\n\n==== eth_getWork\n\n===== Description\n\nReturns a list containing relevant information for proof-of-work\n\n===== Parameters\n\n_none_\n\n===== Returns\n\n\\{link:#data[`Data[]`]} - array with the following items:\n\n. \\{link:#data[`Data`]} - current block header pow-hash\n. \\{link:#data[`Data`]} - seed hash used for the DAG\n. \\{link:#data[`Data`]} - boundary condition (\"target\"), 2^256 /\ndifficulty\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_getWork\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": [\n        \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n        \"0x5EED00000000000000000000000000005EED0000000000000000000000000000\",\n        \"0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000\"\n    ]\n}\n----\n\n'''''\n\n==== eth_hashrate\n\n===== Description\n\nReturns the number of hashes-per-second this node is mining at\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - number of hashes-per-second\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_hashrate\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x38a\"\n}\n----\n\n'''''\n\n==== eth_mining\n\n===== Description\n\nDetermines if this client is mining new blocks\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{`boolean`} - `true` if this client is mining or `false` if it is not\nmining\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_mining\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": true\n}\n----\n\n'''''\n\n==== eth_newBlockFilter\n\n===== Description\n\nCreates a filter to listen for new blocks that can be used with\n`eth_getFilterChanges`\n\n===== Parameters\n\n_none_\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - ID of the newly-created filter that can\nbe used with `eth_getFilterChanges`\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_newBlockFilter\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x1\"\n}\n----\n\n'''''\n\n==== eth_newFilter\n\n===== Description\n\nCreates a filter to listen for specific state changes that can then be\nused with `eth_getFilterChanges`\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{`object`} |@property \\{link:#quantity[`Quantity`]|`string`}\n`[fromBlock]` - block number, or one of `\"latest\"`, `\"earliest\"` or\n`\"pending\"`@property \\{link:#quantity[`Quantity`]|`string`} `[toBlock]`\n- block number, or one of `\"latest\"`, `\"earliest\"` or\n`\"pending\"`@property \\{link:#data[`Data`]|link:#data[`Data[]`]}\n`[address]` - contract address or a list of addresses from which logs\nshould originate@property \\{link:#data[`Data[]`]} `[topics]` - list of\norder-dependent topics\n|===\n\n*Note:* Topics are order-dependent. A transaction with a log with topics\n`[A, B]` will be matched by the following topic filters:\n\n* `[]` - \"anything\"\n* `[A]` - \"A in first position (and anything after)\"\n* `[null, B]` - \"anything in first position AND B in second position\n(and anything after)\"\n* `[A, B]` - \"A in first position AND B in second position (and anything\nafter)\"\n* `[[A, B], [A, B]]` - \"(A OR B) in first position AND (A OR B) in\nsecond position (and anything after)\"\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - ID of the newly-created filter that can\nbe used with `eth_getFilterChanges`\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_newFilter\",\n    \"params\": [{\n        \"topics\": [\"0x0000000000000000000000000000000000000000000000000000000012341234\"]\n    }]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x1\"\n}\n----\n\n'''''\n\n==== eth_newPendingTransactionFilter\n\n===== Description\n\nCreates a filter to listen for new pending transactions that can be used\nwith `eth_getFilterChanges`\n\n===== Parameters\n\n_none_\n\n===== Returns\n\n\\{link:#quantity[`Quantity`]} - ID of the newly-created filter that can\nbe used with `eth_getFilterChanges`\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_newPendingTransactionFilter\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x1\"\n}\n----\n\n'''''\n\n==== eth_protocolVersion\n\n===== Description\n\nReturns the current Ethereum protocol version\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{`string`} - current Ethereum protocol version\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_protocolVersion\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"54\"\n}\n----\n\n'''''\n\n==== eth_sendRawTransaction\n\n===== Description\n\nSends and already-signed transaction to the network\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |signed transaction data\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - transaction hash, or the zero hash if the\ntransaction is not yet available\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_sendRawTransaction\",\n    \"params\": [\"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\"\n}\n----\n\n'''''\n\n==== eth_sendTransaction\n\n===== Description\n\nCreates, signs, and sends a new transaction to the network\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{`object`} |@property \\{link:#data[`Data`]} `from` - transaction\nsender@property \\{link:#data[`Data`]} `[to]` - transaction\nrecipient@property \\{link:#quantity[`Quantity`]} `[gas=\"0x15f90\"]` - gas\nprovided for transaction execution@property\n\\{link:#quantity[`Quantity`]} `[gasPrice]` - price in wei of each gas\nused@property \\{link:#quantity[`Quantity`]} `[value]` - value in wei\nsent with this transaction@property \\{link:#data[`Data`]} `[data]` -\ncontract code or a hashed method call with encoded args@property\n\\{link:#quantity[`Quantity`]} `[nonce]` - unique number identifying this\ntransaction\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - transaction hash, or the zero hash if the\ntransaction is not yet available\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_sendTransaction\",\n    \"params\": [{\n        \"data\": \"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675\",\n        \"from\": \"0xb60e8dd61c5d32be8058bb8eb970870f07233155\",\n        \"gas\": \"0x76c0\",\n        \"gasPrice\": \"0x9184e72a000\",\n        \"to\": \"0xd46e8dd67c5d32be8058bb8eb970870f07244567\",\n        \"value\": \"0x9184e72a\"\n    }]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331\"\n}\n----\n\n'''''\n\n==== eth_sign\n\n===== Description\n\nCalculates an Ethereum-specific signature in the form of\n`keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |address to use for signing\n|2 |\\{link:#data[`Data`]} |data to sign\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - signature hash of the provided data\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_sign\",\n    \"params\": [\"0x9b2055d370f73ec7d8a03e965129118dc8f5bf83\", \"0xdeadbeaf\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b\"\n}\n----\n\n'''''\n\n==== eth_signTransaction\n\n===== Description\n\nSigns a transaction that can be submitted to the network at a later time\nusing with `eth_sendRawTransaction`\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{`object`} |@property \\{link:#data[`Data`]} `from` - transaction\nsender@property \\{link:#data[`Data`]} `[to]` - transaction\nrecipient@property \\{link:#quantity[`Quantity`]} `[gas=\"0x15f90\"]` - gas\nprovided for transaction execution@property\n\\{link:#quantity[`Quantity`]} `[gasPrice]` - price in wei of each gas\nused@property \\{link:#quantity[`Quantity`]} `[value]` - value in wei\nsent with this transaction@property \\{link:#data[`Data`]} `[data]` -\ncontract code or a hashed method call with encoded args@property\n\\{link:#quantity[`Quantity`]} `[nonce]` - unique number identifying this\ntransaction\n|===\n\n===== Returns\n\n\\{link:#data[`Data`]} - signature hash of the transaction object\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_signTransaction\",\n    \"params\": [{\n        \"data\": \"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675\",\n        \"from\": \"0xb60e8dd61c5d32be8058bb8eb970870f07233155\",\n        \"gas\": \"0x76c0\",\n        \"gasPrice\": \"0x9184e72a000\",\n        \"to\": \"0xd46e8dd67c5d32be8058bb8eb970870f07244567\",\n        \"value\": \"0x9184e72a\"\n    }]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b\"\n}\n----\n\n'''''\n\n==== eth_signTypedData\n\n===== Description\n\nCalculates an Ethereum-specific signature in the form of\n`keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |address to use for signing\n\n|2 |\\{link:#data[`Data`]} |message to sign containing type information,\na domain separator, and data\n|===\n\n*Note:* Client developers should refer to EIP-712 for complete semantics\naround link:./eip-712.md#specification[encoding and signing data]. Dapp\ndevelopers should refer to EIP-712 for the expected structure of\nlink:./eip-712.md#parameters[RPC method input parameters].\n\n===== Returns\n\n\\{link:#data[`Data`]} - signature hash of the provided message\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_signTypedData\",\n    \"params\": [\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\", {\n        \"types\": {\n            \"EIP712Domain\": [{\n                \"name\": \"name\",\n                \"type\": \"string\"\n            }, {\n                \"name\": \"version\",\n                \"type\": \"string\"\n            }, {\n                \"name\": \"chainId\",\n                \"type\": \"uint256\"\n            }, {\n                \"name\": \"verifyingContract\",\n                \"type\": \"address\"\n            }],\n            \"Person\": [{\n                \"name\": \"name\",\n                \"type\": \"string\"\n            }, {\n                \"name\": \"wallet\",\n                \"type\": \"address\"\n            }],\n            \"Mail\": [{\n                \"name\": \"from\",\n                \"type\": \"Person\"\n            }, {\n                \"name\": \"to\",\n                \"type\": \"Person\"\n            }, {\n                \"name\": \"contents\",\n                \"type\": \"string\"\n            }]\n        },\n        \"primaryType\": \"Mail\",\n        \"domain\": {\n            \"name\": \"Ether Mail\",\n            \"version\": \"1\",\n            \"chainId\": 1,\n            \"verifyingContract\": \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\"\n        },\n        \"message\": {\n            \"from\": {\n                \"name\": \"Cow\",\n                \"wallet\": \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\"\n            },\n            \"to\": {\n                \"name\": \"Bob\",\n                \"wallet\": \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\"\n            },\n            \"contents\": \"Hello, Bob!\"\n        }\n    }]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": \"0x4355c47d63924e8a72e509b65029052eb6c299d53a04e167c5775fd466751c9d07299936d304c153f6443dfa05f40ff007d72911b6f72307f996231605b915621c\"\n}\n----\n\n'''''\n\n==== eth_submitHashrate\n\n===== Description\n\nSubmit a mining hashrate\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |hash rate\n|2 |\\{link:#data[`Data`]} |random ID identifying this node\n|===\n\n===== Returns\n\n\\{`boolean`} - `true` if submitting went through successfully, `false`\notherwise\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_submitHashrate\",\n    \"params\": [\n        \"0x0000000000000000000000000000000000000000000000000000000000500000\",\n        \"0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c\"\n    ]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": true\n}\n----\n\n'''''\n\n==== eth_submitWork\n\n===== Description\n\nSubmit a proof-of-work solution\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#data[`Data`]} |nonce found\n|2 |\\{link:#data[`Data`]} |header's pow-hash\n|3 |\\{link:#data[`Data`]} |mix digest\n|===\n\n===== Returns\n\n\\{`boolean`} - `true` if the provided solution is valid, `false`\notherwise\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_submitWork\",\n    \"params\": [\n        \"0x0000000000000001\",\n        \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n        \"0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000\"\n    ]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": true\n}\n----\n\n'''''\n\n==== eth_syncing\n\n===== Description\n\nReturns information about the status of this client's network\nsynchronization\n\n===== Parameters\n\n_(none)_\n\n===== Returns\n\n\\{`boolean|object`} - `false` if this client is not syncing with the\nnetwork, otherwise an object with the following members:\n\n* \\{link:#quantity[`Quantity`]} `currentBlock` - number of the\nmost-recent block synced\n* \\{link:#quantity[`Quantity`]} `highestBlock` - number of latest block\non the network\n* \\{link:#quantity[`Quantity`]} `startingBlock` - block number at which\nsyncing started\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_syncing\",\n    \"params\": []\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n        \"currentBlock\": '0x386',\n        \"highestBlock\": '0x454',\n        \"startingBlock\": '0x384'\n    }\n}\n----\n\n'''''\n\n==== eth_uninstallFilter\n\n===== Description\n\nDestroys a filter based on filter ID\n\n*Note:* This should only be called if a filter and its notifications are\nno longer needed. This will also be called automatically on a filter if\nits notifications are not retrieved using `eth_getFilterChanges` for a\nperiod of time.\n\n===== Parameters\n\n[cols=\",,\",options=\"header\",]\n|===\n|# |Type |Description\n|1 |\\{link:#quantity[`Quantity`]} |ID of the filter to destroy\n|===\n\n===== Returns\n\n\\{`boolean`} - `true` if the filter is found and successfully destroyed\nor `false` if it is not\n\n===== Example\n\n[source,sh]\n----\n# Request\ncurl -X POST --data '{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_uninstallFilter\",\n    \"params\": [\"0xb\"]\n}' \u003curl\u003e\n\n# Response\n{\n    \"id\": 1337,\n    \"jsonrpc\": \"2.0\",\n    \"result\": true\n}\n----\n\n'''''\n\n== Rationale\n\nMuch of Ethereum's effectiveness as an enterprise-grade application\nplatform depends on its ability to provide a reliable and predictable\ndeveloper experience. Nodes created by the current generation of\nEthereum clients expose RPC endpoints with differing method signatures;\nthis forces applications to work around method inconsistencies to\nmaintain compatibility with various Ethereum RPC implementations.\n\nBoth Ethereum client developers and downstream dapp developers lack a\nformal Ethereum RPC specification. This proposal standardizes such a\nspecification in a way that's versionable and modifiable through the\ntraditional EIP process.\n\n== Backwards compatibility\n\nThis proposal impacts Ethereum client developers by requiring that any\nexposed RPC interface adheres to this specification. This proposal\nimpacts dapp developers by requiring that any RPC calls currently used\nin applications are made according to this specification.\n\n== Implementation\n\nThe current generation of Ethereum clients includes several\nimplementations that attempt to expose this RPC specification:\n\n[cols=\",,\",options=\"header\",]\n|===\n|Client Name |Language |Homepage\n|Geth |Go |https://geth.ethereum.org[geth.ethereum.org]\n|Parity |Rust |https://parity.io/ethereum[parity.io/ethereum]\n|Aleth |C++ |https://cpp-ethereum.org[cpp-ethereum.org]\n|===\n\n\n'''''\n\n[[eip-1767-title-graphql-interface-to-ethereum-node-data-author","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsambacha%2Fethereum-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsambacha%2Fethereum-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsambacha%2Fethereum-api/lists"}