# istanbul

The following API method provide access to the IBFT consensus engine.

#### `istanbul_candidates`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_candidates) <a href="#istanbul_candidates" id="istanbul_candidates"></a>

Returns the current candidates which the node tries to vote in or out.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-7)

None

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-7)

`result`: *map* of *strings* to *booleans* - current candidates map

* curl HTTP request
* JSON result
* geth console request
* geth console result

```
curl -X POST http://localhost:8545 --data '{"jsonrpc":"2.0","method":"istanbul_candidates","id":1}' --header "Content-Type: application/json"
```

#### `istanbul_discard`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_discard) <a href="#istanbul_discard" id="istanbul_discard"></a>

Drops a currently running candidate, stopping further votes from being cast either for or against the candidate.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-8)

`address`: *string* - address of the candidate

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-8)

`result`: `null`

* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_getSignersFromBlock`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_getsignersfromblock) <a href="#istanbul_getsignersfromblock" id="istanbul_getsignersfromblock"></a>

Retrieves the public addresses whose seals are included in the specified block number. This means that they participated in the consensus for this block and attested to its validity.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-9)

`blockNumber`: *number* - (optional) block number to retrieve; defaults to current block

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-9)

`result`: *object* - result object with the following fields:

* `number`: *number* - retrieved block's number
* `hash`: *string* - retrieved block's hash
* `author`: *string* - address of the block proposer
* `committers`: *array* of *strings* - list of all addresses whose seal appears in this block
* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_getSignersFromBlockByHash`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_getsignersfromblockbyhash) <a href="#istanbul_getsignersfromblockbyhash" id="istanbul_getsignersfromblockbyhash"></a>

Retrieves the public addresses whose seals are included in the specified block number. This means that they participated in the consensus for this block and attested to its validity.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-10)

`blockHash`: *string* - hash of the block to retrieve (required)

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-10)

`result`: *object* - result object with the following fields:

* `number`: *number* - retrieved block's number
* `hash`: *string* - retrieved block's hash
* `author`: *string* - address of the block proposer
* `committers`: *array* of *strings* - list of all addresses whose seal appears in this block
* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_getSnapshot`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_getsnapshot) <a href="#istanbul_getsnapshot" id="istanbul_getsnapshot"></a>

Retrieves the state snapshot at the specified block number.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-11)

`blockNumber`: *number* or *string* - (optional) integer representing a block number or the string tag `latest` (the last block mined); defaults to `latest`

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-11)

`result`: *object* - snapshot object

* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_getSnapshotAtHash`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_getsnapshotathash) <a href="#istanbul_getsnapshotathash" id="istanbul_getsnapshotathash"></a>

Retrieves the state snapshot at the specified block hash.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-12)

`blockHash`: *string* - block hash

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-12)

`result`: *object* - snapshot object

* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_getValidators`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_getvalidators) <a href="#istanbul_getvalidators" id="istanbul_getvalidators"></a>

Retrieves the list of authorized validators at the specified block number.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-13)

`blockNumber`: *number* or *string* - (optional) integer representing a block number or the string tag `latest` (the last block mined); defaults to `latest`

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-13)

`result`: *array* of *strings* - list of validator addresses

* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_getValidatorsAtHash`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_getvalidatorsathash) <a href="#istanbul_getvalidatorsathash" id="istanbul_getvalidatorsathash"></a>

Retrieves the list of authorized validators at the specified block hash.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-14)

`blockHash`: *string* - block hash

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-14)

`result`: *array* of *strings* - list of validator addresses

* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_isValidator`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_isvalidator) <a href="#istanbul_isvalidator" id="istanbul_isvalidator"></a>

Indicates if this node is the validator for the specified block number.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-15)

`blockNumber`: *number* - (optional) block number; defaults to latest block number

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-15)

`result`: *boolean* - `true` if this node is the validator for the given `blockNumber`, otherwise `false`

* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_nodeAddress`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_nodeaddress) <a href="#istanbul_nodeaddress" id="istanbul_nodeaddress"></a>

Retrieves the public address that is used to sign proposals, which is derived from the node's `nodekey`.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-16)

None

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-16)

`result`: *string* - node's public signing address

* curl HTTP request
* JSON result
* geth console request
* geth console result

```
curl -X POST http://localhost:8545 --data '{"jsonrpc":"2.0","method":"istanbul_nodeAddress","id":1}' --header "Content-Type: application/json"
```

#### `istanbul_propose`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_propose) <a href="#istanbul_propose" id="istanbul_propose"></a>

Injects a new authorization candidate that the validator attempts to push through. If a majority of the validators vote the candidate in/out, the candidate is added/removed in the validator set.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-17)

* `address`: *string* - address of candidate
* `auth`: *boolean* - `true` votes the candidate in and `false` votes out

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-17)

`result`: `null`

* curl HTTP request
* JSON result
* geth console request
* geth console result

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

#### `istanbul_status`[​](https://docs.goquorum.consensys.io/reference/api-methods#istanbul_status) <a href="#istanbul_status" id="istanbul_status"></a>

Returns the signing status of blocks for the specified block range.

**Parameters**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#parameters-18)

* `startBlockNumber`: *number* - start block number
* `endBlockNumber`: *number* - end block number

If the start block and end block numbers are not provided, the status of the last 64 blocks is returned.

**Returns**[**​**](https://docs.goquorum.consensys.io/reference/api-methods#returns-18)

`result`: *object* - result object with the following fields:

* `numBlocks`: *number* - number of blocks for which sealer activity is retrieved
* `sealerActivity`: *map* of *strings* to *numbers* - key is the validator and value is the number of blocks sealed by the validator
* curl HTTP request
* JSON result
* geth console request
* geth console result

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

<br>


---

# 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://developer.electroneum.com/etn-sc-client/interacting-with-etn-sc/json-rpc-namespaces/istanbul.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.
