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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.oortech.com/oort/developers/mainnet-developers/rpc-interfaces/web3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
