# web3

RPC request uses HTTP POST method. The contents in the request are in JSON format, in which the *method* field specifies the name of the RPC interface.

The following is a list of web3 RPCs that MCP current compatible with.

## web3\_clientVersion

Returns the current client version.

### Parameters

None

### **Returns**

* `String` - The current client version

### **Example**

Request

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

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "MCP//v1.0.0"
}
```

## web3\_sha3

Returns Keccak-256 (**not** the standardized SHA3-256) of the given data.

### **Parameters**

1. `String` - The data to convert into a SHA3 hash.

```
params: [
  "0x68656c6c6f20776f726c64" // "hello world"
]
```

### **Returns**

* `Data` - The Keccak-256 hash of the given string.

### **Example**

Request

```
curl --data '{"method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
}
```

## eth\_blockNumber

Returns the number of most recent block.

### **Parameters**

None

### **Returns**

* `Quantity` - integer of the current block number the client is on.

### **Example**

Request

```
curl --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x4b7" // 1207
}
```

## eth\_getTransactionCount

Returns the number of transactions *sent* from an address.

### **Parameters**

1. `Address` - 20 Bytes - address.
2. `Quantity` or `Tag` - (optional) integer block number, or the string `'latest'`, `'earliest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber).

### **Returns**

* `Quantity` - integer of the number of transactions send from this address.

### **Example**

Request

```
curl --data '{"method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

## eth\_chainId

Returns the chain ID used for transaction signing at the current best block. Null is returned if not available.

### **Parameters**

None

### **Returns**

* `Quantity` - Chain ID, or `null` if not available.

### **Example**

Request

```
curl --data '{"method":"eth_chainId","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x1"
}
```

## eth\_gasPrice

Returns the current price per gas in wei.

### **Parameters**

None

### **Returns**

* `Quantity` - integer of the current gas price in wei.

### **Example**

Request

```
curl --data '{"method":"eth_gasPrice","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

## eth\_estimateGas

Makes a call or transaction, which won’t be added to the blockchain and returns the used gas, which can be used for estimating the used gas.

### **Parameters**

1. `Object` - [Transaction object](#eth_sendtransaction) where `from` field is optional and `nonce` field is ommited.
2. `Quantity` or `Tag` - (optional) Integer block number, or the string `'latest'`, `'earliest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber).

### **Returns**

* `Quantity` - The amount of gas used.

### **Example**

Request

```
curl --data '{"method":"eth_estimateGas","params":[{ ... }],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x5208" // 21000
}
```

## eth\_getBlockByNumber

Returns information about a block by block number.

### **Parameters**

1. `Quantity` or `Tag` - integer of a block number, or the string `'earliest'`, `'latest'` or `'pending'`.
   * `Quantity`/`Integer` - an integer block number;
   * `String "earliest"` - for the earliest/genesis block;
   * `String "latest"` - for the latest mined block;
   * `String "pending"` - for the pending state/transactions.
2. `Boolean` - If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.

```
params: [
  "0x1b4", // 436
  true
]
```

### **Returns**

* `Object` - A block object, or `null` when no block was found.
  * `number`: `Quantity` - The block number. `null` when its pending block
  * `hash`: `Hash` - 32 Bytes - hash of the block.
  * `parentHash`: `Hash` - 32 Bytes - hash of the parent block
  * `nonce`: `Data` - `null`.
  * `extraData`: `Data` - 0x00
  * `gasLimit`: `Quantity` - the maximum gas allowed in this block
  * `minGasPrice`: `Quantity` - the minimum gas price allowed in this block
  * `gasUsed`: `Quantity` - the total used gas by all transactions in this block
  * `timestamp`: `Quantity` - the unix timestamp for when the block was collated
  * `transactions`: `Array` - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter

### **Example**

Request

```
curl --data '{"method":"eth_getBlockByNumber","params":["0x1b4",true],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
    "id": 956931860354523,
    "jsonrpc": "2.0",
    "result": {
        "number": "0x1b",
        "nonce": null,
        "difficulty": "0x0",
        "extraData": "0x00",
        "hash": "0xcad8c320cae32037415aab16ace767ee163a0eaedb29f2282e5acd2596f5d55f",
        "parentHash": "0x8afcf2f16afdd9b8d67ac646213d064f8ce65180192bb678fb5fb3d168ab82a8",
        "gasUsed": "0x1fd7c8",
        "minGasPrice": "0x989680",
        "gasLimit": "0x7a1200",
        "timestamp": "0x62b9f1af",
        "transactions": [
            "0xbf2d4552fba50efcf467da369b2f36596edfc337cb17ff7c9fe9431548231fe3"
        ]
    }
}
```

## eth\_getBlockTransactionCountByHash

Returns the number of transactions in a block from a block matching the given block hash.

### **Parameters**

1. `Hash` - 32 Bytes - hash of a block.

```
params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
```

### **Returns**

* `Quantity` - integer of the number of transactions in this block.

### **Example**

Request

```
curl --data '{"method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xb" // 11
}
```

## eth\_getBlockTransactionCountByNumber

Returns the number of transactions in a block from a block matching the given block number.

### **Parameters**

1. `Quantity` or `Tag` - integer of a block number, or the string `'earliest'`, `'latest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber)..

```
params: [
  "0xe8" // 232
]
```

### **Returns**

* `Quantity` - integer of the number of transactions in this block.

### **Example**

Request

```
curl --data '{"method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xa" // 10
}
```

## eth\_sendRawTransaction

Creates new message call transaction or a contract creation for signed transactions.

### **Parameters**

1. `Data` - The signed transaction data.

```
params: ["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"]
```

### **Returns**

* `Hash` - 32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available

Use [eth\_getTransactionReceipt](#eth_gettransactionreceipt) to get the contract address, after the transaction was mined, when you created a contract.

### **Example**

Request

```
curl --data '{"method":"eth_sendRawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}
```

## eth\_sendTransaction

Creates new message call transaction or a contract creation, if the data field contains code.

### **Parameters**

1. `Object` - Transaction object.
   * `from`: `Address` - 20 Bytes - The address the transaction is sent from.
   * `to`: `Address` - (optional when creating new contract) 20 Bytes - The address the transaction is directed to.
   * `gas`: `Quantity` - (optional) Integer of the gas provided for the transaction execution. [eth\_call](#eth_call) consumes zero gas, but this parameter may be needed by some executions.
   * `gasPrice`: `Quantity` - (optional) Integer of the gas price used for each paid gas.
   * `value`: `Quantity` - (optional) Integer of the value sent with this transaction.
   * `data`: `Data` - (optional) 4 byte hash of the method signature followed by encoded parameters. For details see [Ethereum Contract ABI](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI).
   * `nonce`: `Quantity` - (optional) Integer of a nonce. This allows you to overwrite your own pending transactions that use the same nonce

```
params: [{
  "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
  "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
  "gas": "0x76c0", // 30400
  "gasPrice": "0x9184e72a000", // 10000000000000
  "value": "0x9184e72a", // 2441406250
  "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}]
```

### **Returns**

* `Hash` - 32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available.

Use [eth\_getTransactionReceipt](https://openethereum.github.io/JSONRPC-eth-module#eth_gettransactionreceipt) to get the contract address, after the transaction was mined, when you created a contract.

**Example**

Request

```
curl --data '{"method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":"0x76c0","gasPrice":"0x9184e72a000","value":"0x9184e72a","data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}
```

## eth\_call

Executes a new message call immediately without creating a transaction on the block chain.

### **Parameters**

1. `Object` - [Transaction object](#eth_sendtransaction) where `from` field is optional and `nonce` field is ommited.
2. `Quantity` or `Tag` - (optional) Integer block number, or the string `'latest'`, `'earliest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber).

```
params: [{
  "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
  "to": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
  "value": "0x186a0" // 100000
}]
```

### **Returns**

* `Data` - the return value of executed contract.

### **Example**

Request

```
curl --data '{"method":"eth_call","params":[{"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1","to":"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","value":"0x186a0"}],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x"
}
```

## net\_version

Returns the current network protocol version.

### **Parameters**

None

### **Returns**

* `String` - The current network protocol version

### **Example**

Request

```
curl --data '{"method":"net_version","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "8995"
}
```

## net\_listening

Returns `true` if client is actively listening for network connections.

### **Parameters**

None

### **Returns**

* `Boolean` - `true` when listening, otherwise `false`.

### **Example**

Request

```
curl --data '{"method":"net_listening","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": true
}
```

## net\_peerCount

Returns number of peers currently connected to the client.

### **Parameters**

None

### **Returns**

* `Quantity` - Integer of the number of connected peers

**Example**

Request

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

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x2" // 2
}
```

## eth\_protocolVersion

Returns the current protocol version.

### **Parameters**

None

### **Returns**

* `String` - The current protocol version.

### **Example**

Request

```
curl --data '{"method":"eth_protocolVersion","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x63" // 99
}
```

## eth\_syncing

Returns an object with data about the sync status or `false`.

### **Parameters**

None

### **Returns**

* `Object` - An object with sync status data or `FALSE`, when not syncing.
  * `startingBlock`: `Quantity` - The block at which the import started (will only be reset, after the sync reached this head)
  * `currentBlock`: `Quantity` - The current block, same as eth\_blockNumber
  * `highestBlock`: `Quantity` - The estimated highest block

### **Example**

Request

```
curl --data '{"method":"eth_syncing","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "startingBlock": "0x384", // 900
    "currentBlock": "0x386", // 902
    "highestBlock": "0x454" // 1108
  } // Or `false` when not syncing
}
```

## eth\_getLogs

Returns an array of all logs matching a given filter object.

### **Parameters**

1. `Object` - The filter options:
   * `fromBlock`: `Quantity` or `Tag` - (optional) (default: `latest`) Integer block number, or `'latest'` for the last mined block or `'pending'`, `'earliest'` for not yet mined transactions.
   * `toBlock`: `Quantity` or `Tag` - (optional) (default: `latest`) Integer block number, or `'latest'` for the last mined block or `'pending'`, `'earliest'` for not yet mined transactions.
   * `address`: `Address` - (optional) 20 Bytes - Contract address or a list of addresses from which logs should originate.
   * `topics`: `Array` - (optional) Array of 32 Bytes `Data` topics. Topics are order-dependent. It’s possible to pass in `null` to match any topic, or a subarray of multiple topics of which one should be matching.
   * `limit`: `Quantity` - (optional) The maximum number of entries to retrieve (latest first).

```
params: [{
  "topics": ["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]
}]
```

### **Returns**

* `Array` - Array of log objects, or an empty array if nothing has changed since last poll.

### **Example**

Request

```
curl --data '{"method":"eth_getFilterChanges","params":["0x16"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": [
    {
      "logIndex": "0x1", // 1
      "blockNumber": "0x1b4", // 436
      "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
      "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
      "transactionIndex": "0x0", // 0
      "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
      "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
    },
    ...
  ]
}
```

## eth\_getCode

Returns code at a given address.

### **Parameters**

1. `Address` - 20 Bytes - address.
2. `Quantity` or `Tag` - integer block number, or the string `'latest'`, `'earliest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber).

```
params: [
  "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
  "0x2" // 2
]
```

### **Returns**

* `Data` - the code from the given address.

### **Example**

Request

```
curl --data '{"method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","0x2"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"
}
```

## eth\_getStorageAt

Returns the value from a storage position at a given address.

### **Parameters**

1. `Address` - 20 Bytes - address of the storage.
2. `Quantity` - integer of the position in the storage.
3. `Quantity` or `Tag` - (optional) integer block number, or the string `'latest'`, `'earliest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber).

```
params: [
  "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
  "0x0", // 0
  "0x2" // 2
]
```

### **Returns**

* `Data` - the value at this storage position.

### **Example**

Request

```
curl --data '{"method":"eth_getStorageAt","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","0x0","0x2"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}
```

## eth\_getTransactionByHash

Returns the information about a transaction requested by transaction hash.

### **Parameters**

1. `Hash` - 32 Bytes - hash of a transaction.

```
params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
```

### **Returns**

* `Object` - Transaction Response Object, or `null` when no transaction was found.
  * `hash`: `Hash` - 32 Bytes - hash of the transaction.
  * `nonce`: `Quantity` - the number of transactions made by the sender prior to this one.
  * `blockHash`: `Hash` - 32 Bytes - hash of the block where this transaction was in. `null` when its pending.
  * `blockNumber`: `Quantity` or `Tag` - block number where this transaction was in. `null` when its pending.
  * `transactionIndex`: `Quantity` - integer of the transactions index position in the block. `null` when its pending.
  * `from`: `Address` - 20 Bytes - address of the sender.
  * `to`: `Address` - 20 Bytes - address of the receiver. `null` when its a contract creation transaction.
  * `value`: `Quantity` - value transferred in Wei.
  * `gasPrice`: `Quantity` - gas price provided by the sender in Wei.
  * `gas`: `Quantity` - gas provided by the sender.
  * `input`: `Data` - the data send along with the transaction.
  * `v`: `Quantity` - the standardised V field of the signature.
  * `r`: `Quantity` - the R field of the signature.
  * `s`: `Signature` - the signature of the transaction.

### **Example**

Request

```
curl --data '{"method":"eth_getTransactionByHash","params":["0xbf2d4552fba50efcf467da369b2f36596edfc337cb17ff7c9fe9431548231fe3"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
```

Response

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hash": "0xbf2d4552fba50efcf467da369b2f36596edfc337cb17ff7c9fe9431548231fe3",
        "input": "0xf305d7190000000000000000000000005e1a3ca002d04b3cfedb705320d6cfdf52d7fcf00000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001144b522f45265c2dfdbaee8e324719e63a1694cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
        "to": "0x3a71241d2d880e0e09642db7b5b69277c0e1d455",
        "from": "0x1144b522f45265c2dfdbaee8e324719e63a1694c",
        "gas": "0x1fd7c8",
        "gasPrice": "0x989680",
        "nonce": "0xe",
        "value": "0xde0b6b3a7640000",
        "blockHash": "0xcad8c320cae32037415aab16ace767ee163a0eaedb29f2282e5acd2596f5d55f",
        "transactionIndex": "0x0",
        "blockNumber": "0x1b",
        "r": "0x2fbfb3ded113cbdb579c1bdbe252c3b30a40c5e7c5a644668f87cd889f154eed",
        "s": "0x165d8e90a47f3f1e095ae59f0688f38e89fba27912c75647534da4cc68c22d4c",
        "v": "0x66c"
    }
}
```

## eth\_getTransactionByBlockHashAndIndex

Returns information about a transaction by block hash and transaction index position.

### **Parameters**

1. `Hash` - hash of a block.
2. `Quantity` - integer of the transaction index position.

```
params: [
  "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
  "0x0" // 0
]
```

### **Returns**

* `Object` - [Transaction Response Object](#eth_gettransactionbyhash), or `null` when no transaction

### **Example**

Request

```
curl --data '{"method":"eth_getTransactionByBlockHashAndIndex","params":["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331","0x0"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hash": "0xbf2d4552fba50efcf467da369b2f36596edfc337cb17ff7c9fe9431548231fe3",
        "input": "0xf305d7190000000000000000000000005e1a3ca002d04b3cfedb705320d6cfdf52d7fcf00000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001144b522f45265c2dfdbaee8e324719e63a1694cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
        "to": "0x3a71241d2d880e0e09642db7b5b69277c0e1d455",
        "from": "0x1144b522f45265c2dfdbaee8e324719e63a1694c",
        "gas": "0x1fd7c8",
        "gasPrice": "0x989680",
        "nonce": "0xe",
        "value": "0xde0b6b3a7640000",
        "blockHash": "0xcad8c320cae32037415aab16ace767ee163a0eaedb29f2282e5acd2596f5d55f",
        "transactionIndex": "0x0",
        "blockNumber": "0x1b",
        "r": "0x2fbfb3ded113cbdb579c1bdbe252c3b30a40c5e7c5a644668f87cd889f154eed",
        "s": "0x165d8e90a47f3f1e095ae59f0688f38e89fba27912c75647534da4cc68c22d4c",
        "v": "0x66c"
    }
}
```

## eth\_getTransactionByBlockNumberAndIndex

Returns information about a transaction by block number and transaction index position.

### **Parameters**

1. `Quantity` or `Tag` - a block number, or the string `'earliest'`, `'latest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber).
2. `Quantity` - The transaction index position.

```
params: [
  "0x29c", // 668
  "0x0" // 0
]
```

### **Returns**

* `Object` - [Transaction Response Object](#eth_gettransactionbyhash), or `null` when no transaction

### **Example**

Request

```
curl --data '{"method":"eth_getTransactionByBlockNumberAndIndex","params":["0x29c","0x1"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "hash": "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
    "nonce": "0x0", // 0
    "blockHash": "0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b",
    "blockNumber": "0x29c", // 5599
    "transactionIndex": "0x1", // 1
    "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
    "to": "0x853f43d8a49eeb85d32cf465507dd71d507100c1",
    "value": "0x7f110", // 520464
    "gas": "0x7f110", // 520464
    "gasPrice": "0x09184e72a000",
    "input": "0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360"
  }
}
```

## eth\_getTransactionReceipt

Returns the receipt of a transaction by transaction hash.

### **Parameters**

1. `Hash` - hash of a transaction.

```
params: ["0x444172bef57ad978655171a8af2cfd89baa02a97fcb773067aef7794d6913374"]
```

### **Returns**

* `Object` - Receipt object
  * `blockHash`: `Hash` - 32 Bytes - hash of the block this transaction was in.
  * `blockNumber`: `Quantity` or `Tag` - block number this transaction was in.
  * `contractAddress`: `Address` - 20 Bytes - The contract address created, if the transaction was a contract creation, otherwise `null`.
  * `cumulativeGasUsed`: `Quantity` - The total amount of gas used when this transaction was executed in the block.
  * `from`: `Address` - 20 Bytes - The address of the sender.
  * `to`: `Address` - 20 Bytes - The address of the receiver. `null` when it’s a contract creation transaction.
  * `gasUsed`: `Quantity` - The amount of gas used by this specific transaction alone.
  * `logs`: `Array` - Array of log objects, which this transaction generated.
  * `logsBloom`: `Hash` - 256 Bytes - A bloom filter of logs/events generated by contracts during transaction execution. Used to efficiently rule out transactions without expected logs.
  * `status`: `Quantity` - `0x0` indicates transaction failure , `0x1` indicates transaction success. Set for blocks mined after Byzantium hard fork [EIP609](https://eips.ethereum.org/EIPS/eip-609), `null` before.
  * `transactionHash`: `Hash` - 32 Bytes - hash of the transaction.
  * `transactionIndex`: `Quantity` - Integer of the transaction’s index position in the block.

### **Example**

Request

```
curl --data '{"method":"eth_getTransactionReceipt","params":["0x444172bef57ad978655171a8af2cfd89baa02a97fcb773067aef7794d6913374"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "blockHash": "0x67c0303244ae4beeec329e0c66198e8db8938a94d15a366c7514626528abfc8c",
    "blockNumber": "0x6914b0",
    "contractAddress": "0x471a8bf3fd0dfbe20658a97155388cec674190bf", // or null, if none was created
    "from": "0xc931d93e97ab07fe42d923478ba2465f2",
    "to": null, // value is null because this example transaction is a contract creation
    "cumulativeGasUsed": "0x158e33",
    "gasUsed": "0xba2e6",
    "logs": [], // logs as returned by eth_getFilterLogs, etc.
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "status": "0x1",
    "transactionHash": "0x444172bef57ad978655171a8af2cfd89baa02a97fcb773067aef7794d6913374",
    "transactionIndex": "0x4"
  }
}
```

## eth\_getBalance

Returns the balance of the account of given address.

### **Parameters**

1. `Address` - 20 Bytes - address to check for balance.
2. `Quantity` or `Tag` - (optional) integer block number, or the string `'latest'`, `'earliest'` or `'pending'`, see the [eth\_getBlockByNumber](#eth_getblockbynumber).

```
params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
```

### **Returns**

* `Quantity` - integer of the current balance in wei.

### **Example**

Request

```
curl --data '{"method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x0234c8a3397aab58"
}
```

## eth\_getBlockByHash

Returns information about a block by hash.

### **Parameters**

1. `Hash` - Hash of a block.
2. `Boolean` - If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.

```
params: [
  "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
  true
]
```

### **Returns**

* `Object` - A block object, or `null` when no block was found.

### **Example**

Request

```
curl --data '{"method":"eth_getBlockByHash","params":["0xcad8c320cae32037415aab16ace767ee163a0eaedb29f2282e5acd2596f5d55f",true],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
```

Response

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "number": "0x1b",
        "nonce": null,
        "difficulty": "0x0",
        "extraData": "0x00",
        "hash": "0xcad8c320cae32037415aab16ace767ee163a0eaedb29f2282e5acd2596f5d55f",
        "parentHash": "0x8afcf2f16afdd9b8d67ac646213d064f8ce65180192bb678fb5fb3d168ab82a8",
        "gasUsed": "0x1fd7c8",
        "minGasPrice": "0x989680",
        "gasLimit": "0x7a1200",
        "timestamp": "0x62b9f1af",
        "transactions": [
            "0xbf2d4552fba50efcf467da369b2f36596edfc337cb17ff7c9fe9431548231fe3"
        ]
    }
}
```

## eth\_accounts

Returns a list of addresses owned by client.

### **Parameters**

None

### **Returns**

* `Array` - 20 Bytes - addresses owned by the client.

**Example**

Request

```
curl --data '{"method":"eth_accounts","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
}

```

## eth\_sign

The sign method calculates an Ethereum specific signature with: `sign(keccak256("Ethereum Signed Message: " + len(message) + message)))`.

### **Parameters**

1. `Address` - 20 Bytes - address.
2. `Data` - Data which hash to sign.

```
params: [
  "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
  "0x5363686f6f6c627573" // Schoolbus
]
```

### **Returns**

* `Data` - Signed data.

### **Example**

Request

```
curl --data '{"method":"eth_sign","params":["0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826","0x5363686f6f6c627573"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xb1092cb5b23c2aa55e5b5787729c6be812509376de99a52bea2b41e5a5f8601c5641e74d01e4493c17bf1ef8b179c49362b2c721222128d58422a539310c6ecd1b"
}
```

## eth\_signTransaction

Signs transactions without dispatching it to the network. It can be later submitted using [eth\_sendRawTransaction](#eth_sendrawtransaction).

### **Parameters**

1. `Object` - [Transaction object](#eth_sendtransaction).

### **Returns**

* `Object` - Signed transaction and it’s details:
  * `raw`: `Data` - The signed, RLP encoded transaction.
  * `tx`: `Object` - [Transaction Response Object](#eth_gettransactionbyhash)

### **Example**

Request

```
curl --data '{"method":"eth_signTransaction","params":[{ ... }],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "raw": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
    "tx": {
      "hash": "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
      "nonce": "0x0", // 0
      "blockHash": "0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b",
      "blockNumber": "0x15df", // 5599
      "transactionIndex": "0x1", // 1
      "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
      "to": "0x853f43d8a49eeb85d32cf465507dd71d507100c1",
      "value": "0x7f110", // 520464
      "gas": "0x7f110", // 520464
      "gasPrice": "0x09184e72a000",
      "input": "0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360"
    }
  }
}
```

## personal\_importRawKey

Imports the given unencrypted private key (hex string) into the key store, encrypting it with the passphrase.

### **Parameters**

1. Private Key - 32 Bytes - The private key of the account to import
2. Passphrase - String - The Password for the account

### **Returns**

* Address - 20 Bytes - The imported account

### **Example**

Request

```
curl --data '{"method":"personal_importRawKey","params":["7aa3b91561fceae29a8cb1affb3a9d9b3dec7a720685678ae890df0b6e6eed79", "12345678"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "0xa9d8863d0bf68dbaaacacad4ee0e865a0cc59f28"
}
```

## personal\_listAccounts

Lists all stored accounts.

### **Parameters**

None

### **Returns**

* `Array` - A list of 20 byte account identifiers.

### **Example**

Request

```
curl --data '{"method":"personal_listAccounts","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8765
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": [
    "0x7bf87721a96849d168de02fd6ea5986a3a147383",
    "0xca807a90fd64deed760fb98bf0869b475c469348"
  ]
}
```

## personal\_lockAccount

Removes the private key with given address from memory. The account can no longer be used to send transactions.

### **Parameters**

1. `Address` - 20 Bytes - The address of the account to lock

### **Returns**

* Result - Boolean - true: account is locked

## personal\_newAccount

Creates new account.

**Note:** it becomes the new current unlocked account. There can only be one unlocked account at a time.

### **Parameters**

1. `String` - Password for the new account.

```
params: ["hunter2"]
```

### **Returns**

* `Address` - 20 Bytes - The identifier of the new account.

### **Example**

Request

```
curl --data '{"method":"personal_newAccount","params":["hunter2"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x8f0227d45853a50eefd48dd4fec25d5b3fd2295e"
}
```

## personal\_unlockAccount

Decrypts the key with the given address from the key store. The unencrypted key will be held in memory until the unlock duration expires.

### **Parameters**

1. `Address` - 20 Bytes - The address of the account to unlock
2. Passphrase - String - The password to unlock the account

### **Returns**

* Result - Boolean - true: account is unlocked

## personal\_sendTransaction

Sends transaction and signs it in a single call. The account does not need to be unlocked to make this call, and will not be left unlocked after.

### **Parameters**

1. `Object` - The transaction object
   * `from`: `Address` - 20 Bytes - The address the transaction is send from.
   * `to`: `Address` - (optional) 20 Bytes - The address the transaction is directed to.
   * `gas`: `Quantity` - (optional) Integer of the gas provided for the transaction execution. eth\_call consumes zero gas, but this parameter may be needed by some executions.
   * `gasPrice`: `Quantity` - (optional) Integer of the gas price used for each paid gas.
   * `value`: `Quantity` - (optional) Integer of the value sent with this transaction.
   * `data`: `Data` - (optional) 4 byte hash of the method signature followed by encoded parameters. For details see [Ethereum Contract ABI](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI).
   * `nonce`: `Quantity` - (optional) Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.
2. `String` - Passphrase to unlock the `from` account.

```
params: [
  {
    "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
    "to": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
    "data": "0x41cd5add4fd13aedd64521e363ea279923575ff39718065d38bd46f0e6632e8e",
    "value": "0x186a0"
  },
  "hunter2"
]
```

### **Returns**

* `Data` - 32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available

### **Example**

Request

```
curl --data '{"method":"personal_sendTransaction","params":[{"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1","to":"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","data":"0x41cd5add4fd13aedd64521e363ea279923575ff39718065d38bd46f0e6632e8e","value":"0x186a0"},"hunter2"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x62e05075829655752e146a129a044ad72e95ce33e48ff48118b697e15e7b41e4"
}
```

## personal\_sign

Calculates an Ethereum specific signature with: `sign(keccak256("Ethereum Signed Message: " + len(message) + message)))`.

### **Parameters**

1. `Data` - The data to sign
2. `Address` - 20 Bytes - The address of the account to sign with
3. `String` - Passphrase to unlock the `from` account.

```
params: [
  "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
  "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
  "hunter"
]
```

### **Returns**

* `Data` - Signed data.

**Example**

Request

```
curl --data '{"method":"personal_sign","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","0xb60e8dd61c5d32be8058bb8eb970870f07233155","hunter"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xe7225f986f192f859a9bf84e34b2b7001dfa11aeb5c7164f81a2bee0d79943e2587be1faa11502eba0f803bb0ee071a082b6fe40fba025f3309263a1eef52c711c"
}
```

## personal\_ecRecover

Returns the address associated with the private key that was used to calculate the signature in [`personal_sign`](#personal_sign).

### **Parameters**

1. `Data` - The data which hash was signed.
2. `Data` - Signed data.

```
params: [
  "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
  "0xe7225f986f192f859a9bf84e34b2b7001dfa11aeb5c7164f81a2bee0d79943e2587be1faa11502eba0f803bb0ee071a082b6fe40fba025f3309263a1eef52c711c"
]
```

### **Returns**

* `Address` - Address of the signer of the message.

### **Example**

Request

```
curl --data '{"method":"personal_ecRecover","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","0xe7225f986f192f859a9bf84e34b2b7001dfa11aeb5c7164f81a2bee0d79943e2587be1faa11502eba0f803bb0ee071a082b6fe40fba025f3309263a1eef52c711c"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
```

Response

```
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xb60e8dd61c5d32be8058bb8eb970870f07233155"
}
```
