# Bitrock Blockchain

The last few years saw a surge in the number of Ethereum layer 2 and side chain solutions, aiming to address different drawbacks of the Ethereum chain such as speed, scalability, security, and cost. Many of those side chains have managed to improve certain aspects but not (or sometimes at the expense of) others, and many have not stood the test of time - with lessened long-term sustainability and adoption. This adds to the ongoing scarcity of reliable, robust, and scalable EVM compatible solutions. On top of all, most of these solutions launched through private sales, large-raise presales, or VC (Venture Capital) backings, and therefore may have started out at fairly high market capitalizations – which alienates a significant portion of the average retail investor demographic (with average capital in the market) since such high starting valuations are typically perceived as not likely to lead to a worthwhile ROI.

To provide a holistic and more comprehensive approach to the latest in EVM compatible solutions, Bitrock stepped in as a novel and innovative Ethereum side chain. Having stealth launched in July 2023 with no presale, private sale, or VC backing, not only is Bitrock functionally superior to many other side chains on the market, but it also presents itself as a highly viable and currently undervalued investment opportunity with high ROI potential when compared with the valuations its more seasoned peers have achieved over the years.

After rigorous Testnet testing, Bitrock launched with a live Testnet, and released the Mainnet just 3 days later, boasting a highly impressive 1 second block time, near-zero gas fees (\~0.000001 GWEI), and 12,000 max TPS - redefining native chain transaction speed and cost norms. Users are able to bridge their ERC-20 BROCK to native BROCK via the Bitrock bridge developed in partnership with Wanchain. In addition, Rockswap, the chain's official native DEX, also supports cross chain transactions, enabling assets to be directly traded between 10+ supported chains including the Bitrock chain - without the need to use DEXs native to those chains, hold native chain tokens, or pay gas fees in those native tokens. All gas is equalized and paid in the native token of the origin chain. Additional Bitrock utilities (chain related, DEX related, and otherwise) are under continuous development and continue to be rolled out.

With plenty of prep work done ahead of launch, and a solid track record since launch by a highly competent, motivated, and dedicated team, Bitrock plans to exceed the limits of what an Ethereum side chain solution can attain in cost-effectiveness, security, scalability, and speed.


# Security Audit

A full security audit has been completed for the Bitrock blockchain and contract with CTDSEC, Bitrock's cybersecurity partner. View the audit report below:

CTDSEC - [Bitrock Contract & Blockchain Audit (31/08/2023)](https://github.com/JorgeRodriguezsec/CTDsec/blob/main/Audits/Cybersecurity_Audit_Bitrock_V3.pdf)


# Consensus Algorithm

<figure><img src="/files/eN4m1GacZpR1v1QN0QZ1" alt=""><figcaption></figcaption></figure>

Bitrock blockchain uses IBFT 2.0 proof of authority (PoA) consensus where energy use is more efficient than proof of work (PoW) networks. In IBFT 2.0 networks, approved accounts, known as validators, validate transactions and blocks. Validators take turns to create the next block. Before inserting the block onto the chain, a super-majority of validators must first sign the block. The validator group will grow over time as additional validators are added. Bitrock offers rewards to approved accounts known as validators of 100000000000000 Wei or 0.0001 BROCK every 1s block validated.

Bitrock also supports Ethereum Virtual Machine (EVM) compatible applications, allowing you to deploy smart contracts or WEB3 Applications compatible with EVM and all Ethereum tools like Metamask, Truffle and others.

## Framework Architecture

The following diagram outlines the high-level architecture of the Network.

<figure><img src="/files/rj0wX7rF74aiInqro4U5" alt=""><figcaption></figcaption></figure>

## The Difference

The following diagram outlines the difference between PoW and IBFT 2.0 PoA in performance scale.

<figure><img src="/files/e4dz4Xz37KNPvbAAEpSg" alt=""><figcaption></figcaption></figure>


# Running Full Node

<figure><img src="/files/g6vaQ0VfcK5ve5DkEkrq" alt=""><figcaption></figcaption></figure>

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

* **Java JDK - version 21 or higher.**&#x20;

```
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
sudo apt install ./jdk-21_linux-x64_bin.deb
```

Alternatively, you can manually install the [Java JDK](https://www.oracle.com/java/technologies/downloads).

* [Hyperledger Besu 24.7.0](https://github.com/hyperledger/besu/releases/download/24.7.0/besu-24.7.0.tar.gz) - SHA256: 96cf47defd1d8c10bfc22634e53e3d640eaa81ef58cb0808e5f4265998979530
* 500 GB of disk space and 12 GB RAM is recommended.
* Ubuntu 20.04 or MacOS High Sierra 10.13 or later versions.

<mark style="color:green;">Tip before running in Linux:</mark>

<mark style="color:green;">If synchronizing to Mainnet on Linux or other chains with large data requirements, increase the maximum number of open files allowed using</mark> <mark style="color:green;"></mark><mark style="color:green;">`ulimit`</mark><mark style="color:green;">. If the open files limit is not high enough, a</mark> <mark style="color:green;"></mark><mark style="color:green;">`Too many open files`</mark> <mark style="color:green;"></mark><mark style="color:green;">RocksDB exception occurs.</mark>

## Get Started <a href="#prerequisites" id="prerequisites"></a>

Bitrock-Mainnet Genesis File: <https://raw.githubusercontent.com/BitrockChain/genesis/main/mainnet.json>

### 1. Create Directory <a href="#id-1.-create-directory-and-download-genesis-file" id="id-1.-create-directory-and-download-genesis-file"></a>

{% code overflow="wrap" lineNumbers="true" %}

```sh
mkdir bitrock_node
cd bitrock_node
wget https://raw.githubusercontent.com/BitrockChain/genesis/main/mainnet.json
```

{% endcode %}

### 2. Create Configuration File <a href="#id-2.-create-configuration-file" id="id-2.-create-configuration-file"></a>

Create a **chain\_config.toml** with the following options:

{% code overflow="wrap" lineNumbers="true" %}

```
#Enode Pointing
bootnodes=["enode://1fd6bfa1ac606ab3cdbbbacef1b27a1e38b0ac54d5c1a361d07a27211b54b4817aa9b14e596f23c7020d246998f5224ae18882b181dad2ee940d774a085eb7bd@157.245.21.183:30303","enode://5bca2ebdd0f8e6eb7d916ac92edd3a3ca9f18f99c869c2df703c0457d572b3f7baa8e70880a751204988d97d90fe0566ac5917603981248121e3fc428dee25aa@157.230.28.40:30303","enode://99f9371e0469d486b2c2489de3a7df65dc11f0e7c6cbc4838f4862ac58383fca2f680c0989fd4264ccbae00d66cab20050363976b53b80bbc282c80036ba3f24@159.223.238.200:30303","enode://8f151bb869a67ccfb92a1bd522dd4ab689db6cfd1ce2ed13636b4d6a5fabffd0b12e6a18c2ab42bb0075ea74d74370764eea6b0343f6e56578399bdae2044823@178.62.212.166:30303"]


#Bitrock Genesis File
genesis-file="[PATH]/mainnet.json"

#Data directory
data-path="[PATH]/bitrock_node"

#Chain Configuration 
rpc-http-enabled=true
rpc-ws-enabled=true
host-allowlist=["*"]
sync-mode=["FULL"]
rpc-http-host=[IPHOST]
rpc-ws-host=[IPHOST]
rpc-http-cors-origins=["all"]
poa-block-txs-selection-max-time=["100"] 
rpc-http-max-active-connections=["1000"]
data-storage-format=["FOREST"]

#API Method
rpc-http-api=["ETH","NET","WEB3","TXPOOL","TRACE"]
rpc-ws-api=["ETH","NET","WEB3","TXPOOL","TRACE"]
```

{% endcode %}

### 3. Start Node <a href="#id-3.-start-node" id="id-3.-start-node"></a>

{% code overflow="wrap" lineNumbers="true" %}

```shell
besu --config-file=chain_config.toml
```

{% endcode %}

### 4. Run in a Service System <a href="#id-4.-run-node-as-a-service" id="id-4.-run-node-as-a-service"></a>

{% code overflow="wrap" lineNumbers="true" %}

```sh
nano /etc/systemd/system/bitrockfullnode.service
```

{% endcode %}

```
[Unit]
Description= bitrock full node 

[Service]
Type=simple
User=root
Restart=always
ExecStart=[PATH]/besu --config-file=[PATH]/chain_config.toml 

[Install]
WantedBy=default.target
```

### 5. Confirm Bitrock Network is Running <a href="#id-4.-run-node-as-a-service" id="id-4.-run-node-as-a-service"></a>

{% code overflow="wrap" lineNumbers="true" %}

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53}' http://127.0.0.1:8545
```

{% endcode %}

Response:

{% code overflow="wrap" %}

```sh
{
  "jsonrpc" : "2.0",
  "id" : 53,
  "result" : "0x3e8"
}
```

{% endcode %}

<mark style="color:yellow;">Request to become a Validator:  <info@bit-rock.io></mark>


# Connect to Chain

MetaMask can access many more networks other than just the Ethereum mainnet - any EVM-compatible network can be added. The abbreviation RPC stands for Remote Procedure Call, a set of protocols that allow a client (such as MetaMask) to interact with a blockchain.

<figure><img src="/files/h8pQk3O0CvDANU7JoLME" alt=""><figcaption></figcaption></figure>

## Bitrock Testnet&#x20;

<table data-header-hidden data-full-width="true"><thead><tr><th width="207.5"></th><th></th></tr></thead><tbody><tr><td>Network Name</td><td>Bitrock Testnet</td></tr><tr><td>Symbol</td><td>BROCK</td></tr><tr><td>RPC Endpoints</td><td>https://testnet.bit-rock.io</td></tr><tr><td>Websocket Endpoint</td><td>wss://testnet.bit-rock.io/ws/</td></tr><tr><td>Chain ID</td><td>7771</td></tr><tr><td>Block Explorer</td><td><a href="https://testnetscan.bit-rock.io/">https://testnetscan.bit-rock.io</a></td></tr><tr><td>Faucet</td><td><a href="https://faucet.bit-rock.io/">https://faucet.bit-rock.io/</a></td></tr></tbody></table>

​​

## Bitrock Mainnet

<table data-header-hidden data-full-width="true"><thead><tr><th width="209.5"></th><th></th></tr></thead><tbody><tr><td>Network Name</td><td>Bitrock Mainnet</td></tr><tr><td>Symbol</td><td>BROCK</td></tr><tr><td>RPC Endpoints</td><td><a href="https://connect.bit-rock.io/">https://connect.bit-rock.io</a></td></tr><tr><td></td><td><a href="https://brockrpc.io/">https://brockrpc.io/</a></td></tr><tr><td>Websocket Endpoint</td><td>wss://connect.bit-rock.io/ws/</td></tr><tr><td></td><td>wss://brockrpc.io/ws/</td></tr><tr><td>Chain ID</td><td>7171</td></tr><tr><td>Block Explorer</td><td><a href="https://scan.bit-rock.io">https://scan.bit-rock.io</a></td></tr></tbody></table>

## JSON-RPC Method

{% code overflow="wrap" lineNumbers="true" fullWidth="true" %}

```sh
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53}' https://connect.bit-rock.io
```

{% endcode %}


# API Method

The API Method allows you to interact with the Bitrock Blockchain.

<figure><img src="/files/za4KIiBTbIISq9B0i4qg" alt=""><figcaption></figcaption></figure>

## `ADMIN` methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin-methods" id="admin-methods"></a>

#### `admin_addPeer`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_addpeer" id="admin_addpeer"></a>

If connections are timing out, ensure the node ID in the **enode URL** is correct.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`enode`: - String = enode://1fd6bfa1ac606ab3cdbbbacef1b27a1e38b0ac54d5c1a361d07a27211b54b4817aa9b14e596f23c7020d246998f5224ae18882b181dad2ee940d774a085eb7bd\@206.81.20.253:30303

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - `true` if peer added or `false` if peer already a static node

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":["
enode://1fd6bfa1ac606ab3cdbbbacef1b27a1e38b0ac54d5c1a361d07a27211b54b4817aa9b14e596f23c7020d246998f5224ae18882b181dad2ee940d774a085eb7bd@206.81.20.253:30303
"],"id":1}' https://connect.bit-rock.io
```

#### `admin_changeLogLevel`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_changeloglevel" id="admin_changeloglevel"></a>

Changes the log level without restarting Besu. You can change the log level for all logs, or you can change the log level for specific packages or classes.

You can specify only one log level per RPC call.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `level`: *string* - log level
* `log_filter`: *array* - (optional) packages or classes for which to change the log level

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - `Success` if the log level has changed, otherwise `error`

The following example changes the debug level for specified classes to `DEBUG`.

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0", "method":"admin_changeLogLevel", "params":["DEBUG", ["org.hyperledger.besu.ethereum.eth.manager","org.hyperledger.besu.ethereum.p2p.rlpx.connections.netty.ApiHandler"]], "id":1}' https://connect.bit-rock.io
```

The following example changes the debug level of all logs to `WARN`.

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_changeLogLevel","params":["WARN"], "id":1}' https://connect.bit-rock.io
```

#### `admin_generateLogBloomCache`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_generatelogbloomcache" id="admin_generatelogbloomcache"></a>

Generates cached log bloom indexes for blocks. APIs such as `eth_getLogs` and `eth_getFilterLogs` use the cache for improved performance.

Note

Each index file contains 100000 blocks. The last fragment of blocks less than 100000 are not indexed.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `startBlock`: *string* - block to start generating indexes
* `endBlock`: *string* - block to stop generating indexes

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - log bloom index details:

* `startBlock`: *string* - starting block for the last requested cache generation
* `endBlock`: *string* - ending block for the last requested cache generation
* `currentBlock`: *string* - most recent block added to the cache
* `indexing`: *boolean* - indicates if indexing is in progress
* *boolean* - indicates acceptance of the request from this call to generate the cache
* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{jsonrpc":"2.0","method":"admin_generateLogBloomCache", "params":["0x0", "0x10000"], "id":1}' https://connect.bit-rock.io
```

#### `admin_logsRemoveCache`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_logsremovecache" id="admin_logsremovecache"></a>

Removes cache files for the specified range of blocks.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `fromBlock`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter
* `toBlock`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

You can skip a parameter by using an empty string, `""`. If you specify:

* No parameters, the call removes cache files for all blocks.
* Only `fromBlock`, the call removes cache files for the specified block.
* Only `toBlock`, the call removes cache files from the genesis block to the specified block.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - `Cache Removed` status or `error`.

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRemoveCache","params":["1", "100"], "id":1}' https://connect.bit-rock.io
```

#### `admin_logsRepairCache`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_logsrepaircache" id="admin_logsrepaircache"></a>

Repairs cached logs by fixing all segments starting with the specified block number.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`startBlock`: *string* - decimal index of the starting block to fix; defaults to the head block

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - status of the repair request; `Started` or `Already running`

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRepairCache","params":["1200"], "id":1}' https://connect.bit-rock.io
```

#### `admin_nodeInfo`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_nodeinfo" id="admin_nodeinfo"></a>

Returns networking information about the node. The information includes general information about the node and specific information from each running Ethereum sub-protocol (for example, `eth`).

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

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

* `enode`: *string* - enode URL of the node
* `listenAddr`: *string* - host and port for the node
* `name`: *string* - client name
* `id`: *string* - node public key
* `ports`: *object* - peer discovery and listening ports
* `protocols`: *object* - list of objects containing information for each Ethereum sub-protocol

Note

If the node is running locally, the host of the `enode` and `listenAddr` display as `[::]` in the result. When advertising externally, the external address displayed for the `enode` and `listenAddr` is defined by `--nat-method`.

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1}' https://connect.bit-rock.io
```

#### `admin_peers`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_peers" id="admin_peers"></a>

Returns networking information about connected remote nodes.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of objects returned for each remote node, with the following fields.

* `version`: *string* - P2P protocol version
* `name`: *string* - client name
* `caps`: *array* of *strings* - list of Ethereum sub-protocol capabilities
* `network`: *object* - local and remote addresses established at time of bonding with the peer (the remote address might not match the hex value for `port`; it depends on which node initiated the connection.)
* `port`: *string* - port on the remote node on which P2P discovery is listening
* `id`: *string* - node public key (excluding the `0x` prefix, the node public key is the ID in the enode URL `enode://<id ex 0x>@<host>:<port>`.)
* `protocols`: *object* - current state of peer including `difficulty` and `head` (`head` is the hash of the highest known block for the peer.)
* `enode`: *string* - enode URL of the remote node
* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1}' https://connect.bit-rock.io
```

#### `admin_removePeer`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#admin_removepeer" id="admin_removepeer"></a>

Removes a static node.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`enode`: *string* - enode URL of peer to remove

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - `true` if peer removed or `false` if peer not a static node

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_removePeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1}' https://connect.bit-rock.io
```

### `DEBUG` methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug-methods" id="debug-methods"></a>

The `DEBUG` API methods allow you to inspect and debug the network. The `DEBUG` API is a more verbose alternative to the `TRACE` API, and its main purpose is compatibility with tools such as Remix. Where these APIs overlap, we recommend using the `TRACE` API for production use over the `DEBUG` API. Specifically, we recommend `trace_block` over `debug_traceBlock`, and `trace_transaction` over `debug_traceTransaction`.

Note

The `DEBUG` API methods are not enabled by default for JSON-RPC. To enable the `DEBUG` API methods, use the `--rpc-http-api` or `--rpc-ws-api` options.

#### `debug_accountAt`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_accountat" id="debug_accountat"></a>

Returns account information at the specified index of the specified block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockHashOrNumber`: *string* - block hash or number at which to retrieve account information
* `txIndex`: *number* - transaction index at which to retrieve account information
* `address`: *string* - contract or account address for which to retrieve information

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

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

* `code`: *data* - code for the account. Displays `0x0` if the address is an externally owned account.
* `nonce`: *quantity* - number of transactions made by the account before this one
* `balance`: *quantity* - balance of the account in Wei
* `codehash`: *data* - code hash for the account

This example uses an externally owned account address for the `address` parameter.

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0xc8df1f061abb4d0c107b2b1a794ade8780b3120e681f723fe55a7be586d95ba6", 0, "0xbcde5374fce5edbc8e2a8697c15331677e6ebf0b"],"id":1}' https://connect.bit-rock.io
```

This example uses a contract address for the `address` parameter.

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c", 0, "0x0e0d2c8f7794e82164f11798276a188147fbd415"],"id":1}' https://connect.bit-rock.io
```

#### `debug_accountRange`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_accountrange" id="debug_accountrange"></a>

Retesteth uses `debug_accountRange` to implement debugging.

Returns the accounts for a specified block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockHashOrNumber`: *string* - block hash or number at which to retrieve account information
* `txIndex`: *number* - transaction index at which to retrieve account information
* `address`: *string* - address hash from which to start
* `limit`: *integer* - maximum number of account entries to return

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

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

* `addressMap`: *map* of *strings* to *strings* - map of address hashes and account addresses
* `nextKey`: *string* - hash of the next address if any addresses remain in the state, otherwise zero
* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountRange","params":["12345", 0, "0", 5],"id":1}' http://127.0.0.1:8545
```

#### `debug_batchSendRawTransaction`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_batchsendrawtransaction" id="debug_batchsendrawtransaction"></a>

Sends a list of signed transactions. This is used to quickly load a network with a lot of transactions. This does the same thing as calling `eth_sendRawTransaction` multiple times.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`data`: *string* - signed transaction data array

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - object returned for each transaction, with the following fields:

* `index`: *string* - index of the transaction in the request parameters array
* `success`: *boolean* - indicates whether or not the transaction has been added to the transaction pool
* `errorMessage`: *string* - (optional) error message
* curl HTTP
* wscat WS
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_batchSendRawTransaction","params":["0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ba0ac74ecfa0e9b85785f042c143ead4780931234cc9a032fce99fab1f45e0d90faa02fd17e8eb433d4ca47727653232045d4f81322619c0852d3fe8ddcfcedb66a43","0x416","0xf868018203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ca0b24ea1bee8fe36984c36acbf80979a4509f23fc17141851e08d505c0df158aa0a00472a05903d4cd7a811bd4d5c59cc105d93f5943f3393f253e92e65fc36e7ce0","0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef5787470de4df820000801ca0f7936b4de04792e3c65095cfbfd1399d231368f5f05f877588c0c8509f6c98c9a01834004dead527c8da1396eede42e1c60e41f38a77c2fd13a6e495479c729b99"],"id":1}' https://connect.bit-rock.io
```

#### `debug_getBadBlocks`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_getbadblocks" id="debug_getbadblocks"></a>

Returns a list of invalid blocks. This is used to detect and analyze consensus flaws.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of block objects

* curl HTTP
* wscat WS
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1}' https://connect.bit-rock.io
```

#### `debug_getRawBlock`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_getrawblock" id="debug_getrawblock"></a>

Returns the RLP encoding of the specified block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - RLP-encoded block object

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getRawBlock","params":["0x32026E"],"id":1}' https://connect.bit-rock.io
```

Returns the RLP encoding of the header of specified block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - RLP-encoded block header or `error`

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getRawHeader","params":["0x32026E"],"id":1}' https://connect.bit-rock.io
```

#### `debug_metrics`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_metrics" id="debug_metrics"></a>

Returns metrics providing information on the internal operation of Besu.

The available metrics might change over time. The JVM metrics might vary based on the JVM implementation used.

The metric types are:

* Timer
* Counter
* Gauge

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - metrics object

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_metrics","params":[],"id":1}' https://connect.bit-rock.io
```

#### `debug_replayBlock`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_replayblock" id="debug_replayblock"></a>

Re-imports the block matching the specified block number, by rolling the head of the local chain back to the block right before the specified block, then importing the specified block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - `Success` or `error`

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_replayBlock","params":["0x1"],"id":1}' https://connect.bit-rock.io
```

#### `debug_resyncWorldstate`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_resyncworldstate" id="debug_resyncworldstate"></a>

Triggers a re-synchronization of the world state while retaining imported blocks. This is useful if there are world state database inconsistencies (for example, Bonsai database issues).

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - `Success` or `error`

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_resyncWorldstate","params":[],"id":1}' https://connect.bit-rock.io
```

#### `debug_setHead`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_sethead" id="debug_sethead"></a>

Sets the current head of the local chain to the block matching the specified block number.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - `Success` or `error`

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_setHead","params":["0x1"],"id":1}' https://connect.bit-rock.io
```

#### `debug_standardTraceBlockToFile`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_standardtraceblocktofile" id="debug_standardtraceblocktofile"></a>

Generates files containing the block trace. A separate file is generated for each transaction in the block.

You can also specify a trace file for a specific transaction in a block.

Use `debug_standardTraceBadBlockToFile` to view the trace for an invalid block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockHash`: *string* - block hash

`txHash`: *string* - (optional) transaction hash; if omitted, a trace file is generated for each transaction in the block.

`disableMemory`: *boolean* - (optional) specifies whether to capture EVM memory during the trace; defaults to `true`

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - location of the generated trace files

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_standardTraceBlockToFile","params":["0x2dc0b6c43144e314a86777b4bd4f987c0790a6a0b21560671d221ed81a23f2dc", {
"txHash": "0x4ff04c4aec9517721179c8dd435f47fbbfc2ed26cd4926845ab687420d5580a6", "disableMemory": false}], "id":1}' https://connect.bit-rock.io
```

#### `debug_standardTraceBadBlockToFile`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_standardtracebadblocktofile" id="debug_standardtracebadblocktofile"></a>

Generates files containing the block trace of invalid blocks. A separate file is generated for each transaction in the block.

Use `debug_standardTraceBlockToFile` to view the trace for a valid block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockHash`: *string* - block hash

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - location of the generated trace files

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_standardTraceBadBlockToFile","params":["0x53741e9e94791466d117c5f9e41a2ed1de3f73d39920c621dfc2f294e7779baa"], "id":1}' https://connect.bit-rock.io
```

#### `debug_storageRangeAt`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_storagerangeat" id="debug_storagerangeat"></a>

Remix uses `debug_storageRangeAt` to implement debugging. Use the *Debugger* tab in Remix instead of calling `debug_storageRangeAt` directly.

Returns the contract storage for the specified range.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockHash`: *string* - block hash
* `txIndex`: *number* - transaction index from which to start
* `address`: *string* - contract address
* `startKey`: *string* - start key
* `limit`: *number* - number of storage entries to return

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - range object.

* curl HTTP request
* wscat WS request
* JSON result
* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_storageRangeAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c",0,"0x0e0d2c8f7794e82164f11798276a188147fbd415","0x0000000000000000000000000000000000000000000000000000000000000000",1], "id":1}' https://connect.bit-rock.io
```

#### `debug_traceBlock`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_traceblock" id="debug_traceblock"></a>

Returns full trace of all invoked opcodes of all transactions included in the block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `block`: *string* - RLP of the block
* `options`: *object* - request options object with the following fields (all optional and default to `false`):
  * `disableStorage`: *boolean* - `true` disables storage capture.
  * `disableMemory`: *boolean* - `true` disables memory capture.
  * `disableStack` : *boolean* - `true` disables stack capture.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - trace object

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlock","params":["0xf90277f90208a05a41d0e66b4120775176c09fcf39e7c0520517a13d2b57b18d33d342df038bfca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e6a7a1d47ff21b6321162aea7c6cb457d5476bcaa00e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169a04513310fcb9f6f616972a3b948dc5d547f280849a87ebb5af0191f98b87be598a0fe2bf2a941abf41d72637e5b91750332a30283efd40c424dc522b77e6f0ed8c4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860153886c1bbd82b44382520b8252088455c426598b657468706f6f6c2e6f7267a0b48c515a9dde8d346c3337ea520aa995a4738bb595495506125449c1149d6cf488ba4f8ecd18aab215f869f86780862d79883d2000825208945df9b87991262f6ba471f09758cde1c0fc1de734827a69801ca088ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0a045e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33ac0"],"id":1}' https://connect.bit-rock.io
```

#### `debug_traceBlockByHash`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_traceblockbyhash" id="debug_traceblockbyhash"></a>

Returns full trace of all invoked opcodes of all transactions included in the block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockHash`: *string* - block hash
* `options`: *object* - request options object with the following fields (all optional and default to `false`):
  * `disableStorage`: *boolean* - `true` disables storage capture.
  * `disableMemory`: *boolean* - `true` disables memory capture.
  * `disableStack` : *boolean* - `true` disables stack capture.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of trace objects

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByHash","params":["0xaceb3b2c9b25b0589230873921eb894b28722011b8df63977145517d754875a5"], "id":1}' https://connect.bit-rock.io
```

#### `debug_traceBlockByNumber`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#debug_traceblockbynumber" id="debug_traceblockbynumber"></a>

Returns full trace of all invoked opcodes of all transactions included in the block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter
* `options`: *object* - request options object with the following fields (all optional and default to `false`):
  * `disableStorage`: *boolean* - `true` disables storage capture.
  * `disableMemory`: *boolean* - `true` disables memory capture.
  * `disableStack` : *boolean* - `true` disables stack capture.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of trace objects

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["0x7224",{"disableStorage":true}], "id":1}' http://127.0.0.1:8545
```

### `ETH` methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth-methods" id="eth-methods"></a>

The `ETH` API methods allow you to interact with the blockchain.

Note

Methods with an equivalent GraphQL query include a GraphQL request and result in the method example. The parameter and result descriptions apply to the JSON-RPC requests. The GraphQL specification is defined in the schema.

#### `eth_accounts`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_accounts" id="eth_accounts"></a>

Returns a list of account addresses a client owns.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *strings* - list of 20-byte account addresses owned by the client

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

#### `eth_blockNumber`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_blocknumber" id="eth_blocknumber"></a>

Returns the index corresponding to the block number of the current chain head.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - hexadecimal integer representing the index corresponding to the block number of the current chain head

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":51}' curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

#### `eth_call`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_call" id="eth_call"></a>

Invokes a contract function locally and does not change the state of the blockchain.

You can interact with contracts using `eth_sendRawTransaction` or `eth_call`.

If revert reason is enabled with `--revert-reason-enabled`, the `eth_call` error response includes the revert reason.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`call`: *object* - transaction call object

`blockNumber` or `blockHash`: *string* - integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

Note

By default, `eth_call` does not fail if the sender account has an insufficient balance. This is done by setting the balance of the account to a large amount of ether. To enforce balance rules, set the `strict` parameter in the transaction call object to `true`.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - return value of the executed contract

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","value":"0x1"}, "latest"],"id":53}' curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

Example of a simulated contract creation

The following example creates a simulated contract by not including the `to` parameter from the transaction call object in the `call` parameter. Besu simulates the data to create the contract.

* curl HTTP
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "data":"0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005057600080fd5b5061021e806100606000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd576146100ae575b600080fd5b61004e6100dc565b6040518082815260200191505060405180910390f35b61006c6100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610107565b005b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806101b76033913960400191505060405180910390fd5b806001819055505056fe546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572a265627a7a7231582007302f208a10686769509b529e1878bda1859883778d70dedd1844fe790c9bde64736f6c63430005100032","gas":"0x439cf","gasPrice":"0x0"},"latest"],"id":53}' curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

#### `eth_chainId`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_chainid" id="eth_chainid"></a>

Returns the chain ID.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - chain ID in hexadecimal

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":51}' curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

#### `eth_coinbase`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_coinbase" id="eth_coinbase"></a>

Returns the client coinbase address. The coinbase address is the account to pay mining rewards to.

To set a coinbase address, start Besu with the `--miner-coinbase` option set to a valid Ethereum account address. You can get the Ethereum account address from a client such as MetaMask or Bitrock Scan. For example:

Example

```
besu --miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" --rpc-http-enabled
```

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - coinbase address

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":53}' curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

#### `eth_createAccessList`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_createaccesslist" id="eth_createaccesslist"></a>

Creates an EIP-2930 access list that you can include in a transaction.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`transaction`: *object* - transaction call object

`blockNumber` or `blockHash`: *string* - integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

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

* `accessList`: *array* of *objects* - list of objects with the following fields:
  * `address`: *string* - addresses to be accessed by the transaction
  * `storageKeys`: *array* - storage keys to be accessed by the transaction
* `gasUsed`: *string* - approximate gas cost for the transaction if the access list is included
* curl HTTP
* wscat WS
* JSON result

```
curl -X POST --data '{"method":"eth_createAccessList","params":[{"from": "0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63", "data": "0x608060806080608155"}, "pending"],"id":1,"jsonrpc":"2.0"}' curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

#### `eth_estimateGas`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_estimategas" id="eth_estimategas"></a>

Returns an estimate of the gas required for a transaction to complete. The estimation process does not use gas and the transaction is not added to the blockchain. The resulting estimate can be greater than the amount of gas the transaction ends up using, for reasons including EVM mechanics and node performance.

The `eth_estimateGas` call does not send a transaction. You must call `eth_sendRawTransaction` to execute the transaction.

If revert reason is enabled with `--revert-reason-enabled`, the `eth_estimateGas` error response includes the revert reason.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

For `eth_estimateGas`, all fields are optional because setting a gas limit is irrelevant to the estimation process (unlike transactions, in which gas limits apply).

`call`: *object* - transaction call object

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - amount of gas used

The following example returns an estimate of 21000 wei (`0x5208`) for the transaction.

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"from":"0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73","to":"0x44Aa93095D6749A706051658B970b941c72c1D53","value":"0x1"}],"id":53}' curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' https://connect.bit-rock.io
```

The following example request estimates the cost of deploying a simple storage smart contract to the network. The data field contains the hash of the compiled contract you want to deploy. (You can get the compiled contract hash from your IDE, for example, **Remix > Compile tab > details > WEB3DEPLOY**.) The result is 113355 wei.

* curl HTTP request
* JSON result

```
curl -X POST \
https://connect.bit-rock.io \
-H 'Content-Type: application/json' \
-d '{
  "jsonrpc": "2.0",
  "method": "eth_estimateGas",
  "params": [{
    "from": "0x8bad598904ec5d93d07e204a366d084a80c7694e",
    "data": "0x608060405234801561001057600080fd5b5060e38061001f6000396000f3fe6080604052600436106043576000357c0100000000000000000000000000000000000000000000000000000000900480633fa4f24514604857806355241077146070575b600080fd5b348015605357600080fd5b50605a60a7565b6040518082815260200191505060405180910390f35b348015607b57600080fd5b5060a560048036036020811015609057600080fd5b810190808035906020019092919050505060ad565b005b60005481565b806000819055505056fea165627a7a7230582020d7ad478b98b85ca751c924ef66bcebbbd8072b93031073ef35270a4c42f0080029"
  }],
  "id": 1
}'
```

#### `eth_feeHistory`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_feehistory" id="eth_feehistory"></a>

Returns base fee per gas and transaction effective priority fee per gas history for the requested block range, allowing you to track trends over time.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockCount`: *integer* or *string* - Number of blocks in the requested range. Between 1 and 1024 blocks can be requested in a single query. If blocks in the specified block range are not available, then only the fee history for available blocks is returned. Accepts hexadecimal or integer values.
* `newestBlock`: *string* - Integer representing the highest number block of the requested range or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter.
* `array` of `integers` - (optional) A monotonically increasing list of percentile values to sample from each block's effective priority fees per gas in ascending order, weighted by gas used.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - Fee history results object.

* curl HTTP
* wscat WS
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_feeHistory","params": ["0x5", "latest", [20,30]],"id":1}' https://connect.bit-rock.io
```

#### `eth_gasPrice`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_gasprice" id="eth_gasprice"></a>

Returns a percentile gas unit price for the most recent blocks, in Wei. By default, the last 100 blocks are examined and the 50th percentile gas unit price (that is, the median value) is returned.

If there are no blocks, the value for `--min-gas-price` is returned. The value returned is restricted to values between `--min-gas-price` and `--api-gas-price-max`. By default, 1000 Wei and 500GWei.

Use the `--api-gas-price-blocks`, `--api-gas-price-percentile` , and `--api-gas-price-max` command line options to configure the `eth_gasPrice` default values.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - percentile gas unit price for the most recent blocks, in Wei, as a hexadecimal value

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53}' https://connect.bit-rock.io
```

#### `eth_getBalance`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getbalance" id="eth_getbalance"></a>

Returns the account balance of the specified address.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `address`: *string* - 20-byte account address from which to retrieve the balance
* `blockNumber` or `blockHash`: *string* - integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - current balance, in Wei, as a hexadecimal value

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "latest"],"id":53}' https://connect.bit-rock.io
```

#### `eth_getBlockByHash`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getblockbyhash" id="eth_getblockbyhash"></a>

Returns information about the block matching the specified block hash.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `hash`: *string* - 32-byte hash of a block
* `verbose`: *boolean* - if `true`, returns the full transaction objects; if `false`, returns the transaction hashes

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - block object, or `null` when there is no block

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c", false],"id":53}' https://connect.bit-rock.io
```

#### `eth_getBlockByNumber`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getblockbynumber" id="eth_getblockbynumber"></a>

Returns information about the block matching the specified block number.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe` as described in block parameter
* `verbose`: *boolean* - if `true`, returns the full transaction objects; if `false`, returns only the hashes of the transactions.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - block object, or `null` when there is no block.

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x68B3", true],"id":1}' https://connect.bit-rock.io
```

#### `eth_getBlockTransactionCountByHash`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getblocktransactioncountbyhash" id="eth_getblocktransactioncountbyhash"></a>

Returns the number of transactions in the block matching the specified block hash.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`hash`: *string* - 32-byte block hash

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *number* - integer representing the number of transactions in the specified block, or `null` if no matching block hash is found

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":53}' https://connect.bit-rock.io
```

#### `eth_getBlockTransactionCountByNumber`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getblocktransactioncountbynumber" id="eth_getblocktransactioncountbynumber"></a>

Returns the number of transactions in a block matching the specified block number.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - integer representing the number of transactions in the specified block, or `null` if no matching block number is found

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":51}' https://connect.bit-rock.io
```

#### `eth_getCode`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getcode" id="eth_getcode"></a>

Returns the code of the smart contract at the specified address. Besu stores compiled smart contract code as a hexadecimal value.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`address`: *string* - 20-byte contract address

`blockNumber` or `blockHash`: *string* - integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *data* - code stored at the specified address

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa50a51c09a5c451c52bb714527e1974b686d8e77", "latest"],"id":53}' https://connect.bit-rock.io
```

#### `eth_getFilterChanges`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getfilterchanges" id="eth_getfilterchanges"></a>

Polls the specified filter and returns an array of changes that have occurred since the last poll.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`filterId`: *string* - filter ID

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *strings* or *objects* - if nothing changed since the last poll, an empty list; otherwise:

* For filters created with `eth_newBlockFilter`, returns block hashes.
* For filters created with `eth_newPendingTransactionFilter`, returns transaction hashes.
* For filters created with `eth_newFilter`, returns log objects.
* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0xf8bf5598d9e04fbe84523d42640b9b0e"],"id":1}' https://connect.bit-rock.io
```

#### `eth_getFilterLogs`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getfilterlogs" id="eth_getfilterlogs"></a>

Returns an array of logs for the specified filter.

Leave the `--auto-log-bloom-caching-enabled` command line option at the default value of `true` to improve log retrieval performance.

Note

`eth_getFilterLogs` is only used for filters created with `eth_newFilter`. To specify a filter object and get logs without creating a filter, use `eth_getLogs`.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`filterId`: *string* - filter ID

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of log objects

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x5ace5de3985749b6a1b2b0d3f3e1fb69"],"id":1}' https://connect.bit-rock.io
```

#### `eth_getLogs`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getlogs" id="eth_getlogs"></a>

Returns an array of logs matching a specified filter object.

Leave the `--auto-log-bloom-caching-enabled` command line option at the default value of `true` to improve log retrieval performance.

caution

Using `eth_getLogs` to get logs from a large range of blocks, especially an entire chain from its genesis block, might cause Besu to hang for an indeterminable amount of time while generating the response. We recommend setting a range limit using the `--rpc-max-logs-range` option (or leaving it at its default value of 1000).

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`filterOptions`: *object* - filter options object

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of log objects

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"fromBlock":"earliest", "toBlock":"latest", "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8", "topics":[]}], "id":1}' https://connect.bit-rock.io
```

#### `eth_getMinerDataByBlockHash`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getminerdatabyblockhash" id="eth_getminerdatabyblockhash"></a>

Returns miner data for the specified block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`hash`: *string* - 32-byte block hash

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - miner data object

* curl HTTP
* wscat WS
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockHash","params": ["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7"],"id": 1}' https://connect.bit-rock.io
```

#### `eth_getMinerDataByBlockNumber`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getminerdatabyblocknumber" id="eth_getminerdatabyblocknumber"></a>

Returns miner data for the specified block.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - miner data object

* curl HTTP
* wscat WS
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockNumber","params": ["0x7689D2"],"id": 1}' https://connect.bit-rock.io
```

#### `eth_getProof`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getproof" id="eth_getproof"></a>

Returns the account and storage values of the specified account, including the Merkle proof.

The API allows IoT devices or mobile apps which are unable to run light clients to verify responses from untrusted sources, by using a trusted block hash.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`address`: *string* - 20-byte address of the account or contract

`keys`: *array* of *strings* - list of 32-byte storage keys to generate proofs for

`blockNumber` or `blockHash`: *string* - integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

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

* `balance`: *string* - account balance
* `codeHash`: *string* - 32-byte hash of the account code
* `nonce`: *string* - number of transactions sent from the account
* `storageHash`: *string* - 32-byte SHA3 of the `storageRoot`
* `accountProof`: *array* of *strings* - list of RLP-encoded Merkle tree nodes, starting with the `stateRoot`
* `storageProof`: *array* of *objects* - list of storage entry objects with the following fields:
  * `key`: *string* - storage key
  * `value`: *string* - storage value
  * `proof`: *array* of *strings* - list of RLP-encoded Merkle tree nodes, starting with the `storageHash`
* curl HTTP
* wscat WS
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getProof","params": [
"0a8156e7ee392d885d10eaa86afd0e323afdcd95", ["0x0000000000000000000000000000000000000000000000000000000000000347"], "latest"],"id": 1}' https://connect.bit-rock.io
```

#### `eth_getStorageAt`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getstorageat" id="eth_getstorageat"></a>

Returns the value of a storage position at a specified address.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`address`: *string* - 20-byte storage address

`index`: *string* - integer index of the storage position

`blockNumber` or `blockHash`: *string* - integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result` : *string* - value at the specified storage position

Calculating the correct position depends on the storage you want to retrieve.

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getStorageAt","params": ["0x‭3B3F3E‬","0x0","latest"],"id": 53}' http://127.0.0.1:8545
```

#### `eth_getTransactionByBlockHashAndIndex`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_gettransactionbyblockhashandindex" id="eth_gettransactionbyblockhashandindex"></a>

Returns transaction information for the specified block hash and transaction index position.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`block`: *string* - 32-byte hash of a block

`index`: *string* - integer representing the transaction index position

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - transaction object, or `null` when there is no transaction

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7", "0x2"], "id":1}' https://connect.bit-rock.io
```

#### `eth_getTransactionByBlockNumberAndIndex`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_gettransactionbyblocknumberandindex" id="eth_gettransactionbyblocknumberandindex"></a>

Returns transaction information for the specified block number and transaction index position.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

`index`: *string* - transaction index position

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - transaction object, or `null` when there is no transaction

This request returns the third transaction in the 82990 block on the Bitrock Chain. You can also view this block and transaction on Bitrock Scan.

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["82990", "0x2"], "id":1}' https://connect.bit-rock.io
```

#### `eth_getTransactionByHash`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_gettransactionbyhash" id="eth_gettransactionbyhash"></a>

Returns transaction information for the specified transaction hash.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`transaction`: *string* - 32-byte transaction hash

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - transaction object, or `null` when there is no transaction

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44"],"id":53}' https://connect.bit-rock.io
```

#### `eth_getTransactionCount`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_gettransactioncount" id="eth_gettransactioncount"></a>

Returns the number of transactions sent from a specified address. Use the `pending` tag to get the next account nonce not used by any pending transactions.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`address`: *string* - 20-byte account address

`blockNumber` or `blockHash`: *string* - integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - integer representing the number of transactions sent from the specified address

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xc94770007dda54cF92009BFF0dE90c06F603a09f","latest"],"id":1}' http://127.0.0.1:8545
```

#### `eth_getTransactionReceipt`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_gettransactionreceipt" id="eth_gettransactionreceipt"></a>

Returns the receipt of a transaction by transaction hash. Receipts for pending transactions are not available.

If you enabled revert reason, the receipt includes available revert reasons in the response.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`transaction`: *string* - 32-byte hash of a transaction

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - transaction receipt object, or `null` when there is no receipt

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x504ce587a65bdbdb6414a0c6c16d86a04dd79bfcc4f2950eec9634b30ce5370f"],"id":53}' https://connect.bit-rock.io
```

#### `eth_getUncleByBlockHashAndIndex`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getunclebyblockhashandindex" id="eth_getunclebyblockhashandindex"></a>

Returns uncle specified by block hash and index.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`block`: *string* - 32-byte block hash

`uncleIndex`: *string* - index of the uncle

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - block object

note

Uncles don't contain individual transactions.

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7", "0x0"],"id":1}' https://connect.bit-rock.io
```

#### `eth_getUncleByBlockNumberAndIndex`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getunclebyblocknumberandindex" id="eth_getunclebyblocknumberandindex"></a>

Returns uncle specified by block number and index.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter
* `uncleIndex`: *string* - index of the uncle

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - block object

note

Uncles do not contain individual transactions.

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x7689D2", "0x0"],"id":1}' https://connect.bit-rock.io
```

#### `eth_getUncleCountByBlockHash`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getunclecountbyblockhash" id="eth_getunclecountbyblockhash"></a>

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

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`block`: *string* - 32-byte block hash

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - integer representing the number of uncles in the specified block

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' https://connect.bit-rock.io
```

#### `eth_getUncleCountByBlockNumber`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getunclecountbyblocknumber" id="eth_getunclecountbyblocknumber"></a>

Returns the number of uncles in a block matching the specified block number.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in block parameter

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - integer representing the number of uncles in the specified block

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}' https://connect.bit-rock.io
```

#### `eth_getWork`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_getwork" id="eth_getwork"></a>

Returns the hash of the current block, the seed hash, and the required target boundary condition.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *strings* - array with the following items:

* `header`: *string* - 32-byte hash of the current block header (PoW-hash)
* `seed`: *string* - 32-byte seed hash used for the DAG
* `target`: *string* - 32-byte required target boundary condition: 2^256 / difficulty
* `blockNumber`: *string* - hexadecimal integer representing the current block number
* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":1}' https://connect.bit-rock.io
```

#### `eth_hashrate`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_hashrate" id="eth_hashrate"></a>

Returns the number of hashes per second with which the node is mining.

When the stratum server is enabled, this method returns the cumulative hashrate of all sealers reporting their hashrate.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - number of hashes per second

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":1}' https://connect.bit-rock.io
```

#### `eth_mining`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_mining" id="eth_mining"></a>

Whether the client is actively mining new blocks. Besu pauses mining while the client synchronizes with the network regardless of command settings or methods called.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - indicates if the client is actively mining new blocks

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":53}' http://127.0.0.1:8545
```

#### `eth_newBlockFilter`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_newblockfilter" id="eth_newblockfilter"></a>

Creates a filter to retrieve new block hashes. To poll for new blocks, use `eth_getFilterChanges`.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - filter ID

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1}' https://connect.bit-rock.io
```

#### `eth_newFilter`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_newfilter" id="eth_newfilter"></a>

Creates a log filter. To poll for logs associated with the created filter, use `eth_getFilterChanges`. To get all logs associated with the filter, use `eth_getFilterLogs`.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`filterOptions`: *object* - filter options object

note

`fromBlock` and `toBlock` in the filter options object default to `latest`.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - filter ID

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"fromBlock":"earliest", "toBlock":"latest", "topics":[]}],"id":1}' https://connect.bit-rock.io
```

#### `eth_newPendingTransactionFilter`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_newpendingtransactionfilter" id="eth_newpendingtransactionfilter"></a>

Creates a filter to retrieve new pending transactions hashes. To poll for new pending transactions, use `eth_getFilterChanges`.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - filter ID

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1}' https://connect.bit-rock.io
```

#### `eth_protocolVersion`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_protocolversion" id="eth_protocolversion"></a>

Returns current Ethereum protocol version.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - Ethereum protocol version

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":1}' https://connect.bit-rock.io
```

#### `eth_sendRawTransaction`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_sendrawtransaction" id="eth_sendrawtransaction"></a>

Sends a signed transaction. A transaction can send ether, deploy a contract, or interact with a contract. Set the maximum transaction fee for transactions using the `--rpc-tx-feecap` CLI option.

You can interact with contracts using `eth_sendRawTransaction` or `eth_call`.

To avoid exposing your private key, create signed transactions offline and send the signed transaction data using `eth_sendRawTransaction`.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`transaction`: *string* - signed transaction serialized to hexadecimal format

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - 32-byte transaction hash

* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"],"id":1}' https://connect.bit-rock.io
```

#### `eth_submitHashrate`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_submithashrate" id="eth_submithashrate"></a>

Submits the mining hashrate. This is used by mining software such as Ethminer.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `hashrate`: *string* - 32-byte hexadecimal string representation of the hashrate
* `id`: *string* - 32-byte random hexadecimal ID identifying the client

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - indicates if submission is successful

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":1}' https://connect.bit-rock.io
```

#### `eth_submitWork`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_submitwork" id="eth_submitwork"></a>

Submits a proof of work (Ethash) solution. This is used by mining software such as Ethminer.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `nonce`: *string* - retrieved 8-byte nonce
* `header`: *string* - 32-byte hash of the block header (PoW-hash)
* `digest`: *string* - 32-bytes mix digest

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - indicates if the provided solution is valid

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":1}' https://connect.bit-rock.io
```

#### `eth_syncing`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_syncing" id="eth_syncing"></a>

Returns an object with data about the synchronization status, or `false` if not synchronizing.

note

Once the node reaches the head of the chain, `eth_syncing` returns false, indicating that there is no active syncing target.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* or *boolean* - synchronization status data object with the following fields, or `false` if not synchronizing:

* `startingBlock`: *string* - index of the highest block on the blockchain when the network synchronization starts
* `currentBlock`: *string* - index of the latest block (also known as the best block) for the current node (this is the same index that `eth_blockNumber` returns.)
* `highestBlock`: *string* - index of the highest known block in the peer network (that is, the highest block so far discovered among peer nodes. This is the same value as `currentBlock` if the current node has no peers.)
* `pulledStates`: *string* - if fast synchronizing, the number of state entries fetched so far, or `null` if this is not known or not relevant (if full synchronizing or fully synchronized, this field is not returned.)
* `knownStates`: *string* - if fast synchronizing, the number of states the node knows of so far, or `null` if this is not known or not relevant (if full synchronizing or fully synchronized, this field is not returned.)
* curl HTTP
* wscat WS
* JSON result
* curl GraphQL
* GraphQL
* GraphQL result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":51}' https://connect.bit-rock.io
```

#### `eth_uninstallFilter`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#eth_uninstallfilter" id="eth_uninstallfilter"></a>

Uninstalls a filter with the specified ID. When a filter is no longer required, call this method.

Filters time out when not requested by `eth_getFilterChanges` or `eth_getFilterLogs` for 10 minutes.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`filterId`: *string* - filter ID

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - indicates if the filter is successfully uninstalled

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0x70355a0b574b437eaa19fe95adfedc0a"],"id":1}' https://connect.bit-rock.io
```

### `MINER` methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#miner-methods" id="miner-methods"></a>

The `MINER` API methods allow you to control the node’s mining operation.

note

The `MINER` API methods are not enabled by default for JSON-RPC. To enable the `MINER` API methods, use the `--rpc-http-api` or `--rpc-ws-api` options.

#### `miner_changeTargetGasLimit`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#miner_changetargetgaslimit" id="miner_changetargetgaslimit"></a>

Updates the target gas limit set using the `--target-gas-limit` command line option.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`gasPrice`: *number* - target gas price in Wei

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - `Success` or `error`

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"miner_changeTargetGasLimit","params":[800000], "id":1}' https://connect.bit-rock.io
```

#### `miner_setCoinbase`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#miner_setcoinbase" id="miner_setcoinbase"></a>

Sets the Coinbase, the address for the mining rewards.

note

You can also use `miner_setEtherbase` as an alternative method. They both work the same way. Etherbase is a historic name for Coinbase.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`coinbase`: *string* - Account address you pay mining rewards to

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - `true` when address is set

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"miner_setCoinbase","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"],"id":1}' https://connect.bit-rock.io
```

#### `miner_start`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#miner_start" id="miner_start"></a>

Starts the mining process. To start mining, you must first specify a miner coinbase using the `--miner-coinbase` command line option or using `miner_setCoinbase`.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - `true` if mining starts, or if the node is already mining

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}' https://connect.bit-rock.io
```

#### `miner_stop`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#miner_stop" id="miner_stop"></a>

Stops the mining process on the client.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - `true` if mining stops, or if the node is not mining

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"miner_stop","params":[],"id":1}' https://connect.bit-rock.io
```

### `NET` methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#net-methods" id="net-methods"></a>

The `NET` API methods provide network-related information.

#### `net_enode`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#net_enode" id="net_enode"></a>

Returns the enode URL.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - enode URL of the node

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"net_enode","params":[],"id":1}' https://connect.bit-rock.io
```

#### `net_listening`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#net_listening" id="net_listening"></a>

Whether the client is actively listening for network connections.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *boolean* - indicates if the client is actively listening for network connections

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":53}' https://connect.bit-rock.io
```

#### `net_peerCount`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#net_peercount" id="net_peercount"></a>

Returns the number of peers currently connected to the client.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - number of connected peers in hexadecimal

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":53}' https://connect.bit-rock.io
```

### `TXPOOL` methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#txpool-methods" id="txpool-methods"></a>

The `TXPOOL` API methods allow you to inspect the contents of the transaction pool.

note

The `TXPOOL` API methods are not enabled by default for JSON-RPC. To enable the `TXPOOL` API methods, use the `--rpc-http-api` or `--rpc-ws-api` options.

#### `txpool_besuPendingTransactions`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#txpool_besupendingtransactions" id="txpool_besupendingtransactions"></a>

Lists pending transactions that match the supplied filter conditions.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

* `numResults`: *number* - integer representing the maximum number of results to return
* `fields`: *object* - object of fields used to create the filter condition

Each field in the object corresponds to a field name containing an operator, and a value for the operator. A field name can only be specified once, and can only contain one operator. For example, you cannot query transactions with a gas price between 8 and 9 Gwei by using both the `gt` and `lt` operator in the same field name instance.

All filters must be satisfied for a transaction to be returned.

| Field name | Value                                              | Value type       | Supported operators |
| ---------- | -------------------------------------------------- | ---------------- | ------------------- |
| `from`     | Address of the sender.                             | *Data*, 20 bytes | `eq`                |
| `to`       | Address of the receiver, or `"contract_creation"`. | *Data*, 20 bytes | `eq`, `action`      |
| `gas`      | Gas provided by the sender.                        | *Quantity*       | `eq`, `gt`, `lt`    |
| `gasPrice` | Gas price, in wei, provided by the sender.         | *Quantity*       | `eq`, `gt`, `lt`    |
| `value`    | Value transferred, in wei.                         | *Quantity*       | `eq`, `gt`, `lt`    |
| `nonce`    | Number of transactions made by the sender.         | *Quantity*       | `eq`, `gt`, `lt`    |

Supported operators:

* `eq` (equal to)
* `lt` (less than)
* `gt` (greater than)
* `action`

note

The only supported `action` is `"contract_creation"`.

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of objects with details of the pending transaction

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuPendingTransactions","params":[2,{"from":{"eq":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"},"gas":{"lt":"0x5209"},"nonce":{"gt":"0x1"}}],"id":1}' https://connect.bit-rock.io
```

#### `txpool_besuStatistics`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#txpool_besustatistics" id="txpool_besustatistics"></a>

Lists statistics about the node transaction pool.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *object* - transaction pool statistics object with the following fields:

* `maxSize`: *number* - maximum number of transactions kept in the transaction pool; use the [`--tx-pool-max-size`](about:/stable/public-networks/reference/cli/options#tx-pool-max-size) option to configure the maximum size.
* `localCount`: *number* - number of transactions submitted directly to this node
* `remoteCount`: *number* - number of transactions received from remote nodes
* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuStatistics","params":[],"id":1}' https://connect.bit-rock.io
```

#### `txpool_besuTransactions`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#txpool_besutransactions" id="txpool_besutransactions"></a>

Lists transactions in the node transaction pool.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *array* of *objects* - list of transactions

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuTransactions","params":[],"id":1}' https://connect.bit-rock.io
```

### `WEB3` methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#web3-methods" id="web3-methods"></a>

The `WEB3` API methods provide functionality for the Ethereum ecosystem.

#### `web3_clientVersion`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#web3_clientversion" id="web3_clientversion"></a>

Returns the current client version.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - current client version

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' https://connect.bit-rock.io
```

#### `web3_sha3`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#web3_sha3" id="web3_sha3"></a>

Returns a [SHA3](https://en.wikipedia.org/wiki/SHA-3) hash of the specified data. The result value is a [Keccak-256](https://keccak.team/keccak.html) hash, not the standardized SHA3-256.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`data`: *string* - data to convert to a SHA3 hash

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *string* - SHA3 result of the input data

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c00"],"id":53}' https://connect.bit-rock.io
```

### Miscellaneous methods[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#miscellaneous-methods" id="miscellaneous-methods"></a>

#### `rpc_modules`[​](broken://pages/SXPf9agzW5lZ1odtvNN4) <a href="#rpc_modules" id="rpc_modules"></a>

Lists enabled APIs and the version of each.

**Parameters**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

None

**Returns**[**​**](broken://pages/SXPf9agzW5lZ1odtvNN4)

`result`: *map* of *strings* to *strings* - enabled APIs and their versions

* curl HTTP request
* wscat WS request
* JSON result

```
curl -X POST --data '{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}' https://connect.bit-rock.io
```


# How to Get Bitrock Token&#x20;

If you are ready to invest in Bitrock, here is a step by step guide to help you get started:

## 1. Decentralized Exchange & Digital Wallet

Bitrock is an ERC-20 token on the Ethereum blockchain. Any wallet that supports ERC-20 tokens supports Bitrock - including [Metamask](https://metamask.io/), [Coinbase](https://www.coinbase.com/) wallet, etc. Set up a new ERC-20 compatible digital wallet or use your existing one. Once the wallet is open, access the wallet's dApp browser then head to [Uniswap](https://uniswap.org/).

Copy and paste Bitrock's smart contract address (below) and enter the number of Bitrock tokens you want to buy.

{% code title="Bitrock Smart Contract" overflow="wrap" %}

```
0xde67d97b8770dC98C746A3FC0093c538666eB493
```

{% endcode %}

{% embed url="<https://www.youtube.com/watch?v=TDg6UlXXigs>" %}

Note: You can swap to Bitrock from ERC-20 tokens such as ETH/USDT, but make sure to set aside a certain allocation of ETH for gas fees.

## 2. Centralized Exchanges

Bitrock is currently listed on [Bitmart](https://www.bitmart.com/trade/en-US?symbol=BROCK_USDT\&layout=pro), [Bitget](https://www.bitget.com/spot/BROCKUSDT?type=spot), and [MEXC](https://www.mexc.com/exchange/BROCK_USDT). Additionally, the Bitrock chain is integrated into Mexc and Bitmart with an option to deposit and withdraw Bitrock to and from Bitmart via the Ethereum network or the Bitrock network.


# Bitrock Bridge

Bridge assets between the ETH <> BROCK chains

{% hint style="success" %}
**The Bitrock bridge currently supports the below assets:**

* Bitrock(ERC-20) <> Brock(BROCK-20)
* USDT(ERC-20) <> USDB(BROCK-20)
  {% endhint %}

<figure><img src="/files/NTmwkklyvGtjKiVi0MEu" alt=""><figcaption></figcaption></figure>

1. Navigate to [**https://bridge.bit-rock.io**](https://bridge.bit-rock.io) and connect your wallet to the chain (Ethereum or Bitrock) on which the assets to bridge are being held.
2. Select the asset you would like to bridge.
3. Enter the amount of tokens to bridge.
4. If bridging from the Ethereum chain for the first time, confirm token approval first.
5. Press Bridge Token and review your transaction before confirming in your wallet.
6. Await transaction completion, your bridged assets will arrive soon!

{% hint style="info" %}
**Important Notes**

* Each bridging transaction incurs a 0.5% bridging fee.
* If bridging USDT to USDB, please make sure to add the USDB contract in your wallet to view your bridged assets.
* USDB contract: `0xD647a6E1F898c39bA594443c19De0872EA935310`
  {% endhint %}


# Smart Contract Deployment

Anyone can build a smart contract application on the Bitrock network. Below is a step-by-step walkthrough on how to deploy a simple smart contract counter using Remix.

Note: Before you start deploying using Remix, make sure you are connected Bitrock network in your Metamask. See the [Connect to Chain ](/developer/connect-to-chain)section for details.

## 1. **What is Remix?**

[Remix](https://remix-project.org/) is open-source Ethereum IDE you can use to write, compile and debug Solidity code. As such, Remix can be a hugely important tool in Web3 and dApps development.

You can jump to the Remix text editor [https://remix.ethereum.org](https://remix.ethereum.org/#lang=en\&optimize=true\&runs=200\&evmVersion=null\&version=soljson-v0.8.20+commit.a1b79de6.js\&language=Solidity) and copy paste this code below.

{% code title="counter.sol" overflow="wrap" lineNumbers="true" %}

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

contract TestBitRockSimpleCounter {
    int private count = 0;
    function incrementCounter() public {
        count += 1;
    }
    function decrementCounter() public {
        count -= 1;
    }

    function getCount() public view returns (int) {
        return count;
    }
}
```

{% endcode %}

## 2. Compile Code

After the code is written, compile it using Solidity version based on the code written.

![](/files/GjA8qQwvWkqTakahUKQT)&#x20;

Once the code is compiled, a <mark style="color:green;">**green Check**</mark> <mark style="color:green;"></mark><mark style="color:green;">will be shown.</mark> &#x20;

## 3. Deploy and view on Bitrock Explorer

![](/files/tOk026qjvX2y7QYVm3IX)

After the code is compiled, it is ready to be deployed on the Bitrock Network. Click the Deploy button and a Metamask confirmation window will pop up.

Note: Bitrock Blockchain smart contract deployment fees are near-zero.

![](/files/sOndWVXJvRDxLSMx7xLJ)

## 4. The smart contract is ready to be used

After the smart contract is deployed, the contract address can be seen and explored on [Bitrock explorer. ](https://scan.bit-rock.io/)

<figure><img src="/files/SqxIPzYVHQcjeOZs2ULJ" alt="" width="563"><figcaption></figcaption></figure>


# Rockswap

Providing a seamless on-chain trading experience, Rockswap has served as the Bitrock chain's first native DEX since day 1. Rockswap will soon also host a multichain layer, enabling cryptocurrencies to be traded between 10+ supported chains and the Bitrock chain without the need to use DEXs native to those chains, hold native chain tokens, or pay gas fees in those native tokens. All gas would be equalized and paid in native Bitrock.

<figure><img src="/files/vaKssCnKYqjbLvj8KiRP" alt=""><figcaption></figcaption></figure>


# Swap

## On-chain Swaps & Liquidity Management

Built, deployed, and maintained by the Bitrock team, Rockswap is the ecosystem's first native DEX, leveraging Bitrock's 1 second block times to deliver lightning speed transactions via an ultra user-friendly interface. Rockswap allows users to trade any live token on the Bitrock Mainnet, and also hosts a cross-chain layer enabling transactions beyond Bitrock.

<figure><img src="/files/j84VoasiFdeTIxYGtAEG" alt=""><figcaption></figcaption></figure>

Users can also create/manage token liquidity pairs or add liquidity to existing liquidity pools [here](https://swap.rock-swap.io/#/pool), and LP tokens can then be deposited in Rockswap's [farming pools](https://docs.bit-rock.io/ecosystem-and-tools/rockswap/farm), or locked via Rockswap's [token locker](https://docs.bit-rock.io/ecosystem-and-tools/rockswap/locker).

<figure><img src="/files/o4U6qz86HoTlJ0QBUpto" alt=""><figcaption></figcaption></figure>


# Stake

Bitrock offers lucrative on-chain staking for native Bitrock and Rockswap token holders on the chain.

## 1. Purchase Bitrock/Rockswap Tokens

* Bitrock is listed on and can be purchased via several centralized and decentralized exchanges. [See more info.](/tutorial/how-to-get-bitrock-token)
* Rockswap token can be purchased on Rockswap [here.](https://swap.rock-swap.io/#/swap?outputCurrency=0x826628622a8B55F4AF6aC2A1DD1273bF837e651a)

## 2. Stake Your Tokens

{% tabs %}
{% tab title="Bitrock" %}
Native chain Bitrock can be swapped to WBROCK (Wrapped Bitrock) then staked on the Bitrock mainnet for a 10% APY, 14 day lock-time and flexible reward claims.&#x20;

<figure><img src="/files/9oglLKHN5X00vRFi8xjy" alt=""><figcaption></figcaption></figure>

**Staking Rules:**

* APY:  10%
* Locking Time: 14 Days
* Emergency Withdraw: 25% Tax
* Claim Reward Time: Flexible.
  {% endtab %}

{% tab title="Rockswap" %}
Native chain Bitrock can be swapped to the ROCK (Rockswap token) then staked on the Bitrock mainnet for a 5% APY, 14 day lock-time and flexible reward claims.&#x20;

<figure><img src="/files/GgHhfWV8KX82S47xp0FD" alt="" width="563"><figcaption></figcaption></figure>

**Staking Rules:**

* APY:  5%
* Locking Time: 14 Days
* Emergency Withdraw: 25% Tax
* Claim Reward Time: Flexible.
  {% endtab %}
  {% endtabs %}


# Farm

Rockswap farming pools allow participants to earn farming rewards by depositing LP tokens into open farming pools. LP tokens can be obtained by providing liquidity to a live token pair on Rockswap.

To participate in Rockswap's farming pools:

1. Choose the pool you would like to participate in. Each farming pool consists of a token pair. A list of available farming pools can be found at [rock-swap.io/farms](https://rock-swap.io/farms)
2. Swap $BROCK to $WBROCK and the other token in the farming pool pair of your choice using Rockswap's Swap page. [swap.rock-swap.io/#/swap](https://swap.rock-swap.io/#/swap)
3. On Rockswap's Pool page, provide equal dollar amounts in liquidity in the form of WBROCK + the 2nd token from the farming pool you choose. [swap.rock-swap.io/#/pool](https://swap.rock-swap.io/#/pool)
4. Once you receive LP tokens in return for your liquidity provision, deposit them into the chosen farming pool. [rock-swap.io/farms](https://rock-swap.io/farms)
5. Deposited LP tokens continuously accrue farming rewards distributed in $ROCK tokens, claimable anytime! APY may vary depending on the chosen pool.
6. To claim farming rewards, use the Withdraw Tokens option, then restake your LP tokens.

<figure><img src="/files/16Anw4cgmYHY8NpyoRaL" alt=""><figcaption></figcaption></figure>


# Locker

## Rockswap Token Locker

If you are unfamiliar with liquidity pools and LP tokens, it is first important to understand what those terms entail before you start working with them. Learn more [here](https://www.youtube.com/watch?v=dVJzcFDo498).&#x20;

Rockswap's token locker offers the ability to lock liquidity provider (LP) tokens, as well as regular cryptocurrency tokens.

<figure><img src="/files/Azy4BxA333Dy1UPRVmkc" alt=""><figcaption></figcaption></figure>

### Locking LP tokens:

Locking LP tokens is standard best practice when enabling trading for new tokens, and is meant to increase trading security and prevent LP token holders from maliciously withdrawing funds from the LP (liquidity pool), which if done, may risk other users' funds. Through using Rockswap's token locker, locked LP tokens are withheld for a specified period of time by the platform's underlying smart contract. The locking period can be set directly on the locker at the time of locking, and during that time, the tokens cannot be unlocked, sold, or used by any entity. Once the locking period elapses and the lock expires, LP tokens may then be easily unlocked for further use on Rockswap or any other swap that supports Rockswap's router.

### Locking non-LP tokens:

Project token (non-LP) locks can also be executed on Rockswap's token locker, in cases where it is required to lock tokens reserved for project teams, exchange listings, partnerships, vesting, staking, etc. Locking project tokens for future use in these contexts can build trust between project teams and their community, as well as promote funds safety and solidify commitment to project continuity. Similar to LP locks, token locks are also set for a specified period of time, during which locked tokens cannot be claimed, used, sold, or withdrawn. The locking period can be set directly on the locker at the time of locking, and during that time, the tokens cannot be unlocked by any entity. Once the locking period elapses and the lock expires, project tokens may then be easily unlocked for further use.

### Using Rockswap's token locker:

1. Navigate to <https://www.rock-swap.io/locker> and connect your wallet, after deciding on the asset to be locked and how long it will be locked for.
2. Copy the desired token or LP pair contract address and paste it in the 'Token or LP Token address' field. If you are locking liquidity provider (LP) tokens, please be sure to check the 'Is LP (Liquidity Provider) Token?' checkbox.
3. Optionally provide a name for your lock (for example: Team Token Lock).
4. Enter the number of tokens / LP tokens to be locked.
5. Enter the desired unlock date & time, until which deposited tokens will be locked in the locker's smart contract.

{% hint style="info" %}
The minimum locking period for any type of token is 1 day from the current date & time.
{% endhint %}


# Token Builder

Bitrock's Token Builder is a tool designed for simplicity and speed in deploying a standard contract on the Bitrock blockchain.

Using the Cointool, anyone is able to create and launch BROCK-20 tokens with little to no technical knowledge in just 5 steps.

<https://www.rock-swap.io/coin-tool>

<figure><img src="/files/cvDuy4CQbOU1wXlBgL2i" alt=""><figcaption></figcaption></figure>


# Multichain

## Rockswap Cross-chain Interoperability

In partnership with deBridge Finance, Rockswap also supports direct cross-chain transactions of assets between 10+ chains including the Bitrock chain, enhancing accessibility and interaction between various ecosystems. This is made possible in part by the deBridge Liquidity Network (DLN) protocol, which is a high-performance cross-chain value transfer infrastructure built by deBridge with a 0-TVL design (no liquidity pools). Learn more about the DLN protocol [here](https://docs.debridge.finance/dln-the-debridge-liquidity-network-protocol/introduction).

Gas fees are equalized and paid in the origin chain's native (gas) token. For example, if the swap is performed from the BROCK chain to another chain, gas fees would be payable in native Bitrock, and are deducted from the user's wallet then deposited into the protocol treasury on the Bitrock chain. Supported chains include Bitrock, ETH, BSC, SOL, Polygon, ARB, OP, and more!

<figure><img src="/files/EvpsvWeNvuP8VhpJqCvK" alt=""><figcaption></figcaption></figure>

### How to execute a cross-chain swap on Rockswap:

1. Visit [https://www.rock-swap.io/multichain ](<https://www.rock-swap.io/multichain >)and connect your wallet.
2. Select the desired origin and destination chains.
3. Select a token to swap from on the origin chain, and the token to swap to (receive) on the destination chain.
4. Note the transaction ETA, then execute and confirm the swap in your wallet.
5. Check your wallet and await the receipt of the specified destination asset on the destination chain after the swap is executed.

{% hint style="info" %}
Transaction fees along with all transactions details can be tracked on the deBridge explorer here: <https://app.debridge.finance/explorer>
{% endhint %}

You may track analytics for Bitrock chain (or any other supported chain) transactions executed via deBridge, on the deBridge analytics tracker: <https://app.debridge.finance/analytics>


# Rockport

## Rockport Asset Custody Bridge

Rockport is a cross-chain asset custody bridge that allows users to expand token utility by bridging on-chain assets to their wrapped versions on chains supported by deBridge, by utilizing deBridge's lock and burn mechanism.

Whether for asset storage, launching new tokens, or enabling trading for existing tokens across multiple chains using the same token supply, Rockport facilitates multichain synthetic token representation.

<figure><img src="/files/aq3arbf98Z7UnqwBxmVa" alt=""><figcaption></figcaption></figure>

### How to bridge assets with Rockport:

1. Visit <https://www.rock-swap.io/rockport> and connect your wallet.
2. Select the desired origin and destination chains.
3. Select a token to bridge from the origin chain.
4. Note the transaction ETA, then execute and confirm the transaction in your wallet.
5. Check your wallet and await the receipt of the wrapped version of your bridged asset on the destination chain after the swap is executed.

{% hint style="info" %}
Note: If this is the first time that this asset is bridged to the destination chain, a new contract address will be automatically generated for the wrapped version of the asset on that chain. For any subsequent bridging of the same asset to the same destination chain, the previously generated contract address will be inherited.
{% endhint %}

You may track analytics for Bitrock chain (or any other supported chain) transactions executed via deBridge, on the deBridge analytics tracker: <https://app.debridge.finance/analytics>


# Network Explorer

<figure><img src="/files/Dz8hwYMFOOzDGK4WHyTV" alt=""><figcaption></figcaption></figure>

Bitrock Explorer is a tool that offers unparalleled transaction visibility and traceability, as well as comprehensive onchain analytics for the Bitrock Mainnet.

| Testnet Explorer | <ul><li><a href="https://testnetscan.bit-rock.io/"><https://testnetscan.bit-rock.io></a></li></ul>                                                          |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mainnet Explorer | <ul><li><a href="https://scan.bit-rock.io/"><https://explorer.bit-rock.io></a></li><li><a href="https://brockscan.io/"><https://brockscan.io></a></li></ul> |


# Bitrock x Gnosis Safe

Gnosis Safe is a smart contract platform that allows users to create and manage multi-signature wallets. These wallets require multiple signatures or approvals to execute transactions, which helps protect funds from loss or theft.

[**https://devsafe.bit-rock.io**](https://devsafe.bit-rock.io/)

<figure><img src="/files/uJcNfh3o1paVn4TwMlr9" alt=""><figcaption></figcaption></figure>


# Ongoing Developments / Future Plans

<figure><img src="/files/DWFKlVRbLTMd62XzZki5" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Bitrock" %}
As we strive to continuously improve Bitrock's technical infrastructure, we consistently update our strategic roadmap with relevant, impactful milestones aimed at elevating Bitrock to new heights.

The below initiatives and developments (in progress) serve to -in part- contribute to our ongoing committment to integrating advanced technologies and protocols with Bitrock, resulting in substantial benefits to our users, developers, and stakeholders.

### <mark style="background-color:green;">1. Enhance Cross-chain Interoperability with Axelar Integration</mark>

**Objective:**&#x20;

* Expand the network of chains supported by Rockswap Multichain.
* Achieve barrier-free interaction with more blockchain networks to expand our ecosystem.

**Benefits:**&#x20;

* Asset Portability - Users can effortlessly transfer assets across more blockchains.
* Ecosystem Expansion - Attract developers and projects from other networks.

**Methodology overview:**

* Integrate Axelar's cross-chain communication protocols.&#x20;
* Facilitate cross-chain token and message transfers.

### <mark style="background-color:green;">2. Ensure Privacy via zk-SNARKs Protocol</mark>

**Objective:**&#x20;

* Provide users with enhanced privacy features for on-chain transactions.

**Benefits:**&#x20;

* Confidential Transactions - Anonymize and protect user data and transaction details.
* Regulatory Compliance - Offer increased privacy while adhering to legal standards.

**Methodology overview:**

* Implement zero-knowledge proofs to enable private transactions.&#x20;
* Ensure transaction validity can be verified without revealing details.

### <mark style="background-color:green;">3. Oracle Integration for Real-World Data Access</mark>

**Objective:**&#x20;

* Connect smart contracts to real-world data and events.

**Benefits:**&#x20;

* Expanded Functionality - Enable a wide range of decentralized applications (dApps).&#x20;
* Data Reliability - Access accurate and tamper-proof data feeds.

**Methodology overview:**

* Integrate with leading oracle providers (ex: Chainlink).
* Enable smart contracts interaction with external data sources.

### <mark style="background-color:green;">4. ENS Integration for User-Friendly Addressing</mark>

**Objective:**&#x20;

* Simplify blockchain interactions through human-readable addresses.

**Benefits:**&#x20;

* Improved Usability - Make sending and receiving assets easier for users.&#x20;
* Brand Recognition - Allow users to register personalized domain names.

**Methodology overview:**

* Integrate Ethereum Name Service (ENS) into the Bitrock ecosystem.&#x20;
* Allow users to label wallet addresses with easy-to-remember names.

### <mark style="background-color:green;">5. Develop Decentralized Physical Infrastructure Networks (DePINs)</mark>

**Objective:**&#x20;

* Incentivize individuals to create and maintain physical infrastructure through Bitrock network technology.

**Benefits:**&#x20;

* Infrastructure Expansion - Encourage community participation in building and sharing resources.&#x20;
* Democratized Ownership - Promote accessibility and shared ownership of infrastructure.
* Efficiency & Accessibility - Improve network efficiency by leveraging distributed resources.

**Methodology overview:**

* Adopt an incentivization model to reward contributions like sharing resources and building infrastructure using blockchain.&#x20;
* Boost token utility, where DePIN tokens will facilitate network operations through governance, service payments, and staking.&#x20;
* Introducing governance, where token holders can participate in decision-making processes. Usability of tokens in payment for services within the network.&#x20;
* Encourage ethical operation and network security through token staking.

### <mark style="background-color:green;">6. Implement Rollups for Scalability</mark>

**Objective:**&#x20;

* Increase transaction throughput and reduce fees.

**Benefits:**&#x20;

* Increased Performance - Support more transactions per second.
* Cost Efficiency - Lower transaction costs for users.

**Methodology overview:**

* Deploy rollups to handle transactions off-chain.
* Ensure security by anchoring rollup data to the main chain.

### <mark style="background-color:green;">7. Establish a Decentralized Autonomous Organization (DAO)</mark>

**Objective:**&#x20;

* Empower the community to participate actively in the chain's governance.

**Benefits:**&#x20;

* Decentralization - Distribute decision-making power among stakeholders.
* Transparency - Open governance processes build trust within the community.
* Engagement - Encourage active participation from users and investors.

**Methodology overview:**

* Set up a DAO where token holders can propose and vote on initiatives with a clear governance structure.
* Implement on-chain voting mechanisms for transparency and security.
* Allocate resources managed by the DAO for project development and community initiatives.

### <mark style="background-color:green;">8. Develop a Validator Plan</mark>

**Objective:**&#x20;

* Develop a plan for onboarding new validators for the Bitrock chain.

**Benefits:**&#x20;

* Boost network decentralization
* Preset participtants with an opportunity to earn validator rewards

**Methodology overview:**

* Offer opportunities to trusted actors to join Bitrock's PoA node validator network

### <mark style="background-color:green;">9. Mainnet Integrations for Accessibility</mark>

**Objective:**&#x20;

* Integrate Bitrock's mainnet into all centralized exchanges the token is listed on, as well as decentralized wallets - facilitating interaction with the network.

**Benefits:**&#x20;

* Facilitated Interaction - Freely transact using Bitrock's network on more platforms.&#x20;
* User Adoption - Appease users on different exchanges and wallets for continued use of their preferred platform of choice.

**Methodology overview:**

* Work together with different exchanges, wallets, and asset transfer providers to form mutually beneficial strategic partnerships for Bitrock chain integration.

### <mark style="background-color:green;">10. Exchange Listings</mark>

**Objective:**&#x20;

* Provision of additional points of access and liquidity to buy and sell the Bitrock token, on both ETH and Bitrock chains.
  {% endtab %}

{% tab title="Rockswap" %}
Operated by the Bitrock team and being Bitrock's first native DEX, Rockswap continues to serve Bitrock and its community of users with additional utilities as they are developed. With more to come in the pipeline, below is an overview of some Rockswap's upcoming milestone.

### <mark style="background-color:green;">1. Enhance Cross-chain Interoperability with Axelar Integration</mark>

**Objective:**&#x20;

* Expand the network of chains supported by Rockswap Multichain.
* Achieve barrier-free interaction with more blockchain networks to expand our ecosystem.

**Benefits:**&#x20;

* Asset Portability - Users can effortlessly transfer assets across more blockchains.
* Ecosystem Expansion - Attract developers and projects from other networks.

**Methodology overview:**

* Integrate Axelar's cross-chain communication protocols.&#x20;
* Facilitate cross-chain token and message transfers.

### <mark style="background-color:green;">2. Exchange Listings</mark>

**Objective:**&#x20;

* Provision of additional points of access and liquidity to buy and sell the Rockswap token.

### <mark style="background-color:green;">3. Price Speculation/Prediction Platform</mark>

**Objective:**&#x20;

* Enable users to speculate and bid on price movements of different assets within a specified timeframe.

**Benefits:**&#x20;

* Users who make correct predictions are rewarded with tokens and other incentives.

**Methodology overview:**

* Develop a protocol on Rockswap where users can participate in prediction markets by forecasting price movement or performance of the platform token (ex: Native Bitrock).

### <mark style="background-color:green;">4. Rewards for Liquidity Providers</mark>

**Objective:**&#x20;

* Encourage on-chain liquidity provision by allocating a portion of Rockswap transaction fees to reward liquidity providers.

**Benefits:**&#x20;

* Contribution to improved token pair liquidity pool levels while earning passive income.

**Methodology overview:**

* Participants in the LP reward program will be rewarded proportionally to their share in the liquidity pool.
  {% endtab %}
  {% endtabs %}


# Company

## Bitrock Incorporation

Maintaining our commitment to longevity, and in line with our vision of eliminating potential legal or corporate barriers to expansion and enterprise, Bitrock was incorporated in Dubai (Dubai Silicon Oasis FZCO) on April 24th, 2024 under Registration Number DSO-FZCO-42358, and the Certificate of Formation can be found [here](https://dsoadocumentsprodapi.azurewebsites.net/area-general/QRDocument/download?acn=592063/LIC-0114078\&fname=CertificateOfFormation-FZCORegistrationReport.pdf).

<figure><img src="/files/sNvNlYIkFvA3c3pPH8rf" alt=""><figcaption></figcaption></figure>


# Brand Kit

<figure><img src="/files/bIB7pNxA6q7nsVLrL13L" alt=""><figcaption></figcaption></figure>

## Colours

<div align="left"><figure><img src="/files/3Zj7UeMbJpOJ1fXvwhhD" alt="" width="92"><figcaption><p>Light Grey</p></figcaption></figure></div>

```
Hex: #A4A5A7
RGB: 164,165,167
CSS: rgba(164, 165, 167, 1)
HSL: 220, 2, 65
```

<div align="left"><figure><img src="/files/eJEZ4khSM7HrxTQ5hvj9" alt="" width="92"><figcaption><p>White</p></figcaption></figure></div>

```
Hex: #FFFFFF
RGB: 255,255,255
CSS: rgba(255, 255, 255, 1)
HSL: 0, 0, 100
```

## Logo Mark

<figure><img src="/files/Gpac66HQFq0u7XbQjskU" alt=""><figcaption><p>Frame SIze(PX): 1080x1080</p></figcaption></figure>

**Assets:**

{% file src="/files/ZOkRjC1JKEL2ly3yLTF7" %}

{% file src="/files/Eb1LVFaH8ok1cmXZFO6x" %}

## Horizontal Logo

{% file src="/files/k8rl3DJ7BjQCqrJpEZVK" %}

{% file src="/files/HZsHLzvOnNiRplqAOvhZ" %}

## Typeface

<figure><img src="/files/uv9L8OUpih6qFkDac0vd" alt=""><figcaption></figcaption></figure>

Geometric sans serif typefaces have always been popular, and with support for both the Devanagari and Latin writing systems, Poppins is an internationalist addition to the genre.

For all text descriptions, Bitrock uses Poppin as a font to create a clean and friendly experience.

<figure><img src="/files/Nu18Df8mGhHSUvsrvL1H" alt=""><figcaption></figcaption></figure>

[Download from Google Fonts](https://fonts.google.com/specimen/Poppins?query=poppin)


# Community

Telegram:[ ](https://t.me/Bitrockchain)<https://t.me/Bitrockchain>

***

Twitter: <https://twitter.com/BitRockChain>


# GitHub

{% embed url="<https://github.com/BitrockChain/BitrockChain>" %}


