forked from cerc-io/laconicd-deprecated
docs: config updates (#409)
* docs: more updates * minor changes * workflow * yarn * structure * more updates * cleanup * additional cleanup * docs * interact with node * additional guides and testnet docs * update swagger * update docs * action
This commit is contained in:
@@ -8,10 +8,9 @@ parent:
|
||||
|
||||
This repository contains reference documentation on the basic concepts of Ethermint.
|
||||
|
||||
1. [Accounts](./accounts.md)
|
||||
2. [Gas and Fees](./gas.md)
|
||||
3. [Lifecycle of a transaction](./transactions.md)
|
||||
4. [Tokens](./tokens.md)
|
||||
5. [JSON-RPC Server](./json_rpc.md)
|
||||
1. [Accounts](./accounts)
|
||||
2. [Gas and Fees](./gas)
|
||||
3. [Lifecycle of a transaction](./transactions)
|
||||
4. [Tokens](./tokens)
|
||||
|
||||
After reading the basics, head on to the [Core Reference](../core/README.md) for more advanced material.
|
||||
After reading the basics, head on to the [Core Reference](../core/README) for more advanced material.
|
||||
|
||||
+89
-26
@@ -21,7 +21,13 @@ The root HD path for Ethermint-based accounts is `m/44'/60'/0'/0`.
|
||||
|
||||
## Addresses and Public Keys
|
||||
|
||||
There are 3 main types of `Addresses`/`PubKeys` available by default on Ethermint:
|
||||
[BIP-0173](https://github.com/satoshilabs/slips/blob/master/slip-0173.md) defines a new format for segregated witness output addresses that contains a human-readable part that identifies the Bech32 usage. Ethermint uses the following HRP (human readable prefix) as the base HRP:
|
||||
|
||||
| Network | Mainnet | Testnet | Regtest |
|
||||
| --------- | ------- | ------- | ------- |
|
||||
| Ethermint | `eth` | `eth` | |
|
||||
|
||||
There are 3 main types of HRP for the `Addresses`/`PubKeys` available by default on Ethermint:
|
||||
|
||||
- Addresses and Keys for **accounts**, which identify users (e.g. the sender of a `message`). They are derived using the **`eth_secp256k1`** curve.
|
||||
- Addresses and Keys for **validator operators**, which identify the operators of validators. They are derived using the **`eth_secp256k1`** curve.
|
||||
@@ -35,49 +41,106 @@ There are 3 main types of `Addresses`/`PubKeys` available by default on Ethermin
|
||||
|
||||
## Address formats for clients
|
||||
|
||||
`EthAccount`s can be represented in both [Bech32](https://en.bitcoin.it/wiki/Bech32) and hex format for Ethereum's Web3 tooling compatibility.
|
||||
`EthAccount` can be represented in both [Bech32](https://en.bitcoin.it/wiki/Bech32) (`eth1...`) and hex (`0x...`) formats for Ethereum's Web3 tooling compatibility.
|
||||
|
||||
The Bech32 format is the default format for Cosmos-SDK queries and transactions through CLI and REST
|
||||
clients. The hex format on the other hand, is the Ethereum `common.Address` representation of a
|
||||
Cosmos `sdk.AccAddress`.
|
||||
|
||||
- Address (Bech32): `eth1crwhac03z2pcgu88jfnqnwu66xlthlz2rhljah`
|
||||
- Address ([EIP55](https://eips.ethereum.org/EIPS/eip-55) Hex): `0xc0dd7ee1f112838470e7926609bb9ad1bebbfc4a`
|
||||
- Compressed Public Key (Bech32): `ethpub1pfqnmk6pqnwwuw0h9hj58t2hyzwvqc3truhhp5tl5hfucezcfy2rs8470nkyzju2vmk645fzmw2wveaqcqek767kwa0es9rmxe9nmmjq84cpny3fvj6tpg`
|
||||
- **Address (Bech32)**: `eth14au322k9munkmx5wrchz9q30juf5wjgz2cfqku`
|
||||
- **Address ([EIP55](https://eips.ethereum.org/EIPS/eip-55) Hex)**: `0xAF79152AC5dF276D9A8e1E2E22822f9713474902`
|
||||
- **Compressed Public Key**: `{"@type":"/ethermint.crypto.v1beta1.ethsecp256k1.PubKey","key":"ApNNebT58zlZxO2yjHiRTJ7a7ufjIzeq5HhLrbmtg9Y/"}`
|
||||
|
||||
You can query an account address using the Cosmos CLI or REST clients:
|
||||
### Address conversion
|
||||
|
||||
The `ethermintd debug addr <address>` can be used to convert an address between hex and bech32 formats. For example:
|
||||
|
||||
```bash
|
||||
# NOTE: the --output (-o) flag will define the output format in JSON or YAML (text)
|
||||
ethermintd q auth account $(ethermintd keys show <MYKEY> -a) -o text
|
||||
|
|
||||
address: eth1f8rqrfwut7ngkxwth0gt99h0lxnxsp09ngvzwl
|
||||
eth_address: 0x49c601A5DC5FA68b19CBbbd0b296eFF9a66805e5
|
||||
coins:
|
||||
- denom: aphoton
|
||||
amount: "1000000000000000000"
|
||||
- denom: stake
|
||||
amount: "999999999900000000"
|
||||
public_key: ethpub1pfqnmkepqw45vpsn6dzvm7k22zrghx0nfewjdfacy7wyycv5evfk57kyhwr8cqj5r4x
|
||||
account_number: 0
|
||||
sequence: 1
|
||||
code_hash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
|
||||
ethermintd debug addr eth12uqc42yj77hk64cdr3vsnpkfs6k0pllln7rudt
|
||||
Address: [87 1 138 168 146 247 175 109 87 13 28 89 9 134 201 134 172 240 255 255]
|
||||
Address (hex): 57018AA892F7AF6D570D1C590986C986ACF0FFFF
|
||||
Bech32 Acc: eth12uqc42yj77hk64cdr3vsnpkfs6k0pllln7rudt
|
||||
Bech32 Val: ethvaloper12uqc42yj77hk64cdr3vsnpkfs6k0pllldvagr4
|
||||
|
||||
ethermintd debug addr 57018AA892F7af6D570D1c590986c986aCf0fFff
|
||||
Address: [87 1 138 168 146 247 175 109 87 13 28 89 9 134 201 134 172 240 255 255]
|
||||
Address (hex): 57018AA892F7AF6D570D1C590986C986ACF0FFFF
|
||||
Bech32 Acc: eth12uqc42yj77hk64cdr3vsnpkfs6k0pllln7rudt
|
||||
Bech32 Val: ethvaloper12uqc42yj77hk64cdr3vsnpkfs6k0pllldvagr4
|
||||
```
|
||||
|
||||
``` bash
|
||||
# GET /auth/accounts/{address}
|
||||
curl -X GET "<NODE_IP>/auth/accounts/eth1f8rqrfwut7ngkxwth0gt99h0lxnxsp09ngvzwl" -H "accept: application/json"
|
||||
```
|
||||
::: tip
|
||||
Add the `0x` prefix to the returned hex address above to represent the Ethereum hex address format. For example:
|
||||
`Address (hex): 57018AA892F7AF6D570D1C590986C986ACF0FFFF` implies that `0x57018AA892F7AF6D570D1C590986C986ACF0FFFF` is the Ethereum hex address.
|
||||
:::
|
||||
|
||||
### Key output
|
||||
|
||||
::: tip
|
||||
The Cosmos SDK Keyring output (i.e `ethermintd keys`) only supports addresses and public keys in Bech32 format.
|
||||
:::
|
||||
|
||||
To retrieve the Ethereum hex address using Web3, use the JSON-RPC [`eth_accounts`](./json_rpc.md#eth-accounts) endpoint:
|
||||
We can use the `keys show` command of `ethermintd` with the flag `--bech <type> (acc|val|cons)` to
|
||||
obtain the addresses and keys as mentioned above,
|
||||
|
||||
```bash
|
||||
ethermintd keys show mykey --bech acc
|
||||
- name: mykey
|
||||
type: local
|
||||
address: eth1qsklxwt77qrxur494uvw07zjynu03dq9alwh37
|
||||
pubkey: '{"@type":"/ethermint.crypto.v1alpha1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}'
|
||||
mnemonic: ""
|
||||
|
||||
ethermintd keys show test --bech val
|
||||
- name: mykey
|
||||
type: local
|
||||
address: ethvaloper1qsklxwt77qrxur494uvw07zjynu03dq9rdsrlq
|
||||
pubkey: '{"@type":"/ethermint.crypto.v1alpha1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}'
|
||||
mnemonic: ""
|
||||
|
||||
ethermintd keys show test --bech cons
|
||||
- name: mykey
|
||||
type: local
|
||||
address: ethvalcons1qsklxwt77qrxur494uvw07zjynu03dq9h7rlnp
|
||||
pubkey: '{"@type":"/ethermint.crypto.v1alpha1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}'
|
||||
mnemonic: ""
|
||||
```
|
||||
|
||||
## Querying an Account
|
||||
|
||||
You can query an account address using the CLI, gRPC or
|
||||
|
||||
### Command Line Interface
|
||||
|
||||
```bash
|
||||
# NOTE: the --output (-o) flag will define the output format in JSON or YAML (text)
|
||||
ethermintd q auth account $(ethermintd keys show <MYKEY> -a) -o text
|
||||
|
|
||||
'@type': /ethermint.types.v1beta1.EthAccount
|
||||
base_account:
|
||||
account_number: "3"
|
||||
address: inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku
|
||||
pub_key: null
|
||||
sequence: "0"
|
||||
code_hash: xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=
|
||||
```
|
||||
|
||||
### Cosmos gRPC and REST
|
||||
|
||||
``` bash
|
||||
# GET /cosmos/auth/v1beta1/accounts/{address}
|
||||
curl -X GET "http://localhost:10337/cosmos/auth/v1beta1/accounts/eth14au322k9munkmx5wrchz9q30juf5wjgz2cfqku" -H "accept: application/json"
|
||||
```
|
||||
|
||||
### JSON-RPC
|
||||
|
||||
To retrieve the Ethereum hex address using Web3, use the JSON-RPC [`eth_accounts`](./../api/json-rpc/endpoints#eth-accounts) or [`personal_listAccounts`](./../api/json-rpc/endpoints#personal-listAccounts) endpoints:
|
||||
|
||||
```bash
|
||||
# query against a local node
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:26664
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_listAccounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
```
|
||||
|
||||
## Next {hide}
|
||||
|
||||
+1
-3
@@ -56,7 +56,6 @@ To ignore the SDK gas consumption, we reset the transaction `GasMeter` count to
|
||||
|
||||
+++ https://github.com/tharsis/ethermint/blob/098da6d0cc0e0c4cefbddf632df1057383973e4a/x/evm/keeper/state_transition.go#L188
|
||||
|
||||
|
||||
### `AnteHandler`
|
||||
|
||||
The Cosmos SDK [`AnteHandler`](https://docs.cosmos.network/master/basics/gas-fees.html#antehandler)
|
||||
@@ -96,8 +95,7 @@ transaction might be higher than the value returned by the EVM after applying th
|
||||
|
||||
A cache context will be used during the whole execution to avoid changes be persisted in the state.
|
||||
|
||||
+++
|
||||
https://github.com/tharsis/ethermint/blob/098da6d0cc0e0c4cefbddf632df1057383973e4a/x/evm/keeper/grpc_query.go#L392
|
||||
+++ https://github.com/tharsis/ethermint/blob/098da6d0cc0e0c4cefbddf632df1057383973e4a/x/evm/keeper/grpc_query.go#L100
|
||||
|
||||
## Next {hide}
|
||||
|
||||
|
||||
@@ -1,998 +0,0 @@
|
||||
<!--
|
||||
order: 5
|
||||
-->
|
||||
|
||||
# JSON-RPC Server
|
||||
|
||||
Check the JSON-RPC methods and namespaces supported on Ethermint. {synopsis}
|
||||
|
||||
## Pre-requisite Readings
|
||||
|
||||
- [Ethereum JSON-RPC](https://eth.wiki/json-rpc/API) {prereq}
|
||||
- [Geth JSON-RPC APIs](https://geth.ethereum.org/docs/rpc/server) {prereq}
|
||||
|
||||
## JSON-RPC Server
|
||||
|
||||
To enable RPC server use the following flag (set to true by default).
|
||||
|
||||
```
|
||||
ethermintd start --evm-rpc.enable
|
||||
```
|
||||
|
||||
`Eth`,`Net` and `Web3` namespaces are enabled by default. In order to enable other namespaces use flag `--evm-rpc.api`.
|
||||
|
||||
```
|
||||
ethermintd start --evm-rpc.api eth,txpool,personal,net,debug,web3
|
||||
```
|
||||
|
||||
## JSON-RPC Methods
|
||||
|
||||
| Method | Namespace | Implemented | Notes |
|
||||
|-----------------------------------------------------------------------------------|-----------|-------------|---------------------------|
|
||||
| [`web3_clientVersion`](#web3-clientversion) | Web3 | ✔ | |
|
||||
| [`web3_sha3`](#web3-sha3) | Web3 | ✔ | |
|
||||
| [`net_version`](#net-version) | Net | ✔ | |
|
||||
| [`net_peerCount`](#net-peerCount) | Net | ✔ | |
|
||||
| [`net_listening`](#net-listening) | Net | ✔ | |
|
||||
| [`eth_protocolVersion`](#eth-protocolversion) | Eth | ✔ | |
|
||||
| [`eth_syncing`](#eth-syncing) | Eth | ✔ | |
|
||||
| [`eth_gasPrice`](#eth-gasprice) | Eth | ✔ | |
|
||||
| [`eth_accounts`](#eth-accounts) | Eth | ✔ | |
|
||||
| [`eth_blockNumber`](#eth-blocknumber) | Eth | ✔ | |
|
||||
| [`eth_getBalance`](#eth-getbalance) | Eth | ✔ | |
|
||||
| [`eth_getStorageAt`](#eth-getstorageat) | Eth | ✔ | |
|
||||
| [`eth_getTransactionCount`](#eth-gettransactioncount) | Eth | ✔ | |
|
||||
| [`eth_getBlockTransactionCountByNumber`](#eth-getblocktransactioncountbynumber) | Eth | ✔ | |
|
||||
| [`eth_getBlockTransactionCountByHash`](#eth-getblocktransactioncountbyhash) | Eth | ✔ | |
|
||||
| [`eth_getCode`](#eth-getcode) | Eth | ✔ | |
|
||||
| [`eth_sign`](#eth-sign) | Eth | ✔ | |
|
||||
| [`eth_sendTransaction`](#eth-sendtransaction) | Eth | ✔ | |
|
||||
| [`eth_sendRawTransaction`](#eth-sendrawtransaction) | Eth | ✔ | |
|
||||
| [`eth_call`](#eth-call) | Eth | ✔ | |
|
||||
| [`eth_estimateGas`](#eth-estimategas) | Eth | ✔ | |
|
||||
| [`eth_getBlockByNumber`](#eth-getblockbynumber) | Eth | ✔ | |
|
||||
| [`eth_getBlockByHash`](#eth-getblockbyhash) | Eth | ✔ | |
|
||||
| [`eth_getTransactionByHash`](#eth-gettransactionbyhash) | Eth | ✔ | |
|
||||
| [`eth_getTransactionByBlockHashAndIndex`](#eth-gettransactionbyblockhashandindex) | Eth | ✔ | |
|
||||
| [`eth_getTransactionReceipt`](#eth-gettransactionreceipt) | Eth | ✔ | |
|
||||
| [`eth_newFilter`](#eth-newfilter) | Eth | ✔ | |
|
||||
| [`eth_newBlockFilter`](#eth-newblockfilter) | Eth | ✔ | |
|
||||
| [`eth_newPendingTransactionFilter`](#eth-newpendingtransactionfilter) | Eth | ✔ | |
|
||||
| [`eth_uninstallFilter`](#eth-uninstallfilter) | Eth | ✔ | |
|
||||
| [`eth_getFilterChanges`](#eth-getfilterchanges) | Eth | ✔ | |
|
||||
| [`eth_getLogs`](#eth-getlogs) | Eth | ✔ | |
|
||||
| `eth_getTransactionbyBlockNumberAndIndex` | Eth | | |
|
||||
| `eth_getWork` | Eth | | |
|
||||
| `eth_submitWork` | Eth | | |
|
||||
| `eth_submitHashrate` | Eth | | |
|
||||
| `eth_getCompilers` | Eth | | |
|
||||
| `eth_compileLLL` | Eth | | |
|
||||
| `eth_compileSolidity` | Eth | | |
|
||||
| `eth_compileSerpent` | Eth | | |
|
||||
| `eth_signTransaction` | Eth | | |
|
||||
| `eth_mining` | Eth | N/A | Not relevant to Ethermint |
|
||||
| [`eth_coinbase`](#eth-coinbase) | Eth | ✔ | |
|
||||
| `eth_hashrate` | Eth | N/A | Not relevant to Ethermint |
|
||||
| `eth_getUncleCountByBlockHash` | Eth | N/A | Not relevant to Ethermint |
|
||||
| `eth_getUncleCountByBlockNumber` | Eth | N/A | Not relevant to Ethermint |
|
||||
| `eth_getUncleByBlockHashAndIndex` | Eth | N/A | Not relevant to Ethermint |
|
||||
| `eth_getUncleByBlockNumberAndIndex` | Eth | N/A | Not relevant to Ethermint |
|
||||
| [`eth_subscribe`](#eth-subscribe) | Websocket | ✔ | |
|
||||
| [`eth_unsubscribe`](#eth-unsubscribe) | Websocket | ✔ | |
|
||||
| [`personal_importRawKey`](#personal-importrawkey) | Personal | ✔ | |
|
||||
| [`personal_listAccounts`](#personal-listaccounts) | Personal | ✔ | |
|
||||
| [`personal_lockAccount`](#personal-lockaccount) | Personal | ✔ | |
|
||||
| [`personal_newAccount`](#personal-newaccount) | Personal | ✔ | |
|
||||
| [`personal_unlockAccount`](#personal-unlockaccount) | Personal | ✔ | |
|
||||
| [`personal_sendTransaction`](#personal-sendtransaction) | Personal | ✔ | |
|
||||
| [`personal_sign`](#personal-sign) | Personal | ✔ | |
|
||||
| [`personal_ecRecover`](#personal-ecrecover) | Personal | ✔ | |
|
||||
| `db_putString` | DB | | |
|
||||
| `db_getString` | DB | | |
|
||||
| `db_putHex` | DB | | |
|
||||
| `db_getHex` | DB | | |
|
||||
| `shh_post` | SSH | | |
|
||||
| `shh_version` | SSH | | |
|
||||
| `shh_newIdentity` | SSH | | |
|
||||
| `shh_hasIdentity` | SSH | | |
|
||||
| `shh_newGroup` | SSH | | |
|
||||
| `shh_addToGroup` | SSH | | |
|
||||
| `shh_newFilter` | SSH | | |
|
||||
| `shh_uninstallFilter` | SSH | | |
|
||||
| `shh_getFilterChanges` | SSH | | |
|
||||
| `shh_getMessages` | SSH | | |
|
||||
| `admin_addPeer` | Admin | | |
|
||||
| `admin_datadir` | Admin | | |
|
||||
| `admin_nodeInfo` | Admin | | |
|
||||
| `admin_peers` | Admin | | |
|
||||
| `admin_startRPC` | Admin | | |
|
||||
| `admin_startWS` | Admin | | |
|
||||
| `admin_stopRPC` | Admin | | |
|
||||
| `admin_stopWS` | Admin | | |
|
||||
| `clique_getSnapshot` | Clique | | |
|
||||
| `clique_getSnapshotAtHash` | Clique | | |
|
||||
| `clique_getSigners` | Clique | | |
|
||||
| `clique_proposals` | Clique | | |
|
||||
| `clique_propose` | Clique | | |
|
||||
| `clique_discard` | Clique | | |
|
||||
| `clique_status` | Clique | | |
|
||||
| `debug_backtraceAt` | Debug | | |
|
||||
| `debug_blockProfile` | Debug | ✔ | |
|
||||
| `debug_cpuProfile` | Debug | ✔ | |
|
||||
| `debug_dumpBlock` | Debug | | |
|
||||
| `debug_gcStats` | Debug | ✔ | |
|
||||
| `debug_getBlockRlp` | Debug | | |
|
||||
| `debug_goTrace` | Debug | ✔ | |
|
||||
| `debug_freeOSMemory` | Debug | ✔ | |
|
||||
| `debug_memStats` | Debug | ✔ | |
|
||||
| `debug_mutexProfile` | Debug | ✔ | |
|
||||
| `debug_seedHash` | Debug | | |
|
||||
| `debug_setHead` | Debug | | |
|
||||
| `debug_setBlockProfileRate` | Debug | ✔ | |
|
||||
| `debug_setGCPercent` | Debug | ✔ | |
|
||||
| `debug_setMutexProfileFraction` | Debug | ✔ | |
|
||||
| `debug_stacks` | Debug | ✔ | |
|
||||
| `debug_startCPUProfile` | Debug | ✔ | |
|
||||
| `debug_startGoTrace` | Debug | ✔ | |
|
||||
| `debug_stopCPUProfile` | Debug | ✔ | |
|
||||
| `debug_stopGoTrace` | Debug | ✔ | |
|
||||
| `debug_traceBlock` | Debug | | |
|
||||
| `debug_traceBlockByNumber` | Debug | | |
|
||||
| `debug_traceBlockByHash` | Debug | | |
|
||||
| `debug_traceBlockFromFile` | Debug | | |
|
||||
| `debug_standardTraceBlockToFile` | Debug | | |
|
||||
| `debug_standardTraceBadBlockToFile` | Debug | | |
|
||||
| `debug_traceTransaction` | Debug | | |
|
||||
| `debug_verbosity` | Debug | | |
|
||||
| `debug_vmodule` | Debug | | |
|
||||
| `debug_writeBlockProfile` | Debug | ✔ | |
|
||||
| `debug_writeMemProfile` | Debug | ✔ | |
|
||||
| `debug_writeMutexProfile` | Debug | ✔ | |
|
||||
| `les_serverInfo` | Les | | |
|
||||
| `les_clientInfo` | Les | | |
|
||||
| `les_priorityClientInfo` | Les | | |
|
||||
| `les_addBalance` | Les | | |
|
||||
| `les_setClientParams` | Les | | |
|
||||
| `les_setDefaultParams` | Les | | |
|
||||
| `les_latestCheckpoint` | Les | | |
|
||||
| `les_getCheckpoint` | Les | | |
|
||||
| `les_getCheckpointContractAddress` | Les | | |
|
||||
| `miner_getHashrate` | Miner | N/A | Not relevant to Ethermint |
|
||||
| `miner_setExtra` | Miner | N/A | Not relevant to Ethermint |
|
||||
| `miner_setGasPrice` | Miner | ✔ | |
|
||||
| `miner_start` | Miner | N/A | Not relevant to Ethermint |
|
||||
| `miner_stop` | Miner | N/A | Not relevant to Ethermint |
|
||||
| `miner_setGasLimit` | Miner | N/A | Not relevant to Ethermint |
|
||||
| `miner_setEtherbase` | Miner | ✔ | |
|
||||
| `txpool_content` | TXPool | ✔ | |
|
||||
| `txpool_inspect` | TXPool | ✔ | |
|
||||
| `txpool_status` | TXPool | ✔ | |
|
||||
|
||||
|
||||
:::tip
|
||||
Block Number can be entered as a Hex string, `"earliest"`, `"latest"` or `"pending"`.
|
||||
:::
|
||||
|
||||
Below is a list of the RPC methods, the parameters and an example response from the namespaces.
|
||||
|
||||
## Web3 Methods
|
||||
|
||||
### web3_clientVersion
|
||||
|
||||
Get the web3 client version.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"Ethermint/0.0.0+/linux/go1.14"}
|
||||
```
|
||||
|
||||
### web3_sha3
|
||||
|
||||
Returns Keccak-256 (not the standardized SHA3-256) of the given data.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- The data to convert into a SHA3 hash
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x67656c6c6f20776f726c64"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x1b84adea42d5b7d192fd8a61a85b25abe0757e9a65cab1da470258914053823f"}
|
||||
```
|
||||
|
||||
## Net Methods
|
||||
|
||||
### net_version
|
||||
|
||||
Returns the current network id.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"8"}
|
||||
```
|
||||
|
||||
### net_peerCount
|
||||
|
||||
Returns the number of peers currently connected to the client.
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":23}
|
||||
```
|
||||
|
||||
### net_listening
|
||||
|
||||
Returns if client is actively listening for network connections.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":true}
|
||||
```
|
||||
|
||||
## Eth Methods
|
||||
|
||||
### eth_protocolVersion
|
||||
|
||||
Returns the current ethereum protocol version.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x3f"}
|
||||
```
|
||||
|
||||
### eth_syncing
|
||||
|
||||
The sync status object may need to be different depending on the details of Tendermint's sync protocol. However, the 'synced' result is simply a boolean, and can easily be derived from Tendermint's internal sync state.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":false}
|
||||
```
|
||||
|
||||
### eth_gasPrice
|
||||
|
||||
Returns the current gas price in aphotons.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x0"}
|
||||
```
|
||||
|
||||
### eth_accounts
|
||||
|
||||
Returns array of all eth accounts.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":["0x3b7252d007059ffc82d16d022da3cbf9992d2f70","0xddd64b4712f7c8f1ace3c145c950339eddaf221d","0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0"]}
|
||||
```
|
||||
|
||||
### eth_blockNumber
|
||||
|
||||
Returns the current block height.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x66"}
|
||||
```
|
||||
|
||||
### eth_getBalance
|
||||
|
||||
Returns the account balance for a given account address and Block Number.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Account Address
|
||||
|
||||
- Block Number
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0", "0x0"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x36354d5575577c8000"}
|
||||
```
|
||||
|
||||
### eth_getStorageAt
|
||||
|
||||
Returns the storage address for a given account address.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Account Address
|
||||
|
||||
- Integer of the position in the storage
|
||||
|
||||
- Block Number
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getStorageAt","params":["0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0", "0", "latest"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x0000000000000000000000000000000000000000000000000000000000000000"}
|
||||
```
|
||||
|
||||
### eth_getTransactionCount
|
||||
|
||||
Returns the total transaction for a given account address and Block Number.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Account Address
|
||||
|
||||
- Block Number
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x7bf7b17da59880d9bcca24915679668db75f9397", "0x0"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x8"}
|
||||
```
|
||||
|
||||
### eth_getBlockTransactionCountByNumber
|
||||
|
||||
Returns the total transaction count for a given block number.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Block number
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x1"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"difficulty":null,"extraData":"0x0","gasLimit":"0xffffffff","gasUsed":"0x0","hash":"0x8101cc04aea3341a6d4b3ced715e3f38de1e72867d6c0db5f5247d1a42fbb085","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","miner":"0x0000000000000000000000000000000000000000","nonce":null,"number":"0x17d","parentHash":"0x70445488069d2584fea7d18c829e179322e2b2185b25430850deced481ca2e77","sha3Uncles":null,"size":"0x1df","stateRoot":"0x269bb17fe7adb8dd5f15f57b717979f82078d6b7a675c1ba1b0da2d27e415fcc","timestamp":"0x5f5ba97c","totalDifficulty":null,"transactions":[],"transactionsRoot":"0x","uncles":[]}}
|
||||
```
|
||||
|
||||
### eth_getBlockTransactionCountByHash
|
||||
|
||||
Returns the total transaction count for a given block hash.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Block Hash
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0x8101cc04aea3341a6d4b3ced715e3f38de1e72867d6c0db5f5247d1a42fbb085"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x3"}
|
||||
```
|
||||
|
||||
### eth_getCode
|
||||
|
||||
Returns the code for a given account address and Block Number.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Account Address
|
||||
|
||||
- Block Number
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0x7bf7b17da59880d9bcca24915679668db75f9397", "0x0"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0xef616c92f3cfc9e92dc270d6acff9cea213cecc7020a76ee4395af09bdceb4837a1ebdb5735e11e7d3adb6104e0c3ac55180b4ddf5e54d022cc5e8837f6a4f971b"}
|
||||
```
|
||||
|
||||
### eth_sign
|
||||
|
||||
The sign method calculates an Ethereum specific signature with: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))).
|
||||
|
||||
By adding a prefix to the message makes the calculated signature recognisable as an Ethereum specific signature. This prevents misuse where a malicious DApp can sign arbitrary data (e.g. transaction) and use the signature to impersonate the victim.
|
||||
|
||||
::: warning
|
||||
the address to sign with must be unlocked.
|
||||
:::
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Account Address
|
||||
|
||||
- Message to sign
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x3b7252d007059ffc82d16d022da3cbf9992d2f70", "0xdeadbeaf"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x909809c76ed2a5d38733de39207d0f411222b9b49c64a192bf649cb13f63f37b45acb4f6939facb4f1c277bc70fb00407564140c0f18600ac44388f2c1dfd1dc1b"}
|
||||
```
|
||||
|
||||
### eth_sendTransaction
|
||||
|
||||
Sends transaction from given account to a given account.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Object containing:
|
||||
|
||||
from: DATA, 20 Bytes - The address the transaction is send from.
|
||||
|
||||
to: DATA, 20 Bytes - (optional when creating new contract) The address the transaction is directed to.
|
||||
|
||||
gas: QUANTITY - (optional, default: 90000) Integer of the gas provided for the transaction execution. It will return unused gas.
|
||||
|
||||
gasPrice: QUANTITY - (optional, default: To-Be-Determined) Integer of the gasPrice used for each paid gas
|
||||
|
||||
value: QUANTITY - value sent with this transaction
|
||||
|
||||
data: DATA - The compiled code of a contract OR the hash of the invoked method signature and encoded parameters. For details see Ethereum Contract ABI
|
||||
|
||||
nonce: QUANTITY - (optional) Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.
|
||||
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0x3b7252d007059ffc82d16d022da3cbf9992d2f70", "to":"0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0", "value":"0x16345785d8a0000", "gasLimit":"0x5208", "gasPrice":"0x55ae82600"}],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x33653249db68ebe5c7ae36d93c9b2abc10745c80a72f591e296f598e2d4709f6"}
|
||||
```
|
||||
|
||||
### eth_sendRawTransaction
|
||||
|
||||
Creates new message call transaction or a contract creation for signed transactions.
|
||||
|
||||
You can get signed transaction data using the personal_sign method
|
||||
|
||||
#### Parameters
|
||||
|
||||
- The signed transaction data
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf9ff74c86aefeb5f6019d77280bbb44fb695b4d45cfe97e6eed7acd62905f4a85034d5c68ed25a2e7a8eeb9baf1b8401e4f865d92ec48c1763bf649e354d900b1c"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x0000000000000000000000000000000000000000000000000000000000000000"}
|
||||
```
|
||||
|
||||
### eth_call
|
||||
|
||||
Executes a new message call immediately without creating a transaction on the block chain.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Object containing:
|
||||
|
||||
from: DATA, 20 Bytes - (optional) The address the transaction is sent from.
|
||||
|
||||
to: DATA, 20 Bytes - The address the transaction is directed to.
|
||||
|
||||
gas: QUANTITY - gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions.
|
||||
|
||||
gasPrice: QUANTITY - gasPrice used for each paid gas
|
||||
|
||||
value: QUANTITY - value sent with this transaction
|
||||
|
||||
data: DATA - (optional) Hash of the method signature and encoded parameters. For details see Ethereum Contract ABI in the Solidity documentation
|
||||
|
||||
- Block number
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x3b7252d007059ffc82d16d022da3cbf9992d2f70", "to":"0xddd64b4712f7c8f1ace3c145c950339eddaf221d", "gas":"0x5208", "gasPrice":"0x55ae82600", "value":"0x16345785d8a0000", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}, "0x0"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x"}
|
||||
```
|
||||
|
||||
### eth_estimateGas
|
||||
|
||||
Returns an estimate value of the gas required to send the transaction.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Object containing:
|
||||
|
||||
from: DATA, 20 Bytes - The address the transaction is send from.
|
||||
|
||||
to: DATA, 20 Bytes - (optional when creating new contract) The address the transaction is directed to.
|
||||
|
||||
value: QUANTITY - value sent with this transaction
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"from":"0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0", "to":"0x3b7252d007059ffc82d16d022da3cbf9992d2f70", "value":"0x16345785d8a00000"}],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x1199b"}
|
||||
```
|
||||
|
||||
### eth_getBlockByNumber
|
||||
|
||||
Returns information about a block by block number.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Block Number
|
||||
|
||||
- If true it returns the full transaction objects, if false only the hashes of the transactions.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1", false],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"difficulty":null,"extraData":"0x0","gasLimit":"0xffffffff","gasUsed":null,"hash":"0xabac6416f737a0eb54f47495b60246d405d138a6a64946458cf6cbeae0d48465","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","miner":"0x0000000000000000000000000000000000000000","nonce":null,"number":"0x1","parentHash":"0x","sha3Uncles":null,"size":"0x9b","stateRoot":"0x","timestamp":"0x5f5bd3e5","totalDifficulty":null,"transactions":[],"transactionsRoot":"0x","uncles":[]}}
|
||||
```
|
||||
|
||||
### eth_getBlockByHash
|
||||
|
||||
Returns the block info given the hash found in the command above and a bool.
|
||||
|
||||
#### Parameters
|
||||
- Hash of a block.
|
||||
|
||||
- If true it returns the full transaction objects, if false only the hashes of the transactions.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0x1b9911f57c13e5160d567ea6cf5b545413f96b95e43ec6e02787043351fb2cc4", false],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"difficulty":null,"extraData":"0x0","gasLimit":"0xffffffff","gasUsed":null,"hash":"0x1b9911f57c13e5160d567ea6cf5b545413f96b95e43ec6e02787043351fb2cc4","logsBloom":"0x00000000100000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000002000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000","miner":"0x0000000000000000000000000000000000000000","nonce":null,"number":"0xc","parentHash":"0x404e58f31a9ede1b614b98701d6b0fbf1450f186842dbcf6426dd16811a5ca0d","sha3Uncles":null,"size":"0x307","stateRoot":"0x599ccdb111fc62c6398dc39be957df8e97bf8ab72ce6c06ff10641a92b754627","timestamp":"0x5f5fdbbd","totalDifficulty":null,"transactions":["0xae64961cb206a9773a6e5efeb337773a6fd0a2085ce480a174135a029afea615"],"transactionsRoot":"0x4764dba431128836fa919b83d314ba9cc000e75f38e1c31a60484409acea777b","uncles":[]}}
|
||||
```
|
||||
|
||||
### eth_getTransactionByHash
|
||||
|
||||
Returns transaction details given the ethereum tx something.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- hash of a transaction
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl localhost:8545 -H "Content-Type:application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xec5fa15e1368d6ac314f9f64118c5794f076f63c02e66f97ea5fe1de761a8973"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"blockHash":"0x7a7398cc11d9c4c8e6f53e0c73824297aceafdab62db9e4b867a0da694384864","blockNumber":"0x188","from":"0x3b7252d007059ffc82d16d022da3cbf9992d2f70","gas":"0x147ee","gasPrice":"0x3b9aca00","hash":"0xec5fa15e1368d6ac314f9f64118c5794f076f63c02e66f97ea5fe1de761a8973","input":"0x6dba746c","nonce":"0x18","to":"0xa655256f589060437e5ffe2246dec385d040f148","transactionIndex":"0x0","value":"0x0","v":"0xa96","r":"0x6db399d694a452fb4106419140a6e5dbbe6817743a0f6f695a651e6576e59a5e","s":"0x25dd6ab1f936d0280d2fed0caeb0ebe5b9a46de6d8cb08ad8fd2c88deb55fc31"}}
|
||||
```
|
||||
|
||||
### eth_getTransactionByBlockHashAndIndex
|
||||
|
||||
Returns transaction details given the block hash and the transaction index.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Hash of a block.
|
||||
|
||||
- Transaction index position.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl localhost:8545 -H "Content-Type:application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1b9911f57c13e5160d567ea6cf5b545413f96b95e43ec6e02787043351fb2cc4", "0x0"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"blockHash":"0x1b9911f57c13e5160d567ea6cf5b545413f96b95e43ec6e02787043351fb2cc4","blockNumber":"0xc","from":"0xddd64b4712f7c8f1ace3c145c950339eddaf221d","gas":"0x4c4b40","gasPrice":"0x3b9aca00","hash":"0xae64961cb206a9773a6e5efeb337773a6fd0a2085ce480a174135a029afea615","input":"0x4f2be91f","nonce":"0x0","to":"0x439c697e0742a0ddb124a376efd62a72a94ac35a","transactionIndex":"0x0","value":"0x0","v":"0xa96","r":"0xced57d973e58b0f634f776d57daf41d3d3387ceb347a3a72ca0746e5ec2b709e","s":"0x384e89e209a5eb147a2bac3a4e399507400ac7b29cd155531f9d6203a89db3f2"}}
|
||||
```
|
||||
|
||||
### eth_getTransactionReceipt
|
||||
|
||||
Returns the receipt of a transaction by transaction hash.
|
||||
|
||||
Note: Tx Code from Tendermint and the Ethereum receipt status are switched:
|
||||
| | Tendermint | Ethereum |
|
||||
| ------- | ---------- | -------- |
|
||||
| Success | 0 | 1 |
|
||||
| Fail | 1 | 0 |
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Hash of a transaction
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl localhost:8545 -H "Content-Type:application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xae64961cb206a9773a6e5efeb337773a6fd0a2085ce480a174135a029afea614"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"blockHash":"0x1b9911f57c13e5160d567ea6cf5b545413f96b95e43ec6e02787043351fb2cc4","blockNumber":"0xc","contractAddress":"0x0000000000000000000000000000000000000000","cumulativeGasUsed":null,"from":"0xddd64b4712f7c8f1ace3c145c950339eddaf221d","gasUsed":"0x5289","logs":[{"address":"0x439c697e0742a0ddb124a376efd62a72a94ac35a","topics":["0x64a55044d1f2eddebe1b90e8e2853e8e96931cefadbfa0b2ceb34bee36061941"],"data":"0x0000000000000000000000000000000000000000000000000000000000000002","blockNumber":"0xc","transactionHash":"0xae64961cb206a9773a6e5efeb337773a6fd0a2085ce480a174135a029afea615","transactionIndex":"0x0","blockHash":"0x0000000000000000000000000000000000000000000000000000000000000000","logIndex":"0x0","removed":false},{"address":"0x439c697e0742a0ddb124a376efd62a72a94ac35a","topics":["0x938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b829"],"data":"0x0000000000000000000000000000000000000000000000000000000000000002","blockNumber":"0xc","transactionHash":"0xae64961cb206a9773a6e5efeb337773a6fd0a2085ce480a174135a029afea615","transactionIndex":"0x0","blockHash":"0x0000000000000000000000000000000000000000000000000000000000000000","logIndex":"0x1","removed":false}],"logsBloom":"0x00000000100000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000002000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":"0x439c697e0742a0ddb124a376efd62a72a94ac35a","transactionHash":"0xae64961cb206a9773a6e5efeb337773a6fd0a2085ce480a174135a029afea615","transactionIndex":"0x0"}}
|
||||
```
|
||||
|
||||
### eth_newFilter
|
||||
|
||||
Create new filter using topics of some kind.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- hash of a transaction
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl localhost:8545 -H "Content-Type:application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x0000000000000000000000000000000000000000000000000000000012341234"]}],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0xdc714a4a2e3c39dc0b0b84d66a3ccb00"}
|
||||
```
|
||||
|
||||
### eth_newBlockFilter
|
||||
|
||||
Creates a filter in the node, to notify when a new block arrives.
|
||||
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x3503de5f0c766c68f78a03a3b05036a5"}
|
||||
```
|
||||
|
||||
### eth_newPendingTransactionFilter
|
||||
|
||||
Creates a filter in the node, to notify when new pending transactions arrive.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x9daacfb5893d946997d3801ea18e9902"}
|
||||
```
|
||||
|
||||
### eth_uninstallFilter
|
||||
|
||||
Removes the filter with the given filter id. Returns true if the filter was successfully uninstalled, otherwise false.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- The filter id
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb91b6608b61bf56288a661a1bd5eb34a"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":true}
|
||||
```
|
||||
|
||||
### eth_getFilterChanges
|
||||
|
||||
Polling method for a filter, which returns an array of logs which occurred since last poll.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- The filter id
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x127e9eca4f7751fb4e5cb5291ad8b455"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":["0xc6f08d183a81e149896fc5317c872f9092068e88e956ca1864e9bd4c81c09b44","0x3ca6dfb5be15549d721d1b3d10c1bec50ed6217c9ac7b61df361fac9692a27e5","0x776fffac134171acb1ebf2e59856625501ad5ccc5c4c8fe0359e0d4dff8919f2","0x84123103704dbd738c089276ab2b04b5936330b24f6e78453c4ba8bf4848aaf9","0xffddbe5bd8e8aa41e44002daa9ea89ade9e6980a0d83f51d104cf16498827eca","0x53430e49963e8ae32605d8f22dec2e757a691e6436d593854ca4d9383eeab86a","0x975948058c9351a91fbec332ca00dda39d1a919f5f16b996a4c7e30c38ba423b","0x619e37e32024c8efef7f7220e6caff4ee1d682ea78b2ac91e0a6b30850dc0677","0x31a5d985a40d08303ac68000ce008df512bcd1a911c497415c97f0624b4a271a","0x91dcf1fce4503a8dbb3e6fb61073f25cd31d69c766ecba639fefde4436e59d07","0x606d9e0143cfdb410a6812c590a8135b5c6b5c59eec26d760d5cd930aa47257d","0xd3c00b859b29b20ba654415eef648ef58251389c73a138580db87675b0d5465f","0x954391f0eb50888be90489898016ebb54f750f612f3adec2a00854955d5e52d8","0x698905f06aff921a9e9fcef39b8b0d107747c3e6204d2ea79cf4c12debf8d253","0x9fcafec5721938a06eb8e2951ede4b6ef8fae54a8c8f85f3166ec9782a0032b5","0xaec6d3364e47a5716ba69e4705f3c705d017f81298859589591183bfea87be7a","0x91bf2ee13319b6eaca96ed89c126437b66c4df1b13560c6a9bb18556ee3b7e1f","0x4f426dc1fc0ea8149052033065b237892d2d34927b2d558ab50c5a7fb98d6e79","0xdd809fb07e5aab638fef5311371b4e2b27c9c9a6183fde0cdd2b7724f6d2a89b","0x7e12fc92ab953e233a304959a2a8474d96195e71efd9388fdceb1326a577811a","0x30618ef6b490c3cc9979c47163459db37c1a1e0aa5793c56accd417f9d89973b","0x614609f06ee24bae7408e45895b1a25e6b19a8159aeea7a95c9d1339d9ba286f","0x115ddc6d533620040791d241f01f1c5ae3d9d1a8f64b15af5e9793e4d9096e22","0xb7458c9323beeca2cd54f32a6af5671f3cd5a7a251aed9d82bdd6ebe5f56305b","0x573dd48a5ba7bf4cc3d49597cd7419f75ecc9897258f1ebadebd670446d0d358","0xcb6670918439f9698413b53f3b5336d82ca4be152fdefaacf45e052fff6262fc","0xf3fe2a8945abafd269ab97bfdc80b3dbff2202ffdce59a227f952874b966b230","0x989980707007533cc0840a079f77f261a2e818abae1a1ffd3af02f3fff1d35fd","0x886b6ae365fec996be8a9a2c31cf4cda97ff8352908be2c83f17abd66ef1591e","0xfd90df68706ef95a62b317de93d6899a9bd6c80416e42d007f5c30fcdedfce24","0x7af8491fbb0373886d9032bb74e0ef52ed9e100f260b79bd15f46126b38cbede","0x91d1e2cd55533cf7dd5de86c9aa73295e811b1279be193d429bbd6ba83810e16","0x6b65b3128c2104005a04923288fe2aa33a2477a4962bef70532f94cab582f2a7"]}
|
||||
```
|
||||
|
||||
<!--
|
||||
### eth_getFilterLogs
|
||||
|
||||
Polling method for a filter, which returns an array of logs which occurred since last poll.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- The filter id
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x127e9eca4f7751fb4e5cb5291ad8b455"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"filter 0x35b64c227ce30e84fc5c7bd347be380e doesn't have a LogsSubscription type: got 5"}}
|
||||
``` -->
|
||||
|
||||
### eth_getLogs
|
||||
|
||||
Returns an array of all logs matching a given filter object.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Object containing:
|
||||
|
||||
fromBlock: QUANTITY|TAG - (optional, default: "latest") Integer block number, or "latest" for the last mined block or "pending", "earliest" for not yet mined transactions.
|
||||
|
||||
toBlock: QUANTITY|TAG - (optional, default: "latest") Integer block number, or "latest" for the last mined block or "pending", "earliest" for not yet mined transactions.
|
||||
|
||||
address: DATA|Array, 20 Bytes - (optional) Contract address or a list of addresses from which logs should originate.
|
||||
|
||||
topics: Array of DATA, - (optional) Array of 32 Bytes DATA topics. Topics are order-dependent. Each topic can also be an array of DATA with “or” options.
|
||||
|
||||
blockhash: (optional, future) With the addition of EIP-234, blockHash will be a new filter option which restricts the logs returned to the single block with the 32-byte hash blockHash. Using blockHash is equivalent to fromBlock = toBlock = the block number with hash blockHash. If blockHash is present in in the filter criteria, then neither fromBlock nor toBlock are allowed.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd738898","0x0000000000000000000000000000000000000000000000000000000000000011"], "fromBlock":"latest"}],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":[]}
|
||||
```
|
||||
|
||||
## TxPool Methods
|
||||
|
||||
### txpool_content
|
||||
|
||||
Returns a list of the exact details of all the transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_content","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"pending":{},"queued":{}}
|
||||
```
|
||||
|
||||
### txpool_inspect
|
||||
|
||||
Returns a list on text format to summarize all the transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only. This is a method specifically tailored to developers to quickly see the transactions in the pool and find any potential issues.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_inspect","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"pending":{},"queued":{}}
|
||||
```
|
||||
|
||||
### txpool_status
|
||||
|
||||
Returns the number of transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_status","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":{"pending":"0x0","queued":"0x0"}}
|
||||
```
|
||||
|
||||
### eth_coinbase
|
||||
|
||||
Returns the account the mining rewards will be send to.
|
||||
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E"}
|
||||
```
|
||||
|
||||
## WebSocket Methods
|
||||
|
||||
Read about websockets in [events](./../quickstart/events.md) {hide}
|
||||
|
||||
### eth_subscribe
|
||||
|
||||
subscribe using JSON-RPC notifications. This allows clients to wait for events instead of polling for them.
|
||||
|
||||
It works by subscribing to particular events. The node will return a subscription id. For each event that matches the subscription a notification with relevant data is send together with the subscription id.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Subscription Name
|
||||
|
||||
- Optional Arguments
|
||||
|
||||
```json
|
||||
// Request
|
||||
{"id": 1, "method": "eth_subscribe", "params": ["newHeads", {"includeTransactions": true}]}
|
||||
|
||||
// Result
|
||||
< {"jsonrpc":"2.0","result":"0x34da6f29e3e953af4d0c7c58658fd525","id":1}
|
||||
```
|
||||
|
||||
### eth_unsubscribe
|
||||
|
||||
Unsubscribe from an event using the subscription id
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Subscription ID
|
||||
|
||||
```json
|
||||
// Request
|
||||
{"id": 1, "method": "eth_unsubscribe", "params": ["0x34da6f29e3e953af4d0c7c58658fd525"]}
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","result":true,"id":1}
|
||||
```
|
||||
|
||||
## Personal Methods
|
||||
|
||||
### personal_importRawKey
|
||||
|
||||
Imports the given unencrypted private key (hex string) into the key store, encrypting it with the passphrase.
|
||||
|
||||
Returns the address of the new account.
|
||||
|
||||
:::warning
|
||||
Currently, this is not implemented since the feature is not supported by the keys
|
||||
:::
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Hex encoded ECDSA key
|
||||
|
||||
- Passphrase
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_importRawKey","params":["c5bd76cd0cd948de17a31261567d219576e992d9066fe1a6bca97496dec634e2c8e06f8949773b300b9f73fabbbc7710d5d6691e96bcf3c9145e15daf6fe07b9", "the key is this"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
```
|
||||
|
||||
### personal_listAccounts
|
||||
|
||||
Returns a list of addresses for accounts this node manages.
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_listAccounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":["0x3b7252d007059ffc82d16d022da3cbf9992d2f70","0xddd64b4712f7c8f1ace3c145c950339eddaf221d","0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0"]}
|
||||
```
|
||||
|
||||
### personal_lockAccount
|
||||
|
||||
Removes the private key with given address from memory. The account can no longer be used to send transactions.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Account Address
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_lockAccount","params":["0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":true}
|
||||
```
|
||||
|
||||
### personal_newAccount
|
||||
|
||||
Generates a new private key and stores it in the key store directory. The key file is encrypted with the given passphrase. Returns the address of the new account.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Passphrase
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["This is the passphrase"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0xf0e4086ad1c6aab5d42161d5baaae2f9ad0571c0"}
|
||||
```
|
||||
|
||||
### personal_unlockAccount
|
||||
|
||||
Decrypts the key with the given address from the key store.
|
||||
|
||||
Both passphrase and unlock duration are optional when using the JavaScript console. The unencrypted key will be held in memory until the unlock duration expires. If the unlock duration defaults to 300 seconds. An explicit duration of zero seconds unlocks the key until geth exits.
|
||||
|
||||
The account can be used with eth_sign and eth_sendTransaction while it is unlocked.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Account Address
|
||||
|
||||
- Passphrase
|
||||
|
||||
- Duration
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0", "secret passphrase", 30],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":true}
|
||||
```
|
||||
|
||||
### personal_sendTransaction
|
||||
|
||||
Validate the given passphrase and submit transaction.
|
||||
|
||||
The transaction is the same argument as for eth_sendTransaction and contains the from address. If the passphrase can be used to decrypt the private key belogging to tx.from the transaction is verified, signed and send onto the network.
|
||||
|
||||
:::warning
|
||||
The account is not unlocked globally in the node and cannot be used in other RPC calls.
|
||||
:::
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Object containing:
|
||||
|
||||
from: DATA, 20 Bytes - The address the transaction is send from.
|
||||
|
||||
to: DATA, 20 Bytes - (optional when creating new contract) The address the transaction is directed to.
|
||||
|
||||
value: QUANTITY - value sent with this transaction
|
||||
|
||||
- Passphrase
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_sendTransaction","params":[{"from":"0x3b7252d007059ffc82d16d022da3cbf9992d2f70","to":"0xddd64b4712f7c8f1ace3c145c950339eddaf221d", "value":"0x16345785d8a0000"}, "passphrase"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0xd2a31ec1b89615c8d1f4d08fe4e4182efa4a9c0d5758ace6676f485ea60e154c"}
|
||||
```
|
||||
|
||||
### personal_sign
|
||||
|
||||
The sign method calculates an Ethereum specific signature with: sign(keccack256("\x19Ethereum Signed Message:\n" + len(message) + message))).
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Message
|
||||
|
||||
- Account Address
|
||||
|
||||
- Password
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_sign","params":["0xdeadbeaf", "0x3b7252d007059ffc82d16d022da3cbf9992d2f70", "password"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0xf9ff74c86aefeb5f6019d77280bbb44fb695b4d45cfe97e6eed7acd62905f4a85034d5c68ed25a2e7a8eeb9baf1b8401e4f865d92ec48c1763bf649e354d900b1c"}
|
||||
```
|
||||
|
||||
### personal_ecRecover
|
||||
|
||||
ecRecover returns the address associated with the private key that was used to calculate the signature in personal_sign.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Message
|
||||
|
||||
- Signature returned from personal_sign
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_ecRecover","params":["0xdeadbeaf", "0xf9ff74c86aefeb5f6019d77280bbb44fb695b4d45cfe97e6eed7acd62905f4a85034d5c68ed25a2e7a8eeb9baf1b8401e4f865d92ec48c1763bf649e354d900b1c"],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
// Result
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x3b7252d007059ffc82d16d022da3cbf9992d2f70"}
|
||||
```
|
||||
|
||||
## Next {hide}
|
||||
|
||||
Learn about the Ethermint [Hard Spoon](./hard_spoon.md) functionality {hide}
|
||||
Reference in New Issue
Block a user