/QBFT-Network/Node-1/data/key
+```
+
+If a new key was created, the validator key specified in the configuration does not match the created key and the node cannot participate in creating blocks.
+
+:::
+
+## Next steps
+
+Use the [QBFT API](../reference/api/index.md#qbft-methods) to remove or add validators, or import accounts to MetaMask and send transactions as described in the [Quickstart tutorial](quickstart.md#create-a-transaction-using-metamask).
+
+:::note
+
+To add or remove nodes as validators you need the node address. The directory [created for each node](#3-generate-node-keys-and-a-genesis-file) has the node address as the name.
+
+Besu doesn't support [private key management](../../public-networks/how-to/send-transactions.md).
+
+:::
+
+You can switch from the [block header validator selection method] configured here, to the [contract validator selection method] by updating the genesis file and [configuring a transition].
+
+## Stop the nodes
+
+When finished using the private network, stop all nodes using ++ctrl+c++ in each terminal window.
+
+:::tip
+
+To restart the QBFT network in the future, start from [step 6](#6-start-the-first-node-as-the-bootnode).
+
+:::
+
+
+
+[block header validator selection method]: ../how-to/configure/consensus/qbft.md#add-and-remove-validators-using-block-headers
+[contract validator selection method]: ../how-to/configure/consensus/qbft.md#add-and-remove-validators-using-a-smart-contract
+[example smart contract repository]: https://github.com/ConsenSys/validator-smart-contracts
+[configuring a transition]: ../how-to/configure/consensus/qbft.md#transitions
+
+
+
+\*[Byzantine fault tolerant]: Ability to function correctly and reach consensus despite nodes failing or propagating incorrect information to peers.
diff --git a/versioned_docs/version-24.5.0/private-networks/tutorials/quickstart.md b/versioned_docs/version-24.5.0/private-networks/tutorials/quickstart.md
new file mode 100644
index 00000000000..dd6012c88c1
--- /dev/null
+++ b/versioned_docs/version-24.5.0/private-networks/tutorials/quickstart.md
@@ -0,0 +1,635 @@
+---
+title: Quorum Developer Quickstart
+sidebar_position: 1
+description: Rapidly generate a local blockchain network using the Quickstart.
+tags:
+ - private networks
+---
+
+import TestAccounts from '../../global/test_accounts.md';
+
+import Postman from '../../global/postman.md';
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Developer Quickstart
+
+The Quorum Developer Quickstart uses the Hyperledger Besu Docker image to run a private [IBFT 2.0](../how-to/configure/consensus/ibft.md) network of Besu nodes managed by Docker Compose.
+
+:::caution
+
+This tutorial runs a private network suitable for education or demonstration purposes and is not intended for running production networks.
+
+:::
+
+## Prerequisites
+
+- One of the following operating systems:
+ - Linux on x86_64 architecture
+ - macOS on an Intel processor (M1 processor not supported yet)
+ - Windows 64-bit edition, with:
+ - Windows Subsystem for Linux 2
+ - Docker desktop configured to use the WSL2-based engine
+- [Docker and Docker Compose](https://docs.docker.com/compose/install/)
+- [Node.js](https://nodejs.org/en/download/) version 12 or higher
+- [Hardhat](https://hardhat.org/hardhat-runner/docs/getting-started#overview)
+- [cURL command line](https://curl.haxx.se/download.html)
+- [MetaMask](https://metamask.io/)
+
+:::info
+
+Allow Docker up to 4G of memory or 6G if running the privacy examples. Refer to the **Resources** section in [Docker for Mac](https://docs.docker.com/docker-for-mac/) and [Docker Desktop](https://docs.docker.com/docker-for-windows/) for details.
+
+:::
+
+## Generate the tutorial blockchain configuration files
+
+To create the tutorial `docker-compose` files and artifacts, run:
+
+```bash
+npx quorum-dev-quickstart
+```
+
+Follow the prompts displayed to run Hyperledger Besu and [logging with ELK](../how-to/monitor/elastic-stack.md). Enter `n` for [Codefi Orchestrate](https://docs.orchestrate.consensys.net/en/stable/) and [private transactions](../concepts/privacy/index.md).
+
+:::note
+
+If you enter `y` for private transactions, you get three Besu nodes with corresponding Tessera nodes for privacy. You can follow the [privacy walk-through](privacy/index.md), which details how to send private transactions and interact with deployed private contracts.
+
+:::
+
+## Start the network
+
+To start the network, go to the installation directory (`quorum-test-network` if you used the default value) and run:
+
+```bash
+./run.sh
+```
+
+The script builds the Docker images, and runs the Docker containers.
+
+Four Besu IBFT 2.0 validator nodes and a non-validator node are created to simulate a base network.
+
+When execution is successfully finished, the process lists the available services:
+
+```log title="Services list"
+*************************************
+Quorum Dev Quickstart
+*************************************
+----------------------------------
+List endpoints and services
+----------------------------------
+JSON-RPC HTTP service endpoint : http://localhost:8545
+JSON-RPC WebSocket service endpoint : ws://localhost:8546
+Web block explorer address : http://localhost:25000/
+Prometheus address : http://localhost:9090/graph
+Grafana address : http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All
+Kibana logs address : http://localhost:5601/app/kibana#/discover
+Collated logs using Grafana Loki : http://localhost:3000/d/Ak6eXLsPxFemKYKEXfcH/quorum-logs-loki?orgId=1&var-app=besu&var-search=
+
+For more information on the endpoints and services, refer to README.md in the installation directory.
+****************************************************************
+```
+
+- Use the **JSON-RPC HTTP service endpoint** to access the RPC node service from your dapp or from cryptocurrency wallets such as MetaMask.
+- Use the **JSON-RPC WebSocket service endpoint** to access the Web socket node service from your dapp.
+- Use the **Web block explorer address** to display the [block explorer Web application](http://localhost:25000).
+- Use the **Prometheus address** to access the [Prometheus dashboard](http://localhost:9090/graph). [Read more about metrics](../../public-networks/how-to/monitor/metrics.md).
+- Use the **Grafana address** to access the [Grafana dashboard](http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All). [Read more about metrics](../../public-networks/how-to/monitor/metrics.md).
+- Use the **Kibana logs address** to access the [logs in Kibana](http://localhost:5601/app/kibana#/discover). [Read more about log management](../how-to/monitor/elastic-stack.md).
+- Use the **Grafana Loki logs address** to access the [logs in Grafana](http://localhost:3000/d/Ak6eXLsPxFemKYKEXfcH/quorum-logs-loki?orgId=1&var-app=besu&var-search=). [Read more about log management](../how-to/monitor/loki.md).
+
+To display the list of endpoints again, run:
+
+```bash
+./list.sh
+```
+
+## Use a block explorer
+
+You can [use Chainlens Blockchain Explorer](../how-to/monitor/chainlens.md) to analyze block
+information, contract metadata, transaction searches, and more.
+Chainlens has built-in support for privacy-enabled Besu networks.
+
+:::note
+You must connect to one of the privacy nodes (for example, `member1besu`), not the dedicated RPC,
+to allow access for Besu [privacy API methods](../reference/api/index.md#priv-methods).
+In production networks, you must [secure access](../../public-networks/how-to/use-besu-api/authenticate.md)
+to RPC nodes.
+:::
+
+Clone the [Chainlens GitHub repository](https://github.com/web3labs/chainlens-free):
+
+```bash
+git clone https://github.com/web3labs/chainlens-free
+```
+
+From the `docker-compose` directory, run the following command:
+
+```bash
+cd docker-compose
+NODE_ENDPOINT=member1besu PORT=26000 docker-compose -f docker-compose.yml -f chainlens-extensions/docker-compose-quorum-dev-quickstart.yml up
+```
+
+Open `http://localhost/` on your browser.
+You’ll see the new initialization page while it boots up.
+This may take 5–10 minutes for the all services to start and the ingestion sync to complete.
+
+To stop all the services from running, run the following command from the `docker-compose` directory:
+
+```bash
+docker-compose down -v
+```
+
+## Monitor nodes with Prometheus and Grafana
+
+The sample network also includes Prometheus and Grafana monitoring tools to let you visualize node health and usage. You can directly access these tools from your browser at the addresses displayed in the endpoint list.
+
+- [Prometheus dashboard](http://localhost:9090/graph)
+- [Grafana dashboard](http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All)
+- [Grafana Loki logs dashboard](http://localhost:3000/d/Ak6eXLsPxFemKYKEXfcH/quorum-logs-loki?orgId=1&var-app=quorum&var-search=)
+
+For more details on how to configure and use these tools for your own nodes, see the [performance monitoring documentation](../../public-networks/how-to/monitor/metrics.md), [Prometheus documentation](https://prometheus.io/docs/introduction/overview/) and [Grafana documentation](https://grafana.com/docs/).
+
+![Grafana dashboard screenshot](../../assets/images/grafana.png)
+
+and collated logs via Grafana Loki
+
+![Grafana Loki dashboard screenshot](../../assets/images/grafana_loki.png)
+
+## Run JSON-RPC requests
+
+You can run JSON-RPC requests on:
+
+- HTTP with `http://localhost:8545`.
+- WebSockets with `ws://localhost:8546`.
+
+### Run with `cURL`
+
+This tutorial uses [cURL](https://curl.haxx.se/download.html) to send JSON-RPC requests over HTTP.
+
+### Run with Postman
+
+You can also run all the requests with the Besu Postman collection.
+
+
+
+### Request the node version
+
+Run the following command from the host shell:
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' http://localhost:8545
+```
+
+The result displays the client version of the running node:
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "besu/v21.1.2/linux-x86_64/oracle_openjdk-java-11"
+}
+```
+
+
+
+
+
+- `"jsonrpc" : "2.0"` indicates that the JSON-RPC 2.0 spec format is used.
+- `"id" : 1` is the request identifier used to match the request and the response. This tutorial always uses 1.
+- `"result"` contains the running Besu information:
+ - `v21.1.2` is the running Besu version number. This may be different when you run this tutorial.
+ - `linux-x86_64` is the architecture used to build this version.
+ - `oracle_openjdk-java-11` is the JVM type and version used to build this version. This may be different when you run this tutorial.
+
+
+
+
+
+Successfully calling this method shows that you can connect to the nodes using JSON-RPC over HTTP.
+
+From here, you can walk through more interesting requests demonstrated in the rest of this section, or skip ahead to [Create a transaction using MetaMask](#create-a-transaction-using-metamask).
+
+### Count the peers
+
+Peers are the other nodes connected to the node receiving the JSON-RPC request.
+
+Poll the peer count using [`net_peerCount`](../../public-networks/reference/api/index.md#net_peercount):
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' http://localhost:8545
+```
+
+The result indicates that there are four peers (the validators):
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x4"
+}
+```
+
+### Request the most recent block number
+
+Call [`eth_blockNumber`](../../public-networks/reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently synchronized block:
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://localhost:8545
+```
+
+The result indicates the highest block number synchronized on this node.
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x2a"
+}
+```
+
+Here the hexadecimal value `0x2a` translates to decimal as `42`, the number of blocks received by the node so far, about two minutes after the new network started.
+
+## Public transactions
+
+This example uses the [web3.js](https://www.npmjs.com/package/web3) library to make the API calls, using the `rpcnode`
+accessed on `http://localhost:8545`.
+
+Navigate to the `smart_contracts` directory and deploy the public transaction:
+
+```bash
+cd smart_contracts
+npm install
+node scripts/public/hre_1559_public_tx.js
+# or via ethers
+node scripts/public/hre_public_tx.js
+```
+
+This deploys the contract and sends an arbitrary value (`47`) from `Member1` to `Member3`. The script then performs:
+
+1. A read operation on the contract using the `get` function and the contract's ABI, at the specified address.
+1. A write operation using the `set` function and the contract's ABI, at the address and sets the value to `123`.
+1. A read operation on all events emitted.
+
+The script output is as follows:
+
+```bash
+{
+ address: '0x2b224e70f606267586616586850aC6f4Ae971eCb',
+ privateKey: '0xb3f2ab4d7bb07a4168432fb572ceb57fd9b842ed8dc41256255db6ff95784000',
+ signTransaction: [Function: signTransaction],
+ sign: [Function: sign],
+ encrypt: [Function: encrypt]
+}
+create and sign the txn
+sending the txn
+tx transactionHash: 0x423d56f958a316d2691e05e158c6a3f37004c27a1ec9697cf9fed2a5c2ae2c2b
+tx contractAddress: 0xB9A44d3BeF64ABfA1485215736B61880eDe630D9
+Contract deployed at address: 0xB9A44d3BeF64ABfA1485215736B61880eDe630D9
+Use the smart contracts 'get' function to read the contract's constructor initialized value ..
+Obtained value at deployed contract is: 47
+Use the smart contracts 'set' function to update that value to 123 ..
+sending the txn
+tx transactionHash: 0xab460da2544687c5fae4089d01b14bbb9bea765449e1fd2c30b30e1761481344
+tx contractAddress: null
+Verify the updated value that was set ..
+Obtained value at deployed contract is: 123
+Obtained all value events from deployed contract : [47,123]
+```
+
+We also have a second example that shows how to transfer ETH between accounts. Navigate to the `smart_contracts` directory
+and deploy the `eth_tx` transaction:
+
+```bash
+cd smart_contracts
+npm install
+node scripts/public/hre_eth_tx.js
+```
+
+The output is as follows:
+
+```bash
+Account A has balance of: 90000
+Account B has balance of: 0
+create and sign the txn
+sending the txn
+tx transactionHash: 0x8b9d247900f2b50a8dded3c0d73ee29f04487a268714ec4ebddf268e73080f98
+Account A has an updated balance of: 89999.999999999999999744
+Account B has an updated balance of: 0.000000000000000256
+```
+
+## Create a transaction using MetaMask
+
+You can use [MetaMask](https://metamask.io/) to send a transaction on your private network.
+
+1. Open MetaMask and connect it to your private network RPC endpoint by selecting `Localhost 8545` in the network list.
+1. Choose one of the following test accounts and [import it into MetaMask by copying the corresponding private key](https://metamask.zendesk.com/hc/en-us/articles/360015489331-How-to-import-an-Account).
+
+
+
+:::note
+
+Besu doesn't incorporate [account management](../../public-networks/how-to/send-transactions.md). To create your own account, you have to use a third-party tool, such as MetaMask.
+
+:::
+
+1. After importing an existing test account, [create another test account from scratch] to use as the recipient for a test Ether transaction.
+
+1. In MetaMask, select the new test account and [copy its address](https://metamask.zendesk.com/hc/en-us/articles/360015289512-How-to-copy-your-MetaMask-Account-Public-Address).
+
+1. In the [Block Explorer](http://localhost:25000), search for the new test account by selecting the :mag: and pasting the test account address into the search box.
+
+ The new test account displays with a zero balance.
+
+1. [Send test Ether](https://metamask.zendesk.com/hc/en-us/articles/360015488931-How-to-send-ETH-and-ERC-20-tokens-from-your-MetaMask-Wallet) from the first test account (containing test Ether) to the new test account (which has a zero balance).
+
+ :::tip
+
+ You can use a zero gas price here as this private test network is a [free gas network](../how-to/configure/free-gas.md), but the maximum amount of gas that can be used (the gas limit) for a value transaction must be at least 21000.
+
+ :::
+
+1. Refresh the Block Explorer page in your browser displaying the target test account.
+
+ The updated balance reflects the transaction completed using MetaMask.
+
+## Smart contract and dapp usage
+
+You can use a demo dapp called QuorumToken which uses an ERC20 token that is deployed to the network.
+
+We'll use [Hardhat](https://www.npmjs.com/package/hardhat), [Ethers](https://www.npmjs.com/package/ethers) and [MetaMask](https://metamask.io/) to interact with the network, which involves the following steps:
+
+1. Deploy the contract and **save the contract's address**.
+1. Start the dapp, and read and transact with the deployed token.
+
+The `dapps/quorumToken` directory is this structured in this manner (only relevant paths shown):
+
+```bash
+quorumToken
+├── hardhat.config.ts // hardhat network config
+├── contracts // the QuorumToken.sol
+├── scripts // handy scripts eg: to deploy to a chain
+├── test // contract tests
+└── frontend // dapp done in next.js
+ ├── public
+ ├── src
+ ├── styles
+ ├── tsconfig.json
+```
+
+### Deploy the contract
+
+Once the network is up and running, enter the `quorumToken` directory and run the following:
+
+```bash
+# install dependencies
+npm i
+# compile the contract
+npm run compile
+npm run test
+# deploy the contract to the quickstart network
+npm run deploy-quorumtoken
+```
+The output is similar to the following:
+
+```bash
+
+# compile
+> quorumToken@1.0.0 compile
+> npx hardhat compile
+
+Generating typings for: 5 artifacts in dir: typechain-types for target: ethers-v6
+Successfully generated 24 typings!
+Compiled 5 Solidity files successfully
+
+# test
+> quorumToken@1.0.0 test
+> npx hardhat test
+
+ QuorumToken
+ Deployment
+ âś” Should have the correct initial supply (1075ms)
+ âś” Should token transfer with correct balance (78ms)
+
+
+ 2 passing (1s)
+
+# deploy
+Contract deploy at: 0x5FbDB2315678afecb367f032d93F642f64180aa3
+```
+This will deploy the contract to the network and return the address. **Please save this address for the next step**.
+
+### Run the dapp
+
+The dapp runs a local website using Next.js, and uses the contract in the previous step deployed on the network.
+
+With the blockchain running, and MetaMask connected to `localhost` on port `8545`, import one of [our test accounts via private key](../reference/accounts-for-testing.md), and run the following command:
+
+```bash
+cd frontend
+npm i
+npm run dev
+```
+This starts the dapp, binding it to port `3001` on your machine.
+
+```text
+
+> webapp@0.1.0 dev
+> next dev -p 3001
+
+- ready started server on [::]:3001, url: http://localhost:3001
+- event compiled client and server successfully in 270 ms (18 modules)
+- wait compiling...
+- event compiled client and server successfully in 173 ms (18 modules)
+```
+
+In the browser where you have MetaMask enabled and one of the test accounts loaded, open a new tab and navigate to
+[the QuorumToken dapp](http://localhost:3001).
+Connect to MetaMask and input the address from the previous step. Fox example our contract above deployed to `0x5FbDB2315678afecb367f032d93F642f64180aa3`.
+
+The dapp will then read the balance of the account from MetaMask and get details of the contract. You can then send funds
+to another address (any of the other test accounts) on the network, and MetaMask will sign and send the transaction.
+
+You can also search for the transaction and view its details in the [Block Explorer](http://localhost:25000/).
+
+![Dapp UI](../../assets/images/dapp-explorer-tx.png)
+
+The MetMask UI also keeps a record of the transaction.
+
+![Dapp UI](../../assets/images/dapp-metamask-tx.png)
+
+### Deploy your own dapp
+
+You can deploy your own dapp to the Quorum Developer Quickstart by configuring your dapp to point to the Quickstart network.
+
+We recommend using [Hardhat](https://hardhat.org/hardhat-runner/docs/guides/project-setup), and you can use the sample
+`hardhat.config.js` to configure the `networks` object in the [Hardhat configuration file](https://hardhat.org/hardhat-network/docs/reference#config)
+to specify which networks to connect to for deployments and testing. The Quickstart's RPC service endpoint is `http://localhost:8545`.
+
+For example, the following is the Hardhat configuration file for the QuorumToken dapp used in the Quickstart GoQuorum network:
+
+```js
+module.exports = {
+ networks: {
+ // in built test network to use when developing contracts
+ hardhat: {
+ chainId: 1337
+ },
+ quickstart: {
+ url: "http://127.0.0.1:8545",
+ chainId: 1337,
+ // test accounts only, all good ;)
+ accounts: [
+ "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63",
+ "0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3",
+ "0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f"
+ ]
+ }
+ },
+ defaultNetwork: "hardhat",
+ ...
+ ...
+```
+
+Deploy the contract using:
+
+```bash
+npx hardhat run ./scripts/deploy_quorumtoken.ts --network quickstart
+```
+
+## Stop and restart the private network without removing containers
+
+To shut down the private network without deleting the containers:
+
+```bash
+./stop.sh
+```
+
+This command stops the containers related to the services specified in the `docker-compose.yml` file.
+
+To restart the private network:
+
+```bash
+./resume.sh
+```
+
+## Stop the private network and remove containers
+
+To shut down the private network and delete all containers and images created from running the sample network and the Pet Shop dapp:
+
+```bash
+./remove.sh
+```
+
+## Add a new node to the network
+
+New nodes joining an existing network require the following:
+
+- The same genesis file used by all other nodes on the running network.
+- A list of nodes to connect to; this is done by specifying [bootnodes], or by providing a list of [static nodes].
+- A node key pair and optionally an account. If the running network is using permissions, then you need to add the new node's enode details to the [permissions file] used by existing nodes, or update the onchain permissioning contract.
+
+The following steps describe the process to add a new node to the Developer Quickstart.
+
+### 1. Create the node key files
+
+Create a node key pair and account for a new node by running the following script:
+
+```bash
+cd ./extra
+npm install
+node generate_node_keys.js --password "Password"
+```
+
+:::note
+
+The `--password` parameter is optional.
+
+:::
+
+### 2. Create new node directory
+
+Navigate to the directory where the configuration files for the network were created.
+
+:::note
+
+The directory was specified in an earlier step when running `npx quorum-dev-quickstart`. The default location is `./quorum-test-network`.
+
+:::
+
+In the `config/nodes` directory, create a subdirectory for the new node (for example, `newnode`), and move the `nodekey`, `nodekey.pub`, `address` and `accountkey` files from the previous step into this directory.
+
+### 3. Update docker-compose
+
+Add an entry for the new node into the docker-compose file:
+
+```yaml
+newnode:
+ <<: *besu-def
+ container_name: newnode
+ volumes:
+ - public-keys:/opt/besu/public-keys/
+ - ./config/besu/:/config
+ - ./config/nodes/newnode:/opt/besu/keys
+ - ./logs/besu:/tmp/besu
+ depends_on:
+ - validator1
+ networks:
+ quorum-dev-quickstart:
+ ipv4_address: 172.16.239.41
+```
+
+:::caution important
+Select an IP address and port map not being used for the other containers.
+Mount the newly created folder `./config/nodes/newnode` to the `/opt/besu/keys` directory of the new node, as seen
+in this example.
+:::
+
+### 4. Update Prometheus configuration
+
+Update `prometheus.yml` in the `./config/prometheus/` directory to configure metrics to display in Grafana.
+
+Insert the following under `scrape_configs` section in the file. Change `job_name` and `targets` appropriately if you've updated them.
+
+```yaml
+- job_name: newnode
+ scrape_interval: 15s
+ scrape_timeout: 10s
+ metrics_path: /metrics
+ scheme: http
+ static_configs:
+ - targets: [newnode:9545]
+```
+
+### 5. Update files with the enode address
+
+Add the new node's enode address to the [static nodes] file and [permissions file]. The enode uses the format `enode://pubkey@ip_address:30303`. If the `nodekey.pub` is `4540ea...9c1d78` and the IP address is `172.16.239.41`, then the enode address is `"enode://4540ea...9c1d78@172.16.239.41:30303"`, which must be added to both files.
+
+Alternatively, call the [`perm_addNodesToAllowlist`](../../public-networks/reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add the new node without restarting.
+
+:::note
+
+Calling the API method by itself only persists for as long as the nodes remain online and is lost on the next restart.
+
+On a live network, the new node must be added to the [permissions file] so that subsequent restarts of the nodes are aware of the change.
+
+:::
+
+### 6. Start the network
+
+Once complete, start the network up with `./run.sh`. When using the smart contract you can either make changes via a [dapp](https://github.com/ConsenSys/permissioning-smart-contracts) or via [RPC API calls](../../public-networks/reference/api/index.md#perm_addnodestoallowlist).
+
+
+
+[bootnodes]: ../how-to/configure/bootnodes.md
+[permissions file]: ../how-to/use-permissioning/local.md
+[static nodes]: ../../public-networks/how-to/connect/static-nodes.md
+[allow list]: ../how-to/use-permissioning/local.md#node-allowlisting
+[Import one of the existing accounts above into MetaMask]: https://metamask.zendesk.com/hc/en-us/articles/360015489331-Importing-an-Account-New-UI-
+[create another test account from scratch]: https://metamask.zendesk.com/hc/en-us/articles/360015289452-Creating-Additional-MetaMask-Wallets-New-UI-
diff --git a/versioned_docs/version-24.5.0/public-networks/.meta.yml b/versioned_docs/version-24.5.0/public-networks/.meta.yml
new file mode 100644
index 00000000000..47f9110472f
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/.meta.yml
@@ -0,0 +1,6 @@
+---
+# Meta items setting with yaml files is an insider only feature
+# see https://squidfunk.github.io/mkdocs-material/reference/#built-in-meta-plugin
+
+tags:
+ - public networks
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/_category_.json b/versioned_docs/version-24.5.0/public-networks/concepts/_category_.json
new file mode 100644
index 00000000000..0eb56feedb7
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Concepts",
+ "position": 4,
+ "link": {
+ "type": "generated-index",
+ "slug": "public-networks/concepts"
+ }
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/data-storage-formats.md b/versioned_docs/version-24.5.0/public-networks/concepts/data-storage-formats.md
new file mode 100644
index 00000000000..97da1d2a9de
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/data-storage-formats.md
@@ -0,0 +1,77 @@
+---
+title: Data storage formats
+sidebar_position: 3
+description: Learn about storing data using Forest of Tries and Bonsai Tries.
+tags:
+ - public networks
+---
+
+# Data storage formats
+
+Besu offers two formats for storing the world state, [Bonsai Tries](#bonsai-tries) and [Forest of Tries](#forest-of-tries).
+
+## Bonsai Tries
+
+Bonsai Tries is a data storage layout policy designed to reduce storage requirements and increase read performance.
+
+Bonsai stores leaf values in a trie log, separate from the branches of the trie. Bonsai stores nodes by the location of the node instead of the hash of the node. Bonsai can access the leaf from the underlying storage directly using the account key. This greatly reduces the disk space needed for storage and allows for less resource-demanding and faster read performance. Bonsai inherently prunes orphaned nodes and old branches.
+
+To run a node with Bonsai Tries data storage format, use the command line option [`--data-storage-format=BONSAI`](../reference/cli/options.md#data-storage-format).
+
+
+
+![Bonsai_tries](../../assets/images/Bonsai_tries.png)
+
+
+
+## Forest of Tries
+
+Forest of Tries, also called forest mode, is the default storage format.
+
+In forest mode, each node in the trie is saved in a key-value store by hash. For each block, the world state is updated with new nodes, leaf nodes, and a new state root. Old leaf nodes remain in the underlying data store. Data is accessed and stored by hash, which increases the size of the database and increases the resources and time needed to access account data.
+
+
+
+![forest_of_tries](../../assets/images/forest_of_tries.png)
+
+
+
+:::warning
+Forest pruning using the `--pruning-enabled` option is no longer supported.
+We recommend using [Bonsai Tries](#bonsai-tries) to save disk space.
+:::
+
+## Forest of Tries vs. Bonsai Tries
+
+### Storage requirements
+
+Forest mode uses significantly more memory than Bonsai. With an [archive node](../get-started/connect/sync-node.md#run-an-archive-node), forest mode uses an estimated 12 TB of storage, while Bonsai uses an estimated 1100 GB of storage. With a [full node](../get-started/connect/sync-node.md#run-a-full-node), forest mode uses an estimated 750 GB of storage, while Bonsai uses an estimated 650 GB of storage.
+
+### Accessing data
+
+Forest mode must go through all the branches by hash to read a leaf value. Bonsai can access the leaf from the underlying storage directly using the account key. Bonsai will generally read faster than forest mode, particularly if the blocks are more recent.
+
+However, Bonsai becomes increasingly more resource-intensive the further in history you try to read data. To prevent this, you can limit how far Bonsai looks back while reconstructing data. The default limit Bonsai looks back is 512. To change the parameter, use the [`--bonsai-historical-block-limit`](../reference/cli/options.md#bonsai-historical-block-limit) option. This might directly impact [JSON-RPC API](../reference/api/index.md) queries.
+
+:::note
+
+Using `--bonsai-historical-block-limit` doesn't affect the size of the database being stored, only how far back to load. This means there is no "safe minimum" value to use with this option.
+
+:::
+
+### Syncing nodes
+
+The following table shows the ways you can [sync a full node](../get-started/connect/sync-node.md#run-a-full-node) with the different data storage formats using [fast](../get-started/connect/sync-node.md#fast-synchronization) and [snap](../get-started/connect/sync-node.md#snap-synchronization) sync.
+
+| Data storage format | Sync mode | Storage estimate | Can other nodes sync to your node? |
+| --- | --- | --- | --- |
+| Bonsai | Fast | 1140 GB | No |
+| Bonsai | Snap | 1090 GB | To be implemented |
+| Bonsai | Checkpoint | 840 GB | No |
+| Forest | Fast | 1200 GB | Yes |
+
+:::tip
+
+We recommend using snap sync with Bonsai for the fastest sync and lowest storage requirements.
+
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/events-and-logs.md b/versioned_docs/version-24.5.0/public-networks/concepts/events-and-logs.md
new file mode 100644
index 00000000000..c5b78fe2bbb
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/events-and-logs.md
@@ -0,0 +1,186 @@
+---
+title: Events and logs
+sidebar_position: 6
+description: Learn about events and logs in Besu.
+tags:
+ - public networks
+ - private networks
+---
+
+# Events and logs
+
+Transaction mining causes smart contracts to emit events and write logs to the blockchain.
+
+The smart contract address is the link to the logs and the blockchain includes the logs, but contracts cannot access logs. Log storage is cheaper than contract storage (that is, it costs less gas) so storing and accessing the required data in logs reduces the cost. For example, use logs to display all transfers made using a specific contract, but not the current state of the contract.
+
+A Dapp front end can either access logs using the [JSON-RPC API filter methods](../how-to/use-besu-api/access-logs.md) or subscribe to logs using the [RPC Pub/Sub API](../how-to/use-besu-api/rpc-pubsub.md#logs).
+
+Use [`admin_generateLogBloomCache`](../reference/api/index.md#admin_generatelogbloomcache) to improve log retrieval performance.
+
+## Topics
+
+Log entries contain up to four topics. The first topic is the [event signature hash](#event-signature-hash) and up to three topics are the indexed [event parameters](#event-parameters).
+
+```json title="A log entry for an event with one indexed parameter"
+{
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x84",
+ "blockHash": "0x5fc573d76ec48ec80cbc43f299ebc306a8168112e3a4485c23e84e9a40f5d336",
+ "transactionHash": "0xcb52f02342c2498df82c49ac26b2e91e182155c8b2a2add5b6dc4c249511f85a",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3",
+ "0x0000000000000000000000000000000000000000000000000000000000000001"
+ ]
+}
+```
+
+## Event parameters
+
+Up to three event parameters can have the `indexed` attribute. Logs store these indexed parameters as `topics`. Indexed parameters are searchable and filterable.
+
+Topics are 32 bytes. If an indexed argument is an array (including `string` and `byte` datatypes), the log stores the keccak-256 hash of the parameter as a topic.
+
+Log `data` includes non-indexed parameters but is difficult to search or filter.
+
+A Solidity contract storing one indexed and one non-indexed parameter and has an event emitting the value of each parameter:
+
+```solidity
+pragma solidity ^0.5.1;
+contract Storage {
+ uint256 public valueIndexed;
+ uint256 public valueNotIndexed;
+
+ event Event1(uint256 indexed valueIndexed, uint256 valueNotIndexed);
+
+ function setValue(uint256 _valueIndexed, uint256 _valueNotIndexed) public {
+ valueIndexed = _valueIndexed;
+ valueNotIndexed = _valueNotIndexed;
+ emit Event1(_valueIndexed, _valueNotIndexed);
+ }
+}
+```
+
+A log entry created by invoking the contract in the previous example with `valueIndexed` set to 5 and `valueNotIndexed` set to 7:
+
+```json
+{
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x4d6",
+ "blockHash": "0x7d0ac7c12ac9f622d346d444c7e0fa4dda8d4ed90de80d6a28814613a4884a67",
+ "transactionHash": "0xe994022ada94371ace00c4e1e20663a01437846ced02f18b3f3afec827002781",
+ "transactionIndex": "0x0",
+ "address": "0x43d1f9096674b5722d359b6402381816d5b22f28",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000007",
+ "topics": [
+ "0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8",
+ "0x0000000000000000000000000000000000000000000000000000000000000005"
+ ]
+}
+```
+
+## Event signature hash
+
+The first topic in a log entry is always the event signature hash. The event signature hash is a keccak-256 hash of the event name and input argument types, with argument names ignored. For example, the event `Hello(uint256 worldId)` has the signature hash `keccak('Hello(uint256)')`. The signature identifies to which event log topics belong.
+
+A Solidity contract with two different events:
+
+```solidity
+pragma solidity ^0.5.1;
+contract Storage {
+ uint256 public valueA;
+ uint256 public valueB;
+
+ event Event1(uint256 indexed valueA);
+ event Event2(uint256 indexed valueB);
+
+ function setValue(uint256 _valueA) public {
+ valueA = _valueA;
+ emit Event1(_valueA);
+ }
+
+ function setValueAgain(uint256 _valueB) public {
+ valueB = _valueB;
+ emit Event2(_valueB);
+ }
+}
+```
+
+The event signature hash for event 1 is `keccak('Event1(uint256)')` and the event signature hash for event 2 is `keccak('Event2(uint256)')`. The hashes are:
+
+- `04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3` for event 1
+- `06df6fb2d6d0b17a870decb858cc46bf7b69142ab7b9318f7603ed3fd4ad240e` for event 2.
+
+:::tip
+
+You can use a library keccak (sha3) hash function, such as provided in [Web3.js](https://web3js.readthedocs.io/en/v1.2.11/web3-utils.html?highlight=sha3#sha3), or an online tool, such as https://emn178.github.io/online-tools/keccak_256.html, to generate event signature hashes.
+
+:::
+
+Log entries from invoking the Solidity contract in the previous example:
+
+```json
+[
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x84",
+ "blockHash": "0x5fc573d76ec48ec80cbc43f299ebc306a8168112e3a4485c23e84e9a40f5d336",
+ "transactionHash": "0xcb52f02342c2498df82c49ac26b2e91e182155c8b2a2add5b6dc4c249511f85a",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3",
+ "0x0000000000000000000000000000000000000000000000000000000000000001"
+ ]
+ },
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x87",
+ "blockHash": "0x6643a1e58ad857f727552e4572b837a85b3ca64c4799d085170c707e4dad5255",
+ "transactionHash": "0xa95295fcea7df3b9e47ab95d2dadeb868145719ed9cc0e6c757c8a174e1fcb11",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x",
+ "topics": [
+ "0x06df6fb2d6d0b17a870decb858cc46bf7b69142ab7b9318f7603ed3fd4ad240e",
+ "0x0000000000000000000000000000000000000000000000000000000000000002"
+ ]
+ }
+]
+```
+
+## Topic filters
+
+[Filter options objects](../reference/api/objects.md#filter-options-object) have a `topics` key to filter logs by topics.
+
+Topics are order-dependent. A transaction with a log containing topics `[A, B]` matches with the following topic filters:
+
+- `[]` - Match any topic
+- `[A]` - Match A in first position
+- `[[null], [B]]` - Match any topic in first position AND B in second position
+- `[[A],[B]]` - Match A in first position AND B in second position
+- `[[A, C], [B, D]]` - Match (A OR C) in first position AND (B OR D) in second position.
+
+The following filter option object returns log entries for the [Event Parameters example contract](#event-parameters) with `valueIndexed` set to 5 or 9:
+
+```json
+{
+ "fromBlock": "earliest",
+ "toBlock": "latest",
+ "address": "0x43d1f9096674b5722d359b6402381816d5b22f28",
+ "topics": [
+ ["0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8"],
+ [
+ "0x0000000000000000000000000000000000000000000000000000000000000005",
+ "0x0000000000000000000000000000000000000000000000000000000000000009"
+ ]
+ ]
+}
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/genesis-file.md b/versioned_docs/version-24.5.0/public-networks/concepts/genesis-file.md
new file mode 100644
index 00000000000..a5aa6543e6d
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/genesis-file.md
@@ -0,0 +1,50 @@
+---
+title: Genesis file
+sidebar_position: 7
+description: Learn about configuring a network using the genesis file.
+tags:
+ - public networks
+ - private networks
+---
+
+# Genesis file
+
+The genesis file defines the first block in the chain, and the first block defines which chain you want to join.
+
+For Ethereum Mainnet and public testnets (for example, Goerli) the genesis configuration definition is in Besu and used when specifying a public network using the [`--network`](../reference/cli/options.md#network) command line option.
+
+For private networks, [create a JSON genesis file](https://consensys.net/blog/quorum/hyperledger-besu-how-to-create-an-ethereum-genesis-file/), then specify the genesis file using the [`--genesis-file`](../reference/cli/options.md#genesis-file) command line option.
+
+The genesis file specifies the [network-wide settings](../reference/genesis-items.md), such as those for a [free gas network](../../private-networks/how-to/configure/free-gas.md), so all nodes in a network must use the same genesis file.
+
+:::note
+
+You can specify node-level settings on the command line or in the [node configuration file](../how-to/use-configuration-file/index.md).
+
+:::
+
+```json title="Example IBFT 2.0 genesis file"
+{
+ "config": {
+ "chainId": 2018,
+ "berlinBlock": 0,
+ "ibft2": {
+ "blockperiodseconds": 2,
+ "epochlength": 30000,
+ "requesttimeoutseconds": 4
+ }
+ },
+ "nonce": "0x0",
+ "timestamp": "0x58ee40ba",
+ "extraData": "0xf83ea00000000000000000000000000000000000000000000000000000000000000000d5949811ebc35d7b06b3fa8dc5809a1f9c52751e1deb808400000000c0",
+ "gasLimit": "0x1fffffffffffff",
+ "difficulty": "0x1",
+ "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
+ "coinbase": "0x0000000000000000000000000000000000000000",
+ "alloc": {
+ "9811ebc35d7b06b3fa8dc5809a1f9c52751e1deb": {
+ "balance": "0xad78ebc5ac6200000"
+ }
+ }
+}
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/network-and-chain-id.md b/versioned_docs/version-24.5.0/public-networks/concepts/network-and-chain-id.md
new file mode 100644
index 00000000000..a72133d3a5e
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/network-and-chain-id.md
@@ -0,0 +1,74 @@
+---
+title: Network ID and chain ID
+sidebar_position: 5
+description: Learn about network ID and chain ID in Besu.
+tags:
+ - public networks
+ - private networks
+---
+
+# Network ID and chain ID
+
+Ethereum networks have two identifiers, a network ID and a chain ID. Although they often have the same value, they have different uses.
+
+Peer-to-peer communication between nodes uses the _network ID_, while the transaction signature process uses the _chain ID_.
+
+:::note
+
+[EIP-155](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md) introduced using the chain ID as part of the transaction signing process to protect against transaction replay attacks.
+
+:::
+
+For most networks, including Mainnet and the public testnets, the network ID and the chain ID are the same, with the network ID defaulting to the chain ID, as specified in the genesis file.
+
+```json title="Chain ID in the genesis file"
+{
+ "config": {
+ "ethash": {
+ },
+ "chainID": 1981
+ },
+ ...
+}
+```
+
+Besu sets the chain ID (and by default the network ID) automatically, using either the [`--genesis-file`](../reference/cli/options.md#genesis-file) option or when specifying a network using the [`--network`](../reference/cli/options.md#network) option. The following table lists the available networks and their chain and network IDs.
+
+| Network | Chain | Chain ID | Network ID | Type |
+| --------- | ----- | -------- | ---------- | ----------- |
+| `mainnet` | ETH | 1 | 1 | Production |
+| `goerli` | ETH | 5 | 5 | Test |
+| `sepolia` | ETH | 11155111 | 11155111 | Test |
+| `dev` | ETH | 2018 | 2018 | Development |
+| `classic` | ETC | 61 | 1 | Production |
+| `mordor` | ETC | 63 | 7 | Test |
+
+:::info
+
+The Ropsten, Rinkeby, and Kiln testnets are deprecated.
+
+:::
+
+## Specify a different network ID
+
+Usually the network ID is the same as the chain ID, but if you want to separate specific nodes from the rest of the network so they can't connect or synchronize with other nodes, you can override the default network ID for those nodes using the [`--network-id`](../reference/cli/options.md#network-id) option.
+
+## Start a new chain with a new chain ID
+
+If you update the chain ID (or network ID) of existing nodes, they can no longer peer with other nodes in the network. Nodes need to have a matching [genesis file](genesis-file.md), including the chain ID, in order to peer. In this case, you're effectively running two chains that can't communicate with each other.
+
+To change a chain ID and start a new chain:
+
+1. Stop all your nodes using ctrl+c in each terminal window.
+2. Update the [genesis file](genesis-file.md) with the new chain ID.
+3. Make sure all nodes have the same genesis file.
+4. Delete the old data directory or point to a new location for each node.
+5. [Restart the nodes](../../private-networks/tutorials/ibft/index.md#6-start-the-first-node-as-the-bootnode).
+
+:::danger Warning
+
+Starting a new chain is starting from block zero.
+
+This means when you start a new chain with a new chain ID, you lose all previous data.
+
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/node-keys.md b/versioned_docs/version-24.5.0/public-networks/concepts/node-keys.md
new file mode 100644
index 00000000000..c03ff8034d1
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/node-keys.md
@@ -0,0 +1,104 @@
+---
+title: Node keys
+sidebar_position: 8
+description: Learn about node public and private keys, and the node address.
+tags:
+ - public networks
+ - private networks
+---
+
+# Node keys and node address
+
+Each node has a private and public key pair, and a node address. Hyperledger Besu uses the private and public key pair to sign and verify transactions, and the node address as an identifier for the node.
+
+## Node private key
+
+When starting Hyperledger Besu, if the [`--node-private-key-file`](../reference/cli/options.md#node-private-key-file) option is not specified and a `key` file does not exist in the data directory for the node, Besu generates a node private key and writes it to the `key` file.
+
+If a `key` file does exist in the data directory when starting Besu, the node starts using the private key in the `key` file.
+
+:::info
+
+The private key is not encrypted.
+
+:::
+
+## Node public key
+
+The node public key displays in the log after starting Besu. Also referred to as the node ID, the node public key forms part of the enode URL of a node.
+
+You can export the node public key, either to standard output or to a specified file, using the [`public-key export`](../reference/cli/subcommands.md#public-key) subcommand.
+
+## Node address
+
+Besu generates the node address by creating a hash of the node public key and using the last 20 bytes of the hash as the node address. It is also displayed in the logs after starting Besu.
+
+You can export the node address, either to standard output or to a specified file, using the [`public-key export-address`](../reference/cli/subcommands.md#public-key) subcommand.
+
+## Specify a custom node private key file
+
+Use the [`--node-private-key-file`](../reference/cli/options.md#node-private-key-file) option to specify a custom `key` file in any location.
+
+If the `key` file exists, the node starts with the private key in the `key` file. If the `key` file does not exist, Besu generates a node private key and writes it to the `key` file.
+
+For example, the following command either reads the node private key from `privatekeyfile` or writes a generated private key to `privatekeyfile`.
+
+```bash
+besu --node-private-key-file="/Users/username/privatekeyfile"
+```
+
+## Enode URL
+
+The enode URL identifies a node. For example, the [`--bootnodes`](../reference/cli/options.md#bootnodes) option and the [`admin_addPeer`](../reference/api/index.md#admin_addpeer) method specify nodes by the enode URL.
+
+The enode URL format is `enode://@[?discport=]` where:
+
+- `` is the node public key, excluding the initial 0x.
+- `` is the host and TCP port the bootnode is listening on for P2P discovery. Specify the host and TCP port using the [`--p2p-host`](../reference/cli/options.md#p2p-host) and [`--p2p-port`](../reference/cli/options.md#p2p-port) options. The default host is `127.0.0.1` and the default port is `30303`.
+
+ :::note
+
+ Standard Ethereum enode URLs allow hostnames as IP addresses only, however Besu provides [domain name support](#domain-name-support) in private permissioned networks.
+
+ :::
+
+- If the TCP listening and UDP discovery ports differ, the UDP port is specified as query parameter `discport`.
+
+:::info
+
+If the node public key is `0xc35c3ec90a8a51fd5703594c6303382f3ae6b2ecb9589bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f`, the host is `10.3.58.6`, the TCP listening port is `30303`, and the UDP discovery port is `30301`, then the enode URL is `enode://c35c3ec90a8a51fd5703594c6303382f3ae6b2ecb9589bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f@10.3.58.6:30303?discport=30301`
+
+If the [`--p2p-host`](../reference/cli/options.md#p2p-host) or [`--p2p-port`](../reference/cli/options.md#p2p-port) options are not specified and the node public key is `0xc35c3ec90a8a51fd5703594c6303382f3ae6b2ecb9589bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f`, then the enode URL is `enode://c35c3ec90a8a51fd5703594c6303382f3ae6b2ecb9589bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f@127.0.0.1:30303`
+
+:::
+
+The enode URL displays when starting a Besu node. Use the [`net_enode`](../reference/api/index.md#net_enode) JSON-RPC API method to get the enode URL of the node.
+
+The enode advertised to other nodes during discovery is the external IP address and port, as defined by [`--nat-method`](../how-to/connect/specify-nat.md).
+
+### Domain name support
+
+:::caution
+
+Enode URL domain name support is an early access feature that you can use in private [permissioned networks](../../private-networks/concepts/permissioning/index.md) only.
+
+:::
+
+To use domain names in enode URLs:
+
+- Configure DNS reverse lookup.
+- Enable DNS support using the early access option `--Xdns-enabled`.
+
+```bash title="Example enode URL using a domain name"
+enode://c35c3ec90a8a51fd5703594c6303382f3ae6b2ecb9589bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f@mydomain.dev.example.net:30301
+```
+
+:::tip
+
+If deploying Besu using Kubernetes in private permissioned networks, use the `--Xdns-enabled` and `--Xdns-update-enabled` options to ensure that Besu can connect to a container after restarting even if the IP address of the container changes.
+
+Use the [`--Xhelp`](../reference/cli/options.md#xhelp) command line option to view early access options and their descriptions.
+
+:::
+
+If nodes are not connecting as expected, set the [log level to TRACE](../reference/api/index.md#admin_changeloglevel) to help troubleshoot the issue.
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/_category_.json b/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/_category_.json
new file mode 100644
index 00000000000..47b2323cd5d
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Proof of stake consensus",
+ "position": 2
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/attestations.md b/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/attestations.md
new file mode 100644
index 00000000000..8ab9172601f
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/attestations.md
@@ -0,0 +1,76 @@
+---
+title: Attestations
+sidebar_position: 1
+description: Proof of stake attestations
+tags:
+ - public networks
+---
+
+# Attestations
+
+Ethereum's move to [proof of stake consensus](./index.md) has brought many changes to the way the network operates. An important aspect of proof of stake is the need for validators to provide attestations in a timely and accurate manner. However, missed attestations have become a common occurrence among validators, leading to a loss of rewards and earnings. This page explores the context behind missing attestations.
+
+## What are attestations?
+
+Every epoch (6.4 minutes), a validator proposes an attestation to the network. The attestation is for a specific slot (every 12 seconds) in the epoch. The attestation votes in favor of the validator's view of the chain, in particular, the most recent justified block and the first block in the current epoch (known as _source_ and _target_ checkpoints). This information is collected for all participating validators, enabling the network to reach consensus about the state of the blockchain.
+
+Honest nodes have 1/3 \* `SECONDS_PER_SLOT` (4 seconds) from the start of the slot to either receive the block or decide there was no block produced and attest to an “empty” or “skip” slot. Once this time has elapsed, attesters should broadcast their attestation reflecting their local view of the chain.
+
+See the [official specification](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/validator.md#attesting) for more information about attestations.
+
+## Attestation rewards
+
+Around 85% of validators' rewards come from making attestations. Although committee and slot assignments for attesting are randomized, every active validator will be selected to make exactly one attestation each epoch.
+
+Attestations receive rewards only if they're included in Beacon Chain blocks. An attestation contains three votes. Each vote is eligible for a reward, subject to the following conditions:
+
+- Getting attestations included with the correct source checkpoint within 5 slots
+- Getting attestations included with the correct target checkpoint within 32 slots
+- Getting attestations included with the correct head within 1 slot immediately
+
+Each of these duties carries a reward rate, a portion of the entire "weight denominator," or the sum of weighted rewards for each attestation. The remaining weights relate to participating in sync committees and proposing blocks (excluding any tips/MEV, the bulk of block rewards). The following table (from [Upgrading Ethereum](https://eth2book.info/bellatrix/part2/incentives/rewards/)) breaks down these weights for cumulative rewards:
+
+| Name | Percentage | Value |
+| ---------------------- | ---------- | ------------ |
+| `TIMELY_SOURCE_WEIGHT` | 21.9% | `uint64(14)` |
+| `TIMELY_TARGET_WEIGHT` | 40.6% | `uint64(26)` |
+| `TIMELY_HEAD_WEIGHT` | 21.9% | `uint64(14)` |
+| `SYNC_REWARD_WEIGHT` | 3.1% | `uint64(2)` |
+| `PROPOSER_WEIGHT` | 12.5% | `uint64(8)` |
+| `WEIGHT_DENOMINATOR` | 100% | `uint64(64)` |
+
+## Incorrect attestations
+
+If you have attestations with incorrect head votes, your node might be experiencing slow block imports. However, block producers can also be slow to publish blocks, resulting in a majority of validators getting the head vote wrong. A \<100% head vote doesn't necessarily imply a problem with your node.
+
+In case of a slowdown, identify whether the issue is with the beacon node or the execution client. Block timing logs can be helpful in determining this.
+
+If you're using [Teku](https://docs.teku.consensys.net/) as a consensus layer client, identify late blocks (the block didn't get to Teku in time) with the following kind of log:
+
+```bash
+Late Block Import *** Block: c2b911533a8f8d5e699d1a334e0576d2b9aa4caa726bde8b827548b579b47c68 (4765916) proposer 6230 arrival 3475ms, pre-state_retrieved +5ms, processed +185ms, execution_payload_result_received +1436ms, begin_importing +0ms, transaction_prepared +0ms, transaction_committed +0ms, completed +21ms
+```
+
+The time of arrival indicates how much time elapsed after the start of the slot before your node received the block. In this example, the block arrived after 3475ms, which is slower than optimal, but still enough time for Teku to create an attestation 4 seconds into the slot.
+
+Typically, delayed arrivals occur when the block producer is slow in generating the block. It's also possible that the block was published on time but took longer to propagate to your node through peer-to-peer gossip. If delayed arrivals are a recurring issue, it might be a problem with your node, such as an incorrect system clock, network issues, or a reduction in the number of peers.
+
+## Conclusion
+
+Attestations are complicated. Rewards can be impacted by:
+
+- The contents of a block (how long it takes to compute).
+- The hardware processing that block (execution speed).
+- How long it takes for the block to arrive to Besu from the consensus layer.
+- The arrival time of the block from other consensus layer peers. Besu and your consensus layer client have no control over how late into a slot they receive blocks.
+- General network latency.
+- The status of either Besu or the consensus layer client.
+
+[Monitoring](../../how-to/monitor/index.md) your validator carefully for uptime, execution speed, and a valid consensus layer connection will help you explore attestation performance for your node.
+
+## References
+
+- [Upgrading Ethereum](https://eth2book.info/bellatrix/part2/incentives/rewards/)
+- [Understanding Attestation Misses](https://www.symphonious.net/2022/09/25/understanding-attestation-misses/)
+- [Block production in Ethereum after the Merge](https://notes.ethereum.org/DaWh-02HQ4qftum1xdphkg?view#Broadcast-attestation)
+- [Ethereum Consensus Specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/validator.md#attesting)
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/index.md b/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/index.md
new file mode 100644
index 00000000000..8fad0be6237
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/proof-of-stake/index.md
@@ -0,0 +1,47 @@
+---
+description: Ethereum proof of stake consensus
+tags:
+ - public networks
+---
+
+# Proof of stake consensus
+
+[The Merge](../the-merge.md) transitioned Ethereum Mainnet to [proof of stake
+(PoS)](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/) consensus.
+
+In Ethereum's PoS, you must run a [full node](../the-merge.md#execution-and-consensus-clients) and
+[stake 32 ETH](https://ethereum.org/en/staking/) to become a validator.
+
+:::note
+You must run a beacon node and an execution client to operate a full node on Mainnet.
+To become a validator, you must also run a validator client (either [in the same process as the
+beacon node](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process)
+or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately)).
+:::
+
+PoS is preferred over proof of work and proof of authority as a consensus mechanism because it is
+more secure, requires less energy, and lowers the barrier to entry.
+
+The PoS mechanism randomly chooses validators to propose or validate blocks on the [Beacon
+Chain](https://ethereum.org/en/upgrades/beacon-chain/) in defined time frames.
+
+Proposers are responsible for proposing new consensus blocks, and non-proposing validators are
+responsible for validating (attesting to) proposed blocks.
+Validators earn [rewards](https://www.blocknative.com/ethereum-staking-calculator) for proposing and
+attesting to consensus blocks eventually included in the Beacon Chain, and penalized for malicious behavior.
+[Attestations](./attestations.md) make up the bulk of validator rewards (~85%).
+Validators also receive transaction fees for included blocks.
+
+Each consensus block contains an execution payload, which contains a list of transactions and other data required to execute and validate the payload.
+
+When a node validates a consensus block, its [consensus client](../the-merge.md#consensus-clients) processes the block and sends the execution payload to the [execution client](../the-merge.md#execution-clients), which:
+
+1. Assembles a block on the execution layer.
+2. Verifies pre-conditions.
+3. Executes transactions.
+4. Verifies post-conditions.
+5. Sends the validity result back to the consensus client.
+
+If the block is valid, the execution client includes it in the execution chain and stores the new state in execution state storage.
+
+If a consensus block receives attestations backed by enough staked ETH, the block is included in the Beacon Chain.
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/the-merge.md b/versioned_docs/version-24.5.0/public-networks/concepts/the-merge.md
new file mode 100644
index 00000000000..a84e7f428ae
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/the-merge.md
@@ -0,0 +1,85 @@
+---
+title: The Merge
+sidebar_position: 1
+description: Learn about The Merge, and execution and consensus clients.
+tags:
+ - public networks
+---
+
+# The Merge
+
+:::info
+
+The Merge was executed on **September 15, 2022**.
+
+:::
+
+[The Merge](https://ethereum.org/en/upgrades/merge/) was an Ethereum upgrade that merged the
+[Beacon Chain] into Ethereum Mainnet, turning Mainnet into a combination of an [execution layer and
+consensus layer](#execution-and-consensus-clients).
+The Merge transitioned Mainnet from proof of work to [proof of stake consensus](proof-of-stake/index.md).
+
+You can run Besu as an execution client with:
+
+- [Any consensus client on Mainnet](../get-started/connect/mainnet.md).
+- [Any consensus client on a testnet](../get-started/connect/testnet.md).
+- [Teku on Mainnet](../tutorials/besu-teku-mainnet.md).
+- [Teku on a testnet](../tutorials/besu-teku-testnet.md).
+
+## Execution and consensus clients
+
+After The Merge, a full Ethereum Mainnet node is a combination of an execution client (previously
+called an [Ethereum 1.0](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and
+a consensus client (previously called an [Ethereum
+2.0](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client).
+
+Execution and consensus clients communicate with each other using the [Engine API](../how-to/use-engine-api.md).
+
+![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients.png)
+
+### Execution clients
+
+Execution clients, such as Besu, manage the execution layer, including executing transactions and
+updating the world state.
+Execution clients serve [JSON-RPC API](../reference/engine-api/index.md) requests and communicate
+with each other in a peer-to-peer network.
+
+### Consensus clients
+
+Consensus clients, such as [Teku], contain beacon node and validator client implementations.
+The beacon node is the primary link to the [Beacon Chain] (consensus layer).
+The validator client performs [validator duties](proof-of-stake/index.md) on the consensus layer.
+Consensus clients serve [REST API](https://docs.teku.consensys.net/reference/rest) requests and
+communicate with each other in a peer-to-peer network.
+
+## What happened during The Merge
+
+Before The Merge, the execution and consensus clients' configurations were updated to listen for a
+certain total terminal difficulty (TTD) to be reached.
+
+:::info
+The TTD is a specific value for the total difficulty, which is the sum of the proof-of-work mining
+difficulty for all blocks up to some point in the blockchain.
+:::
+
+The consensus layer enabled the Merge configuration (Bellatrix) before reaching the TTD.
+Once the execution layer blocks reached the TTD, the Beacon Chain merged into Ethereum Mainnet, and
+Ethereum transitioned to a proof of stake network.
+
+:::tip
+After The Merge, a Mainnet node operator must run both an execution client and a beacon node at the
+same time.
+To become a validator, you must also run a validator client (either [in the same process as the
+beacon node](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process)
+or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately).
+:::
+
+After The Merge, validators earn [rewards](https://www.blocknative.com/ethereum-staking-calculator)
+for performing [validator duties](proof-of-stake/index.md), and [fee
+recipients](https://docs.teku.consensys.net/reference/cli#validators-proposer-default-fee-recipient)
+also earn rewards for the inclusion of execution layer transactions.
+
+
+
+[Beacon Chain]: https://ethereum.org/en/upgrades/beacon-chain/
+[Teku]: https://docs.teku.consensys.net/en/stable/
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/transactions/_category_.json b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/_category_.json
new file mode 100644
index 00000000000..e82ef121922
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Transactions",
+ "position": 4
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/transactions/pool.md b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/pool.md
new file mode 100644
index 00000000000..ceb1d126ce8
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/pool.md
@@ -0,0 +1,93 @@
+---
+title: Transaction pool
+sidebar_position: 2
+description: Transaction pool overview
+tags:
+ - public networks
+ - private networks
+---
+
+# Transaction pool
+
+All nodes maintain a transaction pool to store pending transactions before processing.
+
+Options and methods for configuring and monitoring the transaction pool include:
+
+- [`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions) API method to
+ list transactions in the transaction pool.
+- [`--tx-pool`](../../reference/cli/options.md#tx-pool) option to specify the type of transaction
+ pool to use.
+- [`--tx-pool-layer-max-capacity`](../../reference/cli/options.md#tx-pool-layer-max-capacity) option
+ to specify the maximum memory capacity of the transaction pool.
+- [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump) option to specify the
+ price bump percentage to replace an existing transaction.
+- [`--tx-pool-priority-senders`](../../reference/cli/options.md#tx-pool-priority-senders)
+ option to specify sender addresses to prioritize in the transaction pool.
+- [`newPendingTransactions`](../../how-to/use-besu-api/rpc-pubsub.md#pending-transactions) and
+ [`droppedPendingTransactions`](../../how-to/use-besu-api/rpc-pubsub.md#dropped-transactions) RPC
+ subscriptions to notify you of transactions added to and dropped from the transaction pool.
+
+:::note
+When submitting [private transactions](../../../private-networks/concepts/privacy/private-transactions/index.md#nonce-validation),
+the [privacy marker transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md)
+is submitted to the transaction pool, not the private transaction itself.
+:::
+
+## Layered transaction pool
+
+The [layered transaction pool](https://github.com/hyperledger/besu/pull/5290) is the default
+transaction pool implementation.
+This implementation separates the pool into layers according to value and executability of the transactions.
+That is, the first layer keeps only transactions with the highest value and that could feasibly go
+into the next produced block.
+The two other layers ensure that Besu always has a backlog of transactions to fill blocks, gaining
+the maximum amount of fees.
+
+With the layered transaction pool, Besu produces more profitable blocks more quickly, with more
+denial-of-service protection, and using less CPU than with the legacy transaction pool.
+
+If you previously configured transaction pool behavior, upgrade to the layered transaction pool by:
+
+- Removing the [`--tx-pool-retention-hours`](../../reference/cli/options.md#tx-pool-retention-hours)
+ option, which is not applicable because old transactions will expire when the memory cache is full.
+- Replacing the [`--tx-pool-limit-by-account-percentage`](../../reference/cli/options.md#tx-pool-limit-by-account-percentage)
+ option with [`--tx-pool-max-future-by-sender`](../../reference/cli/options.md#tx-pool-max-future-by-sender)
+ to limit the number of sequential transactions, instead of percentage of transactions, from a single
+ sender kept in the pool.
+- Removing the [`--tx-pool-max-size`](../../reference/cli/options.md#tx-pool-max-size) option,
+ which is not applicable because the layered pool is limited by memory size instead of the number
+ of transactions.
+ To configure the maximum memory capacity, use [`--tx-pool-layer-max-capacity`](../../reference/cli/options.md#tx-pool-layer-max-capacity).
+
+You can opt out of the layered transaction pool implementation by setting the
+[`--tx-pool`](../../reference/cli/options.md#tx-pool) option to `sequenced`.
+
+## Dropping transactions when the transaction pool is full
+
+When the transaction pool is full, it accepts and retains local transactions in preference to remote transactions. If the transaction pool is full of local transactions, Besu drops the oldest local transactions first. That is, a full transaction pool continues to accept new local transactions by first dropping remote transactions and then by dropping the oldest local transactions.
+
+## Replacing transactions with the same sender and nonce
+
+### In networks with a base fee and priced gas
+
+You can replace a pending transaction with a transaction that has the same sender and nonce but a higher gas price.
+
+If sending a [legacy transaction](types.md#frontier-transactions), the old transaction is replaced if the new transaction has a gas price higher than the existing gas price by the percentage specified by [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump).
+
+If sending an [`EIP1559` transaction](types.md#eip1559-transactions), the old transaction is replaced if one of the following is true:
+
+- The new transaction's effective gas price is higher than the existing gas price by the percentage specified by [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump) AND the new effective priority fee is greater than or equal to the existing priority fee.
+
+- The new transaction's effective gas price is the equal to the existing gas price AND the new effective priority fee is higher than the existing priority fee by the percentage specified by [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump).
+
+The default value for [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump) is 10%.
+
+### In networks with zero base base or free gas
+
+To enable replacing transactions in the transaction pool for zero base fee networks,
+or free gas networks:
+
+* If you set [`zeroBaseFee`](../../reference/genesis-items.md) to `true` in the genesis file,
+ the transaction pool price bump is set to `0`. Specifying a value for transaction pool price bump using [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump)
+ will cause an error.
+* If the [minimum gas price is zero](../../../private-networks/how-to/configure/free-gas.md), the transaction pool price bump is set to `0`, unless you specify a different value using [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump).
\ No newline at end of file
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/transactions/types.md b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/types.md
new file mode 100644
index 00000000000..892968f8b56
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/types.md
@@ -0,0 +1,73 @@
+---
+title: Transaction types
+sidebar_position: 1
+description: Description of the different transaction types
+tags:
+ - public networks
+ - private networks
+---
+
+# Transaction types
+
+You can interact with the Hyperledger Besu JSON-RPC API using different transaction types (specified by the `transactionType` parameter).
+
+The following API objects use a unique format for each `transactionType`:
+
+- [Pending transaction object](../../reference/api/objects.md#pending-transaction-object)
+- [Transaction object](../../reference/api/objects.md#transaction-object)
+- [Transaction call object](../../reference/api/objects.md#transaction-call-object)
+- [Transaction receipt object](../../reference/api/objects.md#transaction-receipt-object)
+
+## `FRONTIER` transactions
+
+Transactions with type `FRONTIER` are _legacy transactions_ that use the transaction format existing before typed transactions were introduced in [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718). They contain the parameters `chainId`, `nonce`, `gasPrice`, `gasLimit`, `to`, `value`, `data`, `v`, `r`, and `s`. Legacy transactions don't use [access lists](#access_list-transactions) or incorporate [EIP-1559 fee market changes](#eip1559-transactions).
+
+## `ACCESS_LIST` transactions
+
+Transactions with type `ACCESS_LIST` are transactions introduced in [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930). They contain, along with the [legacy parameters](#frontier-transactions), an `accessList` parameter, which specifies an array of addresses and storage keys that the transaction plans to access (an _access list_). `ACCESS_LIST` transactions must specify an access list, and they don't incorporate [EIP-1559 fee market changes](#eip1559-transactions).
+
+Use the [`eth_createAccessList`](../../reference/api/index.md#eth_createaccesslist) API to simulate a transaction which returns the addresses and storage keys that may be used to send the real transaction, and the approximate gas cost.
+
+## `EIP1559` transactions
+
+Transactions with type `EIP1559` are transactions introduced in [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md). EIP-1559 addresses the network congestion and overpricing of transaction fees caused by the historical fee market, in which users send transactions specifying a gas price bid using the `gasPrice` parameter, and miners choose transactions with the highest bids.
+
+`EIP1559` transactions don't specify `gasPrice`, and instead use an in-protocol, dynamically changing _base fee_ per gas. At each block, the base fee per gas is adjusted to address network congestion as measured by a gas target.
+
+`EIP1559` transactions contain, along with the [`accessList`](#access_list-transactions) parameter and [legacy parameters](#frontier-transactions) except for `gasPrice`, a `maxPriorityFeePerGas` parameter, which specifies the maximum fee the sender is willing to pay per gas above the base fee (the maximum _priority fee_ per gas), and a `maxFeePerGas` parameter, which specifies the maximum total fee (base fee + priority fee) the sender is willing to pay per gas.
+
+An `EIP1559` transaction always pays the base fee of the block it's included in, and it pays a priority fee as priced by `maxPriorityFeePerGas` or, if the base fee per gas + `maxPriorityFeePerGas` exceeds `maxFeePerGas`, it pays a priority fee as priced by `maxFeePerGas` minus the base fee per gas. The base fee is burned, and the priority fee is paid to the miner that included the transaction. A transaction's priority fee per gas incentivizes miners to include the transaction over other transactions with lower priority fees per gas.
+
+`EIP1559` transactions must specify both `maxPriorityFeePerGas` and `maxFeePerGas`. They must not specify `gasPrice`.
+
+## `BLOB` transactions
+
+Shard blob transactions introduced in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) enable scaling the
+Ethereum network by allowing large amounts of data (blobs) to be included that cannot be directly accessed or
+processed by the Ethereum Virtual Machine (EVM).
+
+When the network includes a blob-carrying transaction in a block, the transaction doesn't actually contain
+the blob data itself. Instead, it contains a commitment to this data. The EVM can verify this commitment to
+ensure the data's availability and integrity without directly accessing the data.
+
+:::info
+
+A commitment is a type of cryptographic proof that securely and verifiably confirms the existence and integrity
+of large data blobs.
+
+:::
+
+This mechanism significantly reduces the computational and storage burden on the Ethereum network while ensuring
+that the data is available for those who need it (for example, rollups or other layer 2 solutions that rely on data
+availability for their security and operation).
+
+Blobs are temporarily stored by consensus clients such as Teku, and blocks on the execution layer permanently store
+the the reference to the blob.
+
+### View blob transaction costs
+
+Use the [`eth_blobBaseFee`](../../reference/api/index.md#eth_blobbasefee) method to view the current base
+fee per blob gas in wei.
+
+You can also use [`eth_feeHistory`](../../reference/api/index.md#eth_feehistory) to view the historical
+blob transaction cost details.
\ No newline at end of file
diff --git a/versioned_docs/version-24.5.0/public-networks/concepts/transactions/validation.md b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/validation.md
new file mode 100644
index 00000000000..39368ee1927
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/concepts/transactions/validation.md
@@ -0,0 +1,30 @@
+---
+title: Transaction validation
+sidebar_position: 3
+description: What transaction validation and when
+tags:
+ - public networks
+ - private networks
+---
+
+# Transaction validation
+
+For transactions submitted and added to a block, Besu validates the transactions, as illustrated in the following diagram.
+
+![Transaction Validation](../../../assets/images/transaction-validation.png)
+
+Besu repeats the set of transaction pool validations after propagating the transaction. Besu repeats the same set of validations when importing the block that includes the transaction, except the nonce must be exactly right when importing the block.
+
+:::tip
+
+Private transactions are not added to the transaction pool. The privacy marker transaction is submitted to the transaction pool but the private transaction itself is directly distributed to the transaction participants.
+
+:::
+
+When adding the transaction to a block, Besu performs an additional validation to check that the transaction gas limit is less than the remaining block gas limit. After creating a block, the node imports the block and then repeats the transaction pool validations.
+
+:::info
+
+The transaction is only added if the entire transaction gas limit is less than the remaining gas for the block. The total gas used by the transaction is not relevant to this validation. That is, if the total gas used by the transaction is less than the remaining block gas, but the transaction gas limit is more than the remaining block gas, the transaction is not added.
+
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/_category_.json b/versioned_docs/version-24.5.0/public-networks/get-started/_category_.json
new file mode 100644
index 00000000000..25ee51d48e5
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "Get started",
+ "position": 2,
+ "collapsed": false,
+ "link": {
+ "type": "generated-index",
+ "slug": "/public-networks/get-started"
+ }
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/connect/_category_.json b/versioned_docs/version-24.5.0/public-networks/get-started/connect/_category_.json
new file mode 100644
index 00000000000..f326ba7b151
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/connect/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Connect to a network",
+ "position": 4
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/connect/index.md b/versioned_docs/version-24.5.0/public-networks/get-started/connect/index.md
new file mode 100644
index 00000000000..0ce16f25aba
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/connect/index.md
@@ -0,0 +1,11 @@
+---
+title: Connect to a network overview
+tags:
+ - public networks
+hide:
+ - feedback
+---
+
+# Connect to a network
+
+This section provides information on connecting Besu to a public Ethereum network.
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/connect/mainnet.md b/versioned_docs/version-24.5.0/public-networks/get-started/connect/mainnet.md
new file mode 100644
index 00000000000..83c91c1ec30
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/connect/mainnet.md
@@ -0,0 +1,147 @@
+---
+title: Connect to Mainnet
+sidebar_position: 2
+description: How to connect to Mainnet
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Connect to Mainnet
+
+:::info
+
+[The Merge](../../concepts/the-merge.md) was executed on **September 15, 2022**. Ethereum is now a [proof of stake](../../concepts/proof-of-stake/index.md) network, and a full Ethereum node requires both [an execution client and a consensus client](../../concepts/the-merge.md#execution-and-consensus-clients).
+
+:::
+
+Run Besu as an [execution client](../../concepts/the-merge.md#execution-clients) with any consensus client on Ethereum Mainnet.
+
+If you're using [Teku] as a consensus client, you can follow the [Besu and Teku Mainnet tutorial](../../tutorials/besu-teku-mainnet.md).
+
+## Prerequisites
+
+- [Besu installed](../install/binary-distribution.md).
+- A consensus client installed. For example, [Teku](https://docs.teku.consensys.net/en/latest/).
+
+## Steps
+
+### 1. Generate the shared secret
+
+Run the following command:
+
+```bash
+openssl rand -hex 32 | tr -d "\n" > jwtsecret.hex
+```
+
+You will specify `jwtsecret.hex` when starting Besu and the consensus client. This is a shared JWT secret the clients use to authenticate each other when using the [Engine API](../../how-to/use-engine-api.md).
+
+### 2. Generate validator keys
+
+If you're running the consensus client as a beacon node only, skip to the [next step](#3-start-besu).
+
+If you're also running the consensus client as a validator client, have a funded Ethereum address ready (32 ETH and gas fees for each validator).
+
+Generate validator keys for one or more validators using the [Staking Launchpad](https://launchpad.ethereum.org/en/).
+
+:::info
+
+Save the password you use to generate each key pair in a `.txt` file. You should also have a `.json` file for each validator key pair.
+
+:::
+
+### 3. Start Besu
+
+Run the following command or specify the options in a [configuration file](../../how-to/use-configuration-file/index.md):
+
+```bash
+besu \
+ --rpc-http-enabled=true \
+ --rpc-http-host=0.0.0.0 \
+ --rpc-ws-enabled=true \
+ --rpc-ws-host=0.0.0.0 \
+ --host-allowlist=,127.0.0.1,localhost \
+ --engine-host-allowlist=,127.0.0.1,localhost \
+ --engine-rpc-enabled \
+ --engine-jwt-secret=
+```
+
+Specify:
+
+- The path to the `jwtsecret.hex` file generated in [step 1](#1-generate-the-shared-secret) using the [`--engine-jwt-secret`](../../reference/cli/options.md#engine-jwt-secret) option.
+- The IP address of your Besu node using the [`--host-allowlist`](../../reference/cli/options.md#host-allowlist) and [`--engine-host-allowlist`](../../reference/cli/options.md#engine-host-allowlist) options.
+
+Also, in the command:
+
+- [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) enables the HTTP JSON-RPC service.
+- [`--rpc-http-host`](../../reference/cli/options.md#rpc-http-host) is set to `0.0.0.0` to allow remote RPC connections.
+- [`--rpc-ws-enabled`](../../reference/cli/options.md#rpc-ws-enabled) enables the WebSocket JSON-RPC service.
+- [`--rpc-ws-host`](../../reference/cli/options.md#rpc-ws-host) is set to `0.0.0.0` to allow remote RPC connections.
+- [`--engine-rpc-enabled`](../../reference/cli/options.md#engine-rpc-enabled) enables the [Engine API](../../reference/engine-api/index.md).
+
+You can modify the option values and add other [command line options](../../reference/cli/options.md) as needed.
+
+### 4. Start the consensus client
+
+Refer to your consensus client documentation to configure and start the consensus client.
+
+:::info
+
+If you're running a validator client, make sure you set a fee recipient address.
+
+:::
+
+If you're using Teku, follow the [Besu and Teku Mainnet tutorial](../../tutorials/besu-teku-mainnet.md#5-start-teku).
+
+### 5. Wait for the clients to sync
+
+After starting Besu and the consensus client, your node starts syncing and connecting to peers.
+
+
+
+
+
+```bash
+{"@timestamp":"2023-02-03T04:43:49,555","level":"INFO","thread":"main","class":"DefaultSynchronizer","message":"Starting synchronizer.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,556","level":"INFO","thread":"main","class":"SnapSyncDownloader","message":"Starting sync","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,559","level":"INFO","thread":"main","class":"Runner","message":"Ethereum main loop is up.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:53,106","level":"INFO","thread":"Timer-0","class":"DNSResolver","message":"Resolved 2409 nodes","throwable":""}
+{"@timestamp":"2023-02-03T04:45:04,803","level":"INFO","thread":"nioEventLoopGroup-3-10","class":"SnapWorldStateDownloader","message":"Downloading world state from peers for pivot block 16545859 (0x616ae3c4cf85f95a9bce2814a7282d75dc2eac36
+cb9f0fcc6f16386df70da3c5). State root 0xa7114541f42c62a72c8b6bb9901c2ccf4b424cd7f76570a67b82a183b02f25dc pending requests 0","throwable":""}
+{"@timestamp":"2023-02-03T04:46:04,834","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.08%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:48:01,840","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.23%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:49:09,931","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.41%, Peer count: 11","throwable":""}
+{"@timestamp":"2023-02-03T04:50:12,466","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.61%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:20,977","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.75%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:28,985","level":"INFO","thread":"EthScheduler-Services-29 (importBlock)","class":"ImportBlocksStep","message":"Block import progress: 180400 of 16545859 (1%)","throwable":""}
+```
+
+
+
+
+
+```bash
+2022-03-21 20:43:24.355 INFO - Syncing *** Target slot: 76092, Head slot: 2680, Remaining slots: 73412, Connected peers: 8
+2022-03-21 20:43:36.363 INFO - Syncing *** Target slot: 76093, Head slot: 2879, Remaining slots: 73214, Connected peers: 10
+2022-03-21 20:43:48.327 INFO - Syncing *** Target slot: 76094, Head slot: 3080, Remaining slots: 73014, Connected peers: 8
+2022-03-21 20:44:00.339 INFO - Syncing *** Target slot: 76095, Head slot: 3317, Remaining slots: 72778, Connected peers: 6
+2022-03-21 20:44:12.353 INFO - Syncing *** Target slot: 76096, Head slot: 3519, Remaining slots: 72577, Connected peers: 9
+```
+
+
+
+
+
+If you're running the consensus client as a beacon node only, you're all set. If you're also running the consensus client as a validator client, ensure your clients are fully synced before submitting your staking deposit in the next step. Syncing Besu can take several days.
+
+### 6. Stake ETH
+
+Stake your ETH for one or more validators using the [Staking Launchpad](https://launchpad.ethereum.org/en/).
+
+You can check your validator status by searching your Ethereum address on the [Beacon Chain explorer](https://beaconcha.in/). It may take up to multiple days for your validator to be activated and start proposing blocks.
+
+
+
+[Teku]: https://docs.teku.consensys.net/en/stable/
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/connect/sync-node.md b/versioned_docs/version-24.5.0/public-networks/get-started/connect/sync-node.md
new file mode 100644
index 00000000000..4f9ac2f87c3
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/connect/sync-node.md
@@ -0,0 +1,161 @@
+---
+title: Sync Besu
+sidebar_position: 1
+description: Full and archive node types
+tags:
+ - public networks
+---
+
+# Sync Besu
+
+Besu supports two node types, commonly referred to as [full nodes](#run-a-full-node) and [archive nodes](#run-an-archive-node).
+
+Full nodes have the current state of the blockchain. They can't serve the network with all data requests (for example, the balance of an account at an old block). Full nodes can guarantee the latest state for the blockchain (and some older states, but not all). You can check current balances, sign and send transactions, and look at current dapp data.
+
+Archive nodes also store the intermediary state of every account and contract for every block since the genesis block. Archive nodes can do everything full nodes do, and they can access historical state data. Archive nodes require more disk space than full nodes.
+
+Besu must connect with other peers to sync with the network. If your node is having trouble peering, try [troubleshooting peering](../../how-to/troubleshoot/peering.md).
+
+## Sync times
+
+To sync with a public network, Besu runs two processes in parallel: the world state sync and the blockchain download.
+While the world state syncs, Besu downloads and imports the blockchain in the background. The blockchain download time depends on CPU, the network, Besu's peers, and disk speed. The blockchain download generally takes longer than the world state sync.
+Besu must catch up to the current chain head and sync the world state to participate on Mainnet.
+
+The following table shows the average world state sync time, and blockchain download time, for each sync mode on Mainnet. All times are hardware dependent; this table is based on running AWS instances m6gd.2xlarge. Each sync mode also has its own world state database size.
+
+| Sync mode | Time to sync world state | Time to download blockchain | Disk usage |
+| ---------- | ------------------------ |----------------------------|---------------|
+| Snap | ~6 hours | ~1.5 days | Average disk |
+| Checkpoint | ~5 hours | ~13 hours | Smallest disk |
+| Fast | ~1.5 days | ~1.5 days | Average disk |
+| Full | ~weeks | ~weeks | Largest disk |
+
+:::note
+
+- As of late 2023, an average Mainnet snap sync consumes around 1000 GB using Bonsai Tries. Read more about [storage requirements](../../concepts/data-storage-formats.md#storage-requirements) across data storage formats and sync modes.
+
+- Testnets take significantly less time and space to sync.
+
+:::
+
+## Storage
+
+You can store the world state using [Forest of Tries](../../concepts/data-storage-formats.md#forest-of-tries) or [Bonsai Tries](../../concepts/data-storage-formats.md#bonsai-tries). We recommend using Bonsai Tries for the lowest storage requirements.
+
+## Run a full node
+
+You can run a full node using [snap synchronization (snap sync)](#snap-synchronization), [checkpoint synchronization (checkpoint sync)](#checkpoint-synchronization), or [fast synchronization (fast sync)](#fast-synchronization).
+
+:::note Sync nodes for BFT
+
+Snap sync and checkpoint sync are not supported for [QBFT](../../../private-networks/how-to/configure/consensus/qbft.md) or [IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md) networks.
+
+:::
+
+### Snap synchronization
+
+:::tip
+
+We recommend using snap sync over fast sync because snap sync can be faster by several days.
+
+We recommend using snap sync with the [Bonsai](../../concepts/data-storage-formats.md#bonsai-tries) data storage format for the fastest sync and lowest storage requirements.
+
+:::
+
+Enable snap sync using [`--sync-mode=SNAP`](../../reference/cli/options.md#sync-mode). You need Besu version 22.4.0 or later to use snap sync.
+
+Instead of downloading the [state trie](../../concepts/data-storage-formats.md) node by node, snap sync downloads as many leaves of the trie as possible, and reconstructs the trie locally.
+
+You can't switch from fast sync to snap sync. If your node is blocked in the middle of a fast sync, you can start over using snap sync instead by stopping the node, deleting the data directory, and starting over using `--sync-mode=SNAP`.
+
+You can restart Besu during a snap sync in case of hardware or software problems. The sync resumes from the last valid world state and continues to download blocks starting from the last downloaded block.
+
+See [how to read the Besu metrics charts](../../how-to/monitor/understand-metrics.md) when using snap sync.
+
+### Checkpoint synchronization
+
+Enable checkpoint sync using [`--sync-mode=CHECKPOINT`](../../reference/cli/options.md#sync-mode). You need Besu version 22.4.3 or later to use checkpoint sync.
+
+Checkpoint sync behaves like [snap sync](#snap-synchronization), but instead of syncing from the genesis block, it syncs from a specific checkpoint block configured in the [Besu genesis file](../../concepts/genesis-file.md).
+
+Ethereum Mainnet and the Goerli testnet configurations already define default checkpoints, so you don't have to add this yourself.
+
+For other networks, you can configure a checkpoint in the genesis file by specifying the block hash, number, and total difficulty as in the following example.
+
+```json title="Checkpoint configuration example"
+"checkpoint": {
+ "hash": "0x844d581cb00058d19f0584fb582fa2de208876ee56bbae27446a679baf4633f4",
+ "number": 14700000,
+ "totalDifficulty": "0xA2539264C62BF98CFC6"
+}
+```
+
+:::note
+
+If using [Clique](../../../private-networks/how-to/configure/consensus/clique.md) consensus, the checkpoint must be the beginning of an epoch.
+
+:::
+
+If you enable checkpoint sync without a checkpoint configuration in the genesis file, Besu snap syncs from the genesis block.
+
+You can restart Besu during a checkpoint sync in case of hardware or software problems. The sync resumes from the last valid world state and continues to download blocks starting from the last downloaded block.
+
+### Fast synchronization
+
+:::caution
+
+It might become impossible to sync Ethereum Mainnet using fast sync in the future. If you sync for the first time or ever need to re-sync, update Besu to a version that supports newer sync methods.
+
+:::
+
+Enable fast sync using [`--sync-mode=FAST`](../../reference/cli/options.md#sync-mode).
+
+Fast sync downloads the block headers and transaction receipts, and verifies the chain of block headers from the genesis block.
+
+When starting fast sync, Besu first downloads the world state for a recent block verified by its peers (referred to as a pivot block), and then begins fast sync from the genesis block.
+
+Fast sync is the default for named networks specified using the [`--network`](../../reference/cli/options.md#network) option, except for the `dev` development network. It's also the default if connecting to Ethereum Mainnet by not specifying the [`--network`](../../reference/cli/options.md#network) or [`--genesis-file`](../../reference/cli/options.md#genesis-file) options.
+
+Using fast sync with [private transactions](../../../private-networks/concepts/privacy/index.md) isn't supported.
+
+You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world_state_*` [metrics](../../how-to/monitor/metrics.md#metrics-list) to monitor fast sync.
+
+:::note
+
+When fast syncing, block numbers increase until close to the head block, then the process pauses while the world state download completes. This may take a significant amount of time depending on world state size, during which the current head block doesn't increase. For example, Mainnet may take several days or more to fast sync. Fast sync time may increase because Besu picks new pivot blocks, or because peers prune the world state before it completes downloading.
+
+:::
+
+:::caution RocksDB error on AWS
+
+When running Besu on some cloud providers, a known [RocksDB](https://github.com/facebook/rocksdb/issues/6435) issue causes fast sync to fail occasionally. The following error is displayed repeatedly:
+
+```
+EthScheduler-Services-1 (importBlock) | ERROR | PipelineChainDownloader | Chain download failed. Restarting after short delay.
+java.util.concurrent.CompletionException: org.hyperledger.besu.plugin.services.exception.StorageException: org.rocksdb.RocksDBException: block checksum mismatch:
+```
+
+The failure has been seen on AWS and Digital Ocean. On AWS, A full restart of the VM is required to restart the fast sync. Fast sync isn't [currently supported on Digital Ocean](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#143).
+
+:::
+
+:::caution Pending state nodes stays constant
+
+When fast syncing, the pending state nodes count is the number of nodes yet to be downloaded, and it should change constantly. Pending state nodes trend to 0 during fast sync and then goes to 0.
+
+If the number stays constant, this could mean your node isn't syncing against any peers.
+
+In the following example, the pivot block is 0 and the pending state nodes value is constant. This means the node isn't syncing against any peers. The fact that state nodes have been downloaded means at some stage it was syncing.
+
+![Fast synchronization](../../../assets/images/fastsync.png)
+
+The easiest solution in this scenario is to restart fast sync to obtain a new pivot block.
+
+:::
+
+## Run an archive node
+
+To run an archive node, enable full synchronization (full sync) using [`--sync-mode=FULL`](../../reference/cli/options.md#sync-mode).
+
+Full sync starts from the genesis block and reprocesses all transactions.
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/connect/testnet.md b/versioned_docs/version-24.5.0/public-networks/get-started/connect/testnet.md
new file mode 100644
index 00000000000..92e567cbbe3
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/connect/testnet.md
@@ -0,0 +1,183 @@
+---
+title: Connect to a testnet
+sidebar_position: 3
+Description: How to connect to a testnet
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Connect to a testnet
+
+Run Besu as an [execution client](../../concepts/the-merge.md#execution-clients) with any consensus client on the [Goerli](https://github.com/eth-clients/goerli) and [Sepolia](https://github.com/eth-clients/sepolia) testnets.
+
+If you're using [Teku](https://docs.teku.consensys.net/en/latest/) as a consensus client, you can follow the [Besu and Teku testnet tutorial](../../tutorials/besu-teku-testnet.md).
+
+:::note
+
+Sepolia is a permissioned network and you can't run a validator client on it without [requesting to become a validator](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg) first. You can connect your consensus client using the beacon node only, without any validator duties.
+
+:::
+
+## Prerequisites
+
+- [Besu installed](../install/binary-distribution.md).
+- A consensus client installed. For example, [Teku](https://docs.teku.consensys.net/en/latest/).
+
+## Steps
+
+### 1. Generate the shared secret
+
+Run the following command:
+
+```bash
+openssl rand -hex 32 | tr -d "\n" > jwtsecret.hex
+```
+
+You will specify `jwtsecret.hex` when starting Besu and the consensus client. This is a shared JWT secret the clients use to authenticate each other when using the [Engine API](../../how-to/use-engine-api.md).
+
+### 2. Generate validator keys
+
+If you're running the consensus client as a beacon node only, skip to the [next step](#3-start-besu).
+
+If you're also running the consensus client as a validator client, create a test Ethereum address (you can do this in [MetaMask](https://metamask.zendesk.com/hc/en-us/articles/360015289452-How-to-create-an-additional-account-in-your-wallet)). Fund this address with testnet ETH (32 ETH and gas fees for each validator) using a faucet. See the list of [Goerli faucets](https://github.com/eth-clients/goerli#meta-data-g%C3%B6rli) and [Sepolia faucets](https://github.com/eth-clients/sepolia#meta-data-sepolia).
+
+:::note
+
+If you can't get ETH using the faucet, you can ask for help on the [EthStaker Discord](https://discord.io/ethstaker).
+
+:::
+
+Generate validator keys for one or more validators using the [Goerli Staking Launchpad](https://goerli.launchpad.ethereum.org/) (or [request to become validator on Sepolia](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg)).
+
+:::info
+
+Save the password you use to generate each key pair in a `.txt` file. You should also have a `.json` file for each validator key pair.
+
+:::
+
+### 3. Start Besu
+
+Run the following command or specify the options in a [configuration file](../../how-to/use-configuration-file/index.md):
+
+
+
+
+
+```bash
+besu \
+ --network=goerli \
+ --rpc-http-enabled=true \
+ --rpc-http-host=0.0.0.0 \
+ --rpc-http-cors-origins="*" \
+ --rpc-ws-enabled=true \
+ --rpc-ws-host=0.0.0.0 \
+ --host-allowlist="*" \
+ --engine-host-allowlist="*" \
+ --engine-rpc-enabled \
+ --engine-jwt-secret=
+```
+
+
+
+
+
+```bash
+besu \
+ --network=holesky \
+ --rpc-http-enabled=true \
+ --rpc-http-host=0.0.0.0 \
+ --rpc-http-cors-origins="*" \
+ --rpc-ws-enabled=true \
+ --rpc-ws-host=0.0.0.0 \
+ --host-allowlist="*" \
+ --engine-host-allowlist="*" \
+ --engine-rpc-enabled \
+ --engine-jwt-secret=
+```
+
+
+
+
+
+```bash
+besu \
+ --network=sepolia \
+ --rpc-http-enabled=true \
+ --rpc-http-host=0.0.0.0 \
+ --rpc-http-cors-origins="*" \
+ --rpc-ws-enabled=true \
+ --rpc-ws-host=0.0.0.0 \
+ --host-allowlist="*" \
+ --engine-host-allowlist="*" \
+ --engine-rpc-enabled \
+ --engine-jwt-secret=
+```
+
+
+
+
+
+Specify the path to the `jwtsecret.hex` file generated in [step 1](#1-generate-the-shared-secret) using the [`--engine-jwt-secret`](../../reference/cli/options.md#engine-jwt-secret) option.
+
+You can modify the option values and add other [command line options](../../reference/cli/options.md) as needed.
+
+### 4. Start the consensus client
+
+Refer to your consensus client documentation to configure and start the consensus client.
+
+:::info
+
+If you're running a validator client, make sure you set a fee recipient address.
+
+:::
+
+If you're using Teku, follow the [Besu and Teku testnet tutorial](../../tutorials/besu-teku-testnet.md#5-start-teku).
+
+### 5. Wait for the clients to sync
+
+After starting Besu and the consensus client, your node starts syncing and connecting to peers.
+
+
+
+
+
+```bash
+{"@timestamp":"2023-02-03T04:43:49,555","level":"INFO","thread":"main","class":"DefaultSynchronizer","message":"Starting synchronizer.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,556","level":"INFO","thread":"main","class":"FastSyncDownloader","message":"Starting sync","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,559","level":"INFO","thread":"main","class":"Runner","message":"Ethereum main loop is up.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:53,106","level":"INFO","thread":"Timer-0","class":"DNSResolver","message":"Resolved 2409 nodes","throwable":""}
+{"@timestamp":"2023-02-03T04:45:04,803","level":"INFO","thread":"nioEventLoopGroup-3-10","class":"SnapWorldStateDownloader","message":"Downloading world state from peers for pivot block 16545859 (0x616ae3c4cf85f95a9bce2814a7282d75dc2eac36
+cb9f0fcc6f16386df70da3c5). State root 0xa7114541f42c62a72c8b6bb9901c2ccf4b424cd7f76570a67b82a183b02f25dc pending requests 0","throwable":""}
+{"@timestamp":"2023-02-03T04:46:04,834","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.08%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:48:01,840","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.23%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:49:09,931","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.41%, Peer count: 11","throwable":""}
+{"@timestamp":"2023-02-03T04:50:12,466","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.61%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:20,977","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.75%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:28,985","level":"INFO","thread":"EthScheduler-Services-29 (importBlock)","class":"FastImportBlocksStep","message":"Block import progress: 180400 of 16545859 (1%)","throwable":""}
+```
+
+
+
+
+```bash
+2022-03-21 20:43:24.355 INFO - Syncing *** Target slot: 76092, Head slot: 2680, Remaining slots: 73412, Connected peers: 8
+2022-03-21 20:43:36.363 INFO - Syncing *** Target slot: 76093, Head slot: 2879, Remaining slots: 73214, Connected peers: 10
+2022-03-21 20:43:48.327 INFO - Syncing *** Target slot: 76094, Head slot: 3080, Remaining slots: 73014, Connected peers: 8
+2022-03-21 20:44:00.339 INFO - Syncing *** Target slot: 76095, Head slot: 3317, Remaining slots: 72778, Connected peers: 6
+2022-03-21 20:44:12.353 INFO - Syncing *** Target slot: 76096, Head slot: 3519, Remaining slots: 72577, Connected peers: 9
+```
+
+
+
+
+
+If you're running the consensus client as a beacon node only, you're all set. If you're also running the consensus client as a validator client, ensure your clients are fully synced before submitting your staking deposit in the next step. This can take several days.
+
+### 6. Stake ETH
+
+Stake your testnet ETH for one or more validators using the [Goerli Staking Launchpad](https://goerli.launchpad.ethereum.org/).
+
+You can check your validator status by searching your Ethereum address on the [Goerli Beacon Chain explorer](https://goerli.beaconcha.in/). It may take up to multiple days for your validator to be activated and start proposing blocks.
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/install/_category_.json b/versioned_docs/version-24.5.0/public-networks/get-started/install/_category_.json
new file mode 100644
index 00000000000..043580c1474
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/install/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Install Besu",
+ "position": 2
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/install/binary-distribution.md b/versioned_docs/version-24.5.0/public-networks/get-started/install/binary-distribution.md
new file mode 100644
index 00000000000..838d67e64d9
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/install/binary-distribution.md
@@ -0,0 +1,91 @@
+---
+title: Install binary distribution
+sidebar_position: 2
+description: Install or upgrade Hyperledger Besu from binary distribution
+tags:
+ - public networks
+---
+
+# Install binary distribution
+
+## MacOS with Homebrew
+
+### Prerequisites
+
+- [Homebrew](https://brew.sh/)
+- Java JDK
+
+:::caution
+
+Hyperledger Besu supports:
+
+- MacOS High Sierra 10.13 or later versions.
+- Java 17+. You can install Java using `brew install openjdk`. Alternatively, you can manually install the [Java JDK](https://www.oracle.com/java/technologies/downloads).
+
+:::
+
+### Install (or upgrade) using Homebrew
+
+To install Besu using Homebrew:
+
+```bash
+brew tap hyperledger/besu
+brew install hyperledger/besu/besu
+```
+
+To upgrade an existing Besu installation using Homebrew:
+
+```bash
+brew upgrade hyperledger/besu/besu
+```
+
+:::note notes
+
+- If you upgraded your MacOS version between installing and upgrading Besu, when running `brew upgrade hyperledger/besu/besu` you
+ might be prompted to reinstall command line tools with `xcode-select --install`.
+
+- When upgrading Besu, you might be prompted to fix the remote branch names in Homebrew by using the command `brew tap --repair`.
+
+:::
+
+To display the Besu version and confirm installation:
+
+```bash
+besu --version
+```
+
+To display Besu command line help:
+
+```bash
+besu --help
+```
+
+## Linux / Unix
+
+### Prerequisites
+
+- [Java JDK 17+](https://www.oracle.com/java/technologies/downloads/)
+
+:::note Linux open file limit
+
+If synchronizing to Mainnet on Linux or other chains with large data requirements, increase the maximum number of open files allowed using `ulimit`. If the open files limit is not high enough, a `Too many open files` RocksDB exception occurs.
+
+:::
+
+:::tip
+
+We recommend installing [jemalloc](https://jemalloc.net/) to reduce memory usage. If using Ubuntu, you can install it with the command: `apt install libjemalloc-dev`.
+
+:::
+
+### Install from packaged binaries
+
+Download the Besu [packaged binaries](https://github.com/hyperledger/besu/releases).
+
+Unpack the downloaded files and change into the `besu-` directory.
+
+Display Besu command line help to confirm installation:
+
+```bash
+bin/besu --help
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/install/index.md b/versioned_docs/version-24.5.0/public-networks/get-started/install/index.md
new file mode 100644
index 00000000000..c4717c1fe65
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/install/index.md
@@ -0,0 +1,23 @@
+---
+title: Installation options
+description: Options for getting started with Hyperledger Besu
+tags:
+ - public networks
+---
+
+# Installation options
+
+- [Docker image](run-docker-image.md)
+- [Binaries](binary-distribution.md)
+
+## Build from source
+
+If you want to use the latest development version of Hyperledger Besu or a specific commit, build from source. Otherwise, use the [binary] or [Docker image] for more stable versions.
+
+View the [Hyperledger Wiki] for instructions to install Hyperledger Besu from source.
+
+
+
+[Hyperledger Wiki]: https://wiki.hyperledger.org/display/BESU/Building+from+source
+[binary]: binary-distribution.md
+[Docker image]: run-docker-image.md
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/install/run-docker-image.md b/versioned_docs/version-24.5.0/public-networks/get-started/install/run-docker-image.md
new file mode 100644
index 00000000000..a2561f40c08
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/install/run-docker-image.md
@@ -0,0 +1,143 @@
+---
+title: Run Besu from Docker image
+sidebar_position: 1
+description: Run Hyperledger Besu using the official docker image
+tags:
+ - public networks
+---
+
+# Run Besu from a Docker image
+
+Hyperledger Besu provides a Docker image to run a Besu node in a Docker container.
+
+Use this Docker image to run a single Besu node without installing Besu.
+
+## Prerequisites
+
+- [Docker](https://docs.docker.com/install/)
+
+- MacOS or Linux
+
+ :::info
+
+ The Docker image doesn't run on Windows.
+
+ :::
+
+## Default node for Mainnet
+
+To run a Besu node in a container connected to the Ethereum Mainnet:
+
+```bash
+docker run hyperledger/besu:latest
+```
+
+:::note
+
+https://hub.docker.com/r/hyperledger/besu/tags lists the available tags for the image.
+
+If you previously pulled `latest`, Docker runs the cached version.
+
+To ensure your image is up to date, pull the `latest` version again using `docker pull hyperledger/besu:latest`.
+
+:::
+
+## Expose ports
+
+Expose ports for P2P discovery, GraphQL, metrics, and HTTP and WebSocket JSON-RPC. You need to expose the ports to use the default ports or the ports specified using [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port), [`--p2p-port`](../../reference/cli/options.md#p2p-port), [`--rpc-ws-port`](../../reference/cli/options.md#rpc-ws-port), [`--metrics-port`](../../reference/cli/options.md#metrics-port), [`--graphql-http-port`](../../reference/cli/options.md#graphql-http-port), and [`--metrics-push-port`](../../reference/cli/options.md#metrics-push-port) options.
+
+To run Besu exposing local ports for access:
+
+```bash
+docker run -p :8545 -p :8546 -p :30303 hyperledger/besu:latest --rpc-http-enabled --rpc-ws-enabled
+```
+
+:::note
+
+The examples on this page expose TCP ports only. To expose UDP ports, specify `/udp` at the end of the argument for the `-p` Docker subcommand option:
+
+```bash
+docker run -p :/udp
+```
+
+See the [`docker run -p` documentation](https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose).
+
+:::
+
+To enable JSON-RPC HTTP calls to `127.0.0.1:8545` and P2P discovery on `127.0.0.1:13001`:
+
+```bash
+docker run -p 8545:8545 -p 13001:30303 hyperledger/besu:latest --rpc-http-enabled
+```
+
+## Start Besu
+
+:::danger
+
+Don't mount a volume at the default data path (`/opt/besu`). Mounting a volume at the default data path interferes with the operation of Besu and prevents Besu from safely launching.
+
+To run a node that maintains the node state (key and database), [`--data-path`](../../reference/cli/options.md#data-path) must be set to a location other than `/opt/besu` and a storage volume mounted at that location.
+
+When running in a Docker container, [`--nat-method`](../../how-to/connect/specify-nat.md) must be set to `DOCKER` or `AUTO` (default). Don't set [`--nat-method`](../../how-to/connect/specify-nat.md) to `NONE` or `UPNP`.
+
+:::
+
+You can specify [Besu environment variables](../../reference/cli/options.md#specify-options) with the Docker image instead of the command line options.
+
+```bash title="Example"
+docker run -p 30303:30303 -p 8545:8545 -e BESU_RPC_HTTP_ENABLED=true -e BESU_NETWORK=goerli hyperledger/besu:latest
+```
+
+:::caution Unsupported address type exception
+
+When running Besu from a Docker image, you might get the following exception:
+
+```bash
+Unsupported address type exception when connecting to peer {}, this is likely due to ipv6 not being enabled at runtime.
+```
+
+This happens when the IPv6 support in Docker is disabled while connecting to an IPv6 peer, preventing outbound communication. IPv6 is disabled by default in Docker.
+
+[Enable IPv6 support in Docker](https://docs.docker.com/config/daemon/ipv6/) to allow outbound IPv6 traffic and allow connection with IPv6 peers.
+
+:::
+
+### Run a node for testing
+
+To run a node that mines blocks at a rate suitable for testing purposes with WebSocket enabled:
+
+```bash
+docker run -p 8546:8546 --mount type=bind,source=/,target=/var/lib/besu hyperledger/besu:latest --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-ws-enabled --network=dev --data-path=/var/lib/besu
+```
+
+### Run a node on Goerli testnet
+
+To run a node on Goerli:
+
+```bash
+docker run -p 30303:30303 --mount type=bind,source=/,target=/var/lib/besu hyperledger/besu:latest --network=goerli --data-path=/var/lib/besu
+```
+
+### Run a node on Ethereum Mainnet
+
+To run a node on Ethereum Mainnet with the HTTP JSON-RPC service enabled:
+
+```bash
+docker run -p 8545:8545 --mount type=bind,source=/,target=/var/lib/besu -p 30303:30303 hyperledger/besu:latest --rpc-http-enabled --data-path=/var/lib/besu
+```
+
+## Stop Besu and clean up resources
+
+When done running nodes, you can shut down the node container without deleting resources or you can delete the container after stopping it. Run `docker container ls` and `docker volume ls` to get the container and volume names.
+
+To stop a container:
+
+```bash
+docker stop
+```
+
+To delete a container:
+
+```bash
+docker rm
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/migrate-to-besu.md b/versioned_docs/version-24.5.0/public-networks/get-started/migrate-to-besu.md
new file mode 100644
index 00000000000..2693411ced0
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/migrate-to-besu.md
@@ -0,0 +1,15 @@
+---
+description: Migrate to Besu from a different Ethereum execution client.
+tags:
+ - public networks
+---
+
+# Migrate to Besu
+
+Migrate from a different Ethereum [execution client](../concepts/the-merge.md#execution-clients) to Besu to contribute to [client diversity](https://clientdiversity.org/).
+
+To migrate from a different client, [configure Besu as an execution client](connect/mainnet.md#2-start-besu) and connect your [consensus client](../concepts/the-merge.md#consensus-clients) to Besu instead of your original execution client.
+
+To minimize downtime while [Besu syncs](connect/sync-node.md) and avoid downtime penalties, you can sync Besu with a new consensus layer instance. Once Besu has fully synced you can connect it to your existing consensus client.
+
+Find guides to switch from specific clients on the [client diversity website](https://clientdiversity.org/#switch).
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/start-node.md b/versioned_docs/version-24.5.0/public-networks/get-started/start-node.md
new file mode 100644
index 00000000000..1e18d347ee8
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/start-node.md
@@ -0,0 +1,163 @@
+---
+title: Start Besu
+sidebar_position: 3
+description: Start Besu on a public Ethereum network.
+tags:
+ - public networks
+---
+
+# Start Besu
+
+Nodes can connect to Ethereum Mainnet and public testnets.
+
+Use the [`besu`](../reference/cli/options.md) command with the required command line options to start a node.
+
+## Prerequisites
+
+[Besu installed](install/binary-distribution.md)
+
+## Local block data
+
+When connecting to a network other than the network previously connected to, you must either delete the local block data or use the [`--data-path`](../reference/cli/options.md#data-path) option to specify a different data directory.
+
+To delete the local block data, delete the `database` directory in the `besu/build/distribution/besu-` directory.
+
+## Genesis configuration
+
+Besu specifies the genesis configuration, and sets the network ID and bootnodes when connecting to [Goerli](#run-a-node-on-goerli-testnet), [Sepolia](#run-a-node-on-sepolia-testnet), and [Mainnet](#run-a-node-on-ethereum-mainnet).
+
+:::info
+
+The Ropsten, Rinkeby, and Kiln testnets are deprecated.
+
+:::
+
+When you specify [`--network=dev`](../reference/cli/options.md#network), Besu uses the development mode genesis configuration with a fixed low difficulty. A node started with [`--network=dev`](../reference/cli/options.md#network) has an empty bootnodes list by default.
+
+The genesis files defining the genesis configurations are in the [Besu source files](https://github.com/hyperledger/besu/tree/master/config/src/main/resources).
+
+To define a genesis configuration, create a genesis file (for example, `genesis.json`) and specify the file using the [`--genesis-file`](../reference/cli/options.md#genesis-file) option.
+
+## Syncing and storage
+
+By default, Besu syncs to the current state of the blockchain using [fast sync](connect/sync-node.md#fast-synchronization) in:
+
+- Networks specified using [`--network`](../reference/cli/options.md#network) except for the `dev` development network.
+- Ethereum Mainnet.
+
+We recommend using [snap sync](connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu with [`--sync-mode=SNAP`](../reference/cli/options.md#sync-mode).
+
+By default, Besu stores data in the [Forest of Tries](../concepts/data-storage-formats.md#forest-of-tries) format. We recommend using [Bonsai Tries](../concepts/data-storage-formats.md#bonsai-tries) for lower storage requirements, by starting Besu with [`--data-storage-format=BONSAI`](../reference/cli/options.md#data-storage-format).
+
+## Run a node for testing
+
+To run a node that mines blocks at a rate suitable for testing purposes:
+
+```bash
+besu --network=dev --miner-enabled --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --host-allowlist="*" --rpc-ws-enabled --rpc-http-enabled --data-path=/tmp/tmpDatdir
+```
+
+You can also use the following [configuration file](../how-to/use-configuration-file/index.md) on the command line to start a node with the same options as above:
+
+```toml
+network="dev"
+miner-enabled=true
+miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
+rpc-http-cors-origins=["all"]
+host-allowlist=["*"]
+rpc-ws-enabled=true
+rpc-http-enabled=true
+data-path="/tmp/tmpdata-path"
+```
+
+:::danger Warning
+
+The following settings are a security risk in production environments:
+
+- Enabling the HTTP JSON-RPC service ([`--rpc-http-enabled`](../reference/cli/options.md#rpc-http-enabled)) and setting [`--rpc-http-host`](../reference/cli/options.md#rpc-http-host) to 0.0.0.0 exposes the RPC connection on your node to any remote connection.
+- Setting [`--host-allowlist`](../reference/cli/options.md#host-allowlist) to `"*"` allows JSON-RPC API access from any host.
+- Setting [`--rpc-http-cors-origins`](../reference/cli/options.md#rpc-http-cors-origins) to `"all"` or `"*"` allows cross-origin resource sharing (CORS) access from any domain.
+
+:::
+
+## Run a node on Goerli testnet
+
+To run a node on [Goerli](https://github.com/goerli/testnet) specifying a data directory:
+
+```bash
+besu --network=goerli --data-path=/
+```
+
+Where `` and `` are the path and directory to save the Goerli chain data to.
+
+See the [guide on connecting to a testnet](connect/testnet.md) for more information.
+
+## Run a node on Holesky testnet
+
+To run a node on [Holesky](https://github.com/eth-clients/holesky) specifying a data directory:
+
+```bash
+besu --network=holesky --data-path=/
+```
+
+Where `` and `` are the path and directory to save the Holesky chain data to.
+
+See the [guide on connecting to a testnet](connect/testnet.md) for more information.
+
+## Run a node on Sepolia testnet
+
+To run a node on [Sepolia](https://github.com/goerli/sepolia) specifying a data directory:
+
+```bash
+besu --network=sepolia --data-path=/
+```
+
+Where `` and `` are the path and directory to save the Sepolia chain data to.
+
+See the [guide on connecting to a testnet](connect/testnet.md) for more information.
+
+## Run a node on Ethereum Mainnet
+
+To run a node on the Ethereum Mainnet:
+
+```bash
+besu
+```
+
+To run a node on Mainnet with the HTTP JSON-RPC service enabled and available for localhost only:
+
+```bash
+besu --rpc-http-enabled
+```
+
+See the [guide on connecting to Mainnet](connect/mainnet.md) for more information.
+
+## Confirm node is running
+
+If you started Besu with the [`--rpc-http-enabled`](../reference/cli/options.md#rpc-http-enabled) option, use [cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../reference/api/index.md) to confirm the node is running.
+
+- `eth_chainId` returns the chain ID of the network.
+
+ ```bash
+ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' localhost:8545
+ ```
+
+- `eth_syncing` returns the starting, current, and highest block.
+
+ ```bash
+ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' localhost:8545
+ ```
+
+ For example, after connecting to Mainnet, `eth_syncing` will return something similar to:
+
+ ```json
+ {
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "startingBlock": "0x0",
+ "currentBlock": "0x2d0",
+ "highestBlock": "0x66c0"
+ }
+ }
+ ```
diff --git a/versioned_docs/version-24.5.0/public-networks/get-started/system-requirements.md b/versioned_docs/version-24.5.0/public-networks/get-started/system-requirements.md
new file mode 100644
index 00000000000..29f72f16398
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/get-started/system-requirements.md
@@ -0,0 +1,153 @@
+---
+title: System requirements
+sidebar_position: 1
+description: Ensure you meet the system requirements to sync and run Besu.
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# System requirements
+
+Determine public network system requirements by checking CPU and disk space requirements using [Prometheus](../how-to/monitor/metrics.md). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu.
+
+:::tip
+
+CPU requirements are highest when syncing to the network and typically reduce after the node is synchronized to the chain head.
+
+:::
+
+## Java distribution and installation
+
+Besu requires an installation of Java 17+ to run.
+We currently recommend two Java distributions, [OpenJDK 21](https://jdk.java.net/21/) and
+[OpenJ9](https://www.eclipse.org/openj9/), though you can experiment based on your needs.
+
+OpenJDK is the default for many Java users and is balanced in performance and garbage collection.
+OpenJ9 consumes less memory and system resources, but can have worse performance on some setups.
+
+If you have more than 32GB RAM (for Besu and your [consensus client](../concepts/the-merge.md)), use OpenJDK.
+If you have less RAM:
+
+* If you're on Linux (or Unix-based) and your CPU is x86-64 bit architecture (like Intel), use OpenJ9.
+* If you're on ARM-64 CPU architecture (Mac M-series, Raspberry Pi), use OpenJDK.
+
+If you have OpenJDK installed or need a fresh installation of OpenJ9, you can pick up the OpenJ9
+docker image, or install the OpenJ9 JDK using the following steps:
+
+1. Get the [binaries](https://github.com/ibmruntimes/semeru17-binaries/releases) corresponding to
+ your OS architecture.
+ For example:
+
+ ```bash
+ wget https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.5%2B8_openj9-0.35.0/ibm-semeru-open-jdk_x64_linux_17.0.5_8_openj9-0.35.0.tar.gz
+ ```
+2. Uncompress the binaries:
+
+
+
+
+ ```bash
+ tar -xvf YOUR_J9_IMAGE.tar.gz
+ ```
+
+
+
+
+ ```bash
+ tar -xvf ibm-semeru-open-jdk_x64_linux_17.0.5_8_openj9-0.35.0.tar.gz
+ ```
+
+
+
+
+3. Move the binaries to `bin` directory:
+
+
+
+
+ ```bash
+ sudo cp -r YOUR_IMAGE/ /usr/bin/
+ ```
+
+
+
+
+ ```bash
+ sudo cp -r jdk-17.0.5+8/ /usr/bin/
+ ```
+
+
+
+
+4. Specify OpenJ9 for Java on your machine:
+
+
+
+
+ ```bash
+ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/YOUR_IMAGE" 1
+ sudo update-alternatives --config java (and choose OpenJ9)
+ ```
+
+
+
+
+ ```bash
+ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/jdk-17.0.5+8/bin/java"
+ ```
+
+
+
+
+ Change your `JAVA_HOME` to OpenJ9 (if using the JDK implementation), where `jdk-install-dir` is
+ the installation location you specified:
+
+
+
+
+ ```bash
+ export JAVA_HOME=jdk-install-dir`
+ ```
+
+
+
+
+ ```bash
+ export JAVA_HOME=/usr/bin/jdk-17.0.5+8
+ ```
+
+
+
+
+## Java Virtual Machine size
+
+For Mainnet and testnets, the minimum [Java Virtual Machine (JVM) memory requirement is 8 GB](../how-to/configure-java/manage-memory.md).
+
+JVM memory requirements are highest when syncing, but will reduce after the node is synchronized to the chain head. Monitor your system to determine your actual JVM memory needs.
+
+## Disk space
+
+[Fast synchronization](../reference/cli/options.md#sync-mode) with [pruning](../concepts/data-storage-formats.md) enabled requires approximately 750 GB of disk space. [Full synchronization](../reference/cli/options.md#sync-mode) requires approximately 3 TB.
+
+## Disk type
+
+Use [local SSD storage](https://cloud.google.com/compute/docs/disks) for high throughput nodes (validators and RPC nodes). Read-only nodes can use a lower performance setup.
+
+You can use local SSDs through [SCSI interfaces](https://en.wikipedia.org/wiki/SCSI). For higher performance in production settings, we recommend upgrading to [NVMe interfaces](https://cloud.google.com/compute/docs/disks/local-ssd#performance).
+
+## AWS requirements
+
+We are running 22.4.2 Mainnet nodes using `m6gd.2xlarge` boxes.
+
+We synchronized the 22.4.2 Mainnet nodes using `m6gd.2xlarge` boxes.
+
+Using a larger box while synchronizing speeds up the sync process by giving it more resources. When the sync is completed, the box size can be reduced.
+
+:::caution
+
+If you are using a more recent release than 22.4.2, resource requirements may have increased.
+
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/_category_.json
new file mode 100644
index 00000000000..6a19126f23e
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "How to",
+ "position": 3,
+ "link": {
+ "type": "generated-index",
+ "slug": "public-networks/how-to"
+ }
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/bonsai-limit-trie-logs.md b/versioned_docs/version-24.5.0/public-networks/how-to/bonsai-limit-trie-logs.md
new file mode 100644
index 00000000000..5d0f0de3031
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/bonsai-limit-trie-logs.md
@@ -0,0 +1,208 @@
+---
+title: Reduce storage for Bonsai Tries
+sidebar_position: 12
+description: Enable this feature to reduce the size of your database when using Bonsai Tries
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+To decrease the database size when using the [Bonsai Trie](../concepts/data-storage-formats#bonsai-tries) data storage format, enable the early access feature `--Xbonsai-limit-trie-logs-enabled`.
+When enabled, this feature can reduce database growth by more than 3 GB each week on Mainnet.
+
+## Limit and prune trie logs
+
+:::caution
+
+The following commands are examples. Before executing these example commands on your node, modify them to apply to your node's configuration.
+
+:::
+
+1. Add the `--Xbonsai-limit-trie-logs-enabled` option to the [Besu configuration file](use-configuration-file).
+
+ :::note
+
+ If you are using a `systemd` service file, as recommended by [CoinCashew](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet/part-i-installation/step-3-installing-execution-client/besu)
+ and [Somer Esat](https://someresat.medium.com/guide-to-staking-on-ethereum-ubuntu-teku-f09ecd9ef2ee), ensure you execute `sudo systemctl daemon-reload`.
+
+ :::
+
+1. Stop Besu.
+1. (Optional) Run the Besu trie log prune command. Specify the Bonsai Trie data storage format and the data directory for your Besu database:
+ ```bash
+ sudo /usr/local/bin/besu/bin/besu --data-storage-format=BONSAI --data-path=/var/lib/besu --sync-mode=X_SNAP storage x-trie-log prune
+ ```
+1. Start Besu.
+1. Look for `Limit trie logs enabled: retention: 512; prune window: 30000` in your Besu configuration printout at startup.
+
+### Prune outdated trie logs
+
+When you start Besu with `--Xbonsai-limit-trie-logs-enabled`, it continuously prunes the unnecessary trie log data, removing it one block at a time.
+This process begins after an initial reduction in the database size during startup.
+
+Enabling `--Xbonsai-limit-trie-logs-enabled` on a long-running node does not immediately clear your backlog of trie logs in the same way resyncing does.
+Instead of resyncing, you can run an offline command to immediately prune old trie logs.
+To run the offline command, you must shut down Besu for a minimal period.
+If the `--Xbonsai-limit-trie-logs-enabled` option is enabled, you do not need to run the offline command again after initially running it.
+
+For minimal downtime, we recommend running the offline command before restarting Besu with `--Xbonsai-limit-trie-logs-enabled`.
+
+If you are following the guides by [Somer Esat](https://someresat.medium.com/guide-to-staking-on-ethereum-ubuntu-teku-f09ecd9ef2ee) or [CoinCashew](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet/part-i-installation/step-3-installing-execution-client/besu), you have set the following options in your `besu.service` or `execution.service` systemd file:
+
+```
+...
+ExecStart=/usr/local/bin/besu/bin/besu \
+...
+ --sync-mode=SNAP \
+ --data-path="/var/lib/besu" \
+ --data-storage-format=BONSAI \
+...
+```
+To prune trie logs, the command should look similar to the following:
+
+```
+sudo /usr/local/bin/besu/bin/besu --data-storage-format=BONSAI --data-path=/var/lib/besu --sync-mode=SNAP storage x-trie-log prune
+```
+
+The logs should look similar to the following:
+
+```
+2024-02-02 05:45:41.162+00:00 | main | INFO | KeyPairUtil | Attempting to load public key from /data/besu/key
+ ...
+2024-02-02 05:45:43.433+00:00 | main | INFO | TrieLogSubCommand | Estimating trie logs size before pruning...
+2024-02-02 05:45:43.837+00:00 | main | INFO | TrieLogSubCommand | Estimated trie logs size before pruning: 9 GiB
+2024-02-02 05:46:09.863+00:00 | main | INFO | TrieLogHelper | Starting pruning: retain 512 trie logs, processing in 1 batches...
+2024-02-02 05:46:09.918+00:00 | main | INFO | TrieLogHelper | Saving trie logs to retain in file /data/besu/database/trieLogsToRetain-1 (batch 1)...
+2024-02-02 05:46:09.926+00:00 | main | INFO | TrieLogHelper | Obtaining trielogs from db, this may take a few minutes...
+2024-02-02 05:46:10.100+00:00 | main | INFO | TrieLogHelper | Clear trie logs...
+2024-02-02 05:46:10.155+00:00 | main | INFO | TrieLogHelper | Restoring trie logs retained from batch 1...
+2024-02-02 05:46:10.222+00:00 | main | INFO | TrieLogHelper | Key(0): 0xcd50706da7f6f2db7f9d54f3589122760900d9ab2508c20a4ca40b496d930368
+...
+2024-02-02 05:46:10.336+00:00 | main | INFO | TrieLogHelper | Key(511): 0x238f9649b59616430ad7e43b8f3cf65bc97cac4aa54a3eddf3ad6ee666ce733e
+2024-02-02 05:46:10.441+00:00 | main | INFO | TrieLogHelper | Deleting files...
+2024-02-02 05:46:10.446+00:00 | main | INFO | TrieLogSubCommand | Finished pruning. Re-estimating trie logs size...
+2024-02-02 05:46:11.023+00:00 | main | INFO | TrieLogSubCommand | Estimated trie logs size after pruning: 0 B (0 B estimate is normal when using default settings)
+2024-02-02 05:46:11.023+00:00 | main | INFO | TrieLogSubCommand | Prune ran successfully. We estimate you freed up 9 GiB!
+Prune ran successfully. We estimate you freed up 9 GiB!
+```
+
+If you are using a TOML configuration file, you can run a command similar to the following:
+
+```bash
+sudo /usr/local/bin/besu/bin/besu --config-file=besu-config.toml storage x-trie-log prune
+```
+
+## Troubleshoot
+
+Troubleshoot common errors that can occur when using the trie log prune command to reduce your database size for Bonsai Tries.
+To minimize errors, ensure your command specifies the following:
+
+- [`--data-storage-format`](../reference/cli/options.md#data-storage-format)
+- [`--data-path`](../reference/cli/options.md#data-path)
+- [`--sync-mode`](../reference/cli/options.md#sync-mode)
+
+### Prune command for Mainnet
+
+The prune command should look similar to the following:
+
+```bash
+sudo /usr/local/bin/besu/bin/besu --data-path=/var/lib/besu --data-storage-format=BONSAI --sync-mode=SNAP storage x-trie-log prune
+```
+
+Ensure you stop Besu before running the command.
+
+### Subcommand not working
+
+`java.lang.IllegalArgumentException: Subcommand only works with data-storage-format=BONSAI`
+
+The `--data-storage-format=BONSAI` may be missing.
+To resolve, add the storage format.
+The command should look similar to the following:
+
+```bash
+sudo /usr/local/bin/besu/bin/besu --data-storage-format=BONSAI --data-path=/var/lib/besu --sync-mode=SNAP storage x-trie-log prune
+```
+
+### Column handle not found for segment `TRIE_BRANCH_STORAGE`
+
+`java.lang.RuntimeException: Column handle not found for segment TRIE_BRANCH_STORAGE`
+
+Ensure you specify `--data-path`.
+Your command should look similar to the following:
+
+```bash
+sudo /usr/local/bin/besu/bin/besu --data-path=/var/lib/besu --data-storage-format=BONSAI --sync-mode=SNAP storage x-trie-log prune
+```
+
+### Database not detected
+
+`java.lang.IllegalArgumentException: Trying to retain more trie logs than chain length (0), skipping pruning`
+
+Ensure you specify the correct `--data-path` for your node.
+Your command should look similar to the following:
+
+```bash
+sudo /usr/local/bin/besu/bin/besu --data-path=/var/lib/besu --data-storage-format=BONSAI --sync-mode=SNAP storage x-trie-log prune
+```
+
+### Cannot store generated private key
+
+`java.lang.IllegalArgumentException: Cannot store generated private key`
+
+Ensure you specify the correct `--data-path` for your node.
+Your command should look similar to the following:
+
+```bash
+sudo /usr/local/bin/besu/bin/besu --data-path=/var/lib/besu --data-storage-format=BONSAI --sync-mode=SNAP storage x-trie-log prune
+```
+
+### Valid keypair not provided
+
+`java.lang.IllegalArgumentException: Supplied file does not contain valid keyPair pair.`
+
+Check your file permissions and try running a `sudo` command to resolve the issue:
+
+```bash
+sudo /usr/local/bin/besu/bin/besu --data-storage-format=BONSAI --data-path=/var/lib/besu storage --sync-mode=SNAP x-trie-log prune
+```
+
+### Column handle not found for segment `WORLD_STATE`
+
+`java.lang.RuntimeException: Column handle not found for segment WORLD_STATE`
+
+Ensure you are using `--data-storage-format=BONSAI` instead of `--data-storage-format=FOREST` on an existing Bonsai database.
+
+### Resource temporarily unavailable
+
+`org.hyperledger.besu.plugin.services.exception.StorageException: org.rocksdb.RocksDBException: While lock file: /data/besu/database/LOCK: Resource temporarily unavailable`
+
+Check if Besu is already running.
+You must shut down the Besu client before running the subcommand.
+
+### Unable to change the sync mode
+
+`java.lang.IllegalStateException: Unable to change the sync mode when snap sync is incomplete, please restart with snap sync mode`
+
+Check that you have specified `--sync-mode`.
+The default is `--sync-mode=FAST`.
+Most Mainnet users use `X_SNAP` or `X_CHECKPOINT`.
+
+### Cannot run trie log prune
+
+`java.lang.RuntimeException: No finalized block present, can't safely run trie log prune`
+
+This message may appear if your node is relatively new or recently resynced.
+To resolve this error, ensure that your node is fully synced and correctly configured to recognize finalized blocks.
+
+### Block does not match stored chain data
+
+`org.hyperledger.besu.util.InvalidConfigurationException: Supplied genesis block does not match chain data stored in /data/besu.`
+
+Check if you are running the command for a network other than Mainnet.
+To specify a network, run a command that looks similar to the following:
+
+```bash
+`sudo /usr/local/bin/besu/bin/besu --network=holesky --sync-mode=SNAP --data-storage-format=BONSAI --data-path=/var/lib/besu storage x-trie-log prune`
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/_category_.json
new file mode 100644
index 00000000000..450cbdb623f
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Configure high availability",
+ "position": 7
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/index.md b/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/index.md
new file mode 100644
index 00000000000..0f642295f0a
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/index.md
@@ -0,0 +1,107 @@
+---
+description: Hyperledger Besu high availability
+tags:
+ - public networks
+ - private networks
+---
+
+# High availability of JSON-RPC and RPC Pub/Sub APIs
+
+To enable high availability to the [RPC Pub/Sub API over WebSocket](../use-besu-api/rpc-pubsub.md) or the [JSON-RPC API](../use-besu-api/json-rpc.md), run and synchronize more than one Hyperledger Besu node to the network. Use a load balancer to distribute requests across nodes in the cluster that are ready to receive requests.
+
+![Load Balancer](../../../assets/images/LoadBalancer.png)
+
+:::tip
+
+We don't recommend putting [bootnodes](../../../private-networks/how-to/configure/bootnodes.md) behind a load balancer.
+
+:::
+
+:::info
+
+We recommend using load balancers over WebSockets because WebSockets are persistent connections associated with specific nodes. If you use load balancers configured in sticky mode over HTTP instead, the connection sticks to the associated node even when the node is congested and there is a lower load node available. If you use load balancers not configured in sticky mode over HTTP, the connections may switch from node to node, so some JSON-RPC requests may not provide expected results (for example, [`admin` methods](../../reference/api/index.md#admin-methods), [`net_enode`](../../reference/api/index.md#net_enode), [`net_peerCount`](../../reference/api/index.md#net_peercount), and [`eth_syncing`](../../reference/api/index.md#eth_syncing)).
+
+:::
+
+## Determine when a node is ready
+
+Use the [readiness endpoint](../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) to determine when a node is ready.
+
+:::note
+
+The minimum number of peers and number of blocks from the best known block for determining if a node considered ready is deployment specific.
+
+:::
+
+## Transaction nonces
+
+Besu obtains the nonce for the next transaction using [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount). The nonce depends on the transactions in the [transaction pool](../../concepts/transactions/pool.md). If sending [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount) and [`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction) requests for a specific account to more than one node, the [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount) results might be incorrect.
+
+:::note
+
+If using [private transactions](../../../private-networks/concepts/privacy/private-transactions/index.md), retrieve the nonce using [`priv_getTransactionCount`](../../../private-networks/reference/api/index.md#priv_gettransactioncount) or [`priv_getEeaTransactionCount`](../../../private-networks/reference/api/index.md#priv_geteeatransactioncount) and send the private transactions using [`eea_sendRawTransaction`](../../../private-networks/reference/api/index.md#eea_sendrawtransaction).
+
+:::
+
+To get correct nonces when distributing requests across a cluster, either:
+
+- Track the next nonce outside of the Besu node (as MetaMask does).
+- Configure the load balancer in sticky mode to send requests from a specific account to a single node, unless that node is unavailable.
+
+## Subscriptions
+
+You can subscribe to events using:
+
+- [RPC Pub/Sub over WebSockets](../use-besu-api/rpc-pubsub.md).
+- [Filters over HTTP](../use-besu-api/access-logs.md).
+
+We recommend using [RPC Pub/Sub over WebSocket](../use-besu-api/rpc-pubsub.md) because WebSockets connections associate with a specific node and do not require using the load balancer in sticky mode.
+
+If using [filters over HTTP](../use-besu-api/access-logs.md), configure the load balancer in sticky mode to associate the subscription with a specific node.
+
+## Recover from dropped subscriptions
+
+Dropped subscriptions can occur because of:
+
+- A disconnected WebSockets connection
+- The removal of the node serving the subscription from the ready pool.
+
+If there is a dropped subscription, missed events might occur while reconnecting to a different node. To recover dropped messages, create another subscription and follow the process for that [subscription type](../use-besu-api/rpc-pubsub.md#subscribe):
+
+- [`newHeads`](#new-headers)
+- [`logs`](#logs)
+- [`newPendingTransactions`](#new-pending-transactions)
+- [`droppedPendingTransactions`](#dropped-pending-transactions)
+- [`syncing`](#syncing).
+
+### New headers
+
+To request information on blocks from the last block before the subscription dropped to the first block received from the new subscription, use [`eth_getBlockByNumber`](../../reference/api/index.md#eth_getblockbynumber).
+
+### Logs
+
+To request logs from the block number of the last log received before the subscription dropped to the current chain head, use [`eth_getLogs`](../../reference/api/index.md#eth_getlogs).
+
+### New pending transactions
+
+To request all pending transactions for the new node, use [`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions).
+
+:::note
+
+Nodes do not all store the same pending transactions.
+
+:::
+
+### Dropped pending transactions
+
+To request all pending transactions for the new node, use [`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions).
+
+:::note
+
+Nodes do not all store the same pending transactions.
+
+:::
+
+### Syncing
+
+The syncing state of each node is specific to that node. To retrieve the syncing state of the new node, use [`eth_syncing`](../../reference/api/index.md#eth_syncing).
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/sample-configuration.md b/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/sample-configuration.md
new file mode 100644
index 00000000000..b018ba2a75b
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-ha/sample-configuration.md
@@ -0,0 +1,99 @@
+---
+title: Sample load balancer configurations
+sidebar_position: 1
+description: Sample load balancers
+tags:
+ - public networks
+ - private networks
+---
+
+# Sample load balancer configurations
+
+## AWS
+
+For AWS, we recommend the Classic Load Balancer. The Classic Load Balancer is the easiest to configure and work with. Register the Hyperledger Besu instances to the load balancer and use the [liveness endpoint](../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) for health checks.
+
+For finer grain control, use the Application Load Balancer:
+
+- Configure one target group with n nodes.
+- Configure multiple listeners with one per port (for example, `30303`, `8545`) you are using and route to the target group.
+- Use the [liveness endpoint](../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) for health checks.
+- Register the Besu instances multiple times with different ports. This is like configuring microservices on Elastic Container Service (ECS) or Elastic Kubernetes Service (EKS).
+
+### HTTPS redirection
+
+With either AWS load balancer, you can add certificates using ACM (Amazon Certificate Manager), add them to the load balancers, and redirect all HTTP calls to HTTPS.
+
+## Elastic Kubernetes Service
+
+For Elastic Kubernetes Service (AWS Kubernetes service) use the same load balancer configuration as when running nodes in Kubernetes. Use labels to specify nodes for the load balanced group.
+
+## Manual configurations
+
+Where applicable, we strongly recommend using service discovery. That is, pair your load balancer configuration with something that dynamically detects new nodes and removed failed nodes.
+
+For Nginx, use multiple upstreams (one for each port). Pair each upstream with a separate server block.
+
+```conf title="Upstreams paired with server blocks"
+upstream discovery_tcp_30303 {
+ server 10.0.1.1:30303;
+ server 10.0.1.2:30303;
+}
+
+upstream rpc_tcp_8545 {
+ server 10.0.1.1:8545;
+ server 10.0.1.2:8545;
+}
+
+server {
+ listen 30303;
+ server_name some.host;
+ location / {
+ proxy_pass http://discovery_tcp_30303;
+ }
+}
+
+server {
+ listen 8545;
+ server_name some.host;
+ location / {
+ proxy_pass http://rpc_tcp_8545;
+ }
+}
+...
+```
+
+For HAProxy, create multiple backend and frontend sets.
+
+```text title="Multiple backend and frontend sets"
+frontend discovery-tcp-30303
+ bind *:30303
+ acl ...
+ ...
+ default_backend back-discovery-tcp-30303
+
+frontend rpc-tcp-8545
+ bind *:8545
+ acl ...
+ ...
+ default_backend back-rpc-tcp-8545
+
+backend back-discovery-tcp-30303
+ balance leastconn
+ server node-01 10.0.1.1:30303 weight 1 check
+ server node-02 10.0.1.2:30303 weight 1 check
+ option ...
+ timeout server 600s
+
+backend back-rpc-tcp-8545
+ balance leastconn
+ server node-01 10.0.1.1:8545 weight 1 check
+ server node-02 10.0.1.2:8545 weight 1 check
+ option ....
+ timeout server 600s
+...
+```
+
+### HTTPS redirection
+
+To add HTTPS capability, update the above server blocks to include the certificates and specific ciphers. If you require an HTTP to HTTPS redirection, add separate blocks to return a 301 code with the new URI.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/_category_.json
new file mode 100644
index 00000000000..1f0946ee65e
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Configure Java",
+ "position": 8
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/install-update-java.md b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/install-update-java.md
new file mode 100644
index 00000000000..3f9a7215529
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/install-update-java.md
@@ -0,0 +1,148 @@
+---
+sidebar_position: 1
+description: Install or update Java for use with Hyperledger Besu
+tags:
+ - public networks
+ - private networks
+---
+
+# Install and update Java
+
+There are many flavors of Java and the Java Virtual Machine (JVM) that work with Besu.
+They might impact performance, start time, and more.
+Consider the options carefully when installing Java on your host machine.
+Currently, [we recommend Java 21](../../get-started/system-requirements.md#java-distribution-and-installation).
+
+## Install Java
+
+Download the version of Java you would like to install.
+If you are running Besu outside a virtual environment, like Docker, you must have Java installed on
+the host machine.
+
+:::tip
+Download [OpenJDK 21](https://jdk.java.net/21/).
+:::
+
+You can find platform-specific installation instructions with the download.
+The following installation examples use OpenJDK.
+
+### Install Java on Ubuntu
+
+You can install OpenJDK on Ubuntu using the `apt-get` command.
+
+1. Ensure `apt` libraries are installed and up-to-date:
+
+ ```bash
+ sudo apt update && sudo apt upgrade -y
+ ```
+
+2. Confirm whether Java is already installed:
+
+ ```bash
+ java -version
+ ```
+
+ If a version is returned, and you would like to update, see how to [update Java on Ubuntu](#update-java-on-ubuntu).
+
+3. If no version is returned, use `apt` to install the preferred version.
+
+ ```bash
+ sudo apt-get install openjdk-21-jdk
+ ```
+
+4. Confirm the installation:
+
+ ```bash
+ java -version
+ ```
+
+5. You might need to update your environment to make Java visible to Besu.
+ Edit the `.bashrc` file in your home directory (or create it if needed) and add the following
+ lines to the end of the file:
+
+ ```text title=".bashrc"
+ export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
+ export PATH=$PATH:$JAVA_HOME/bin
+ ```
+
+6. Save your changes and source the file:
+
+ ```bash
+ source ~/.bashrc
+ ```
+
+7. Verify that you updated your environment:
+
+ ```bash
+ echo $JAVA_HOME
+ echo $PATH
+ ```
+
+ You should see the JDK versions output.
+
+### Install Java on MacOS
+
+You can install OpenJDK on MacOS using Homebrew.
+
+1. With `brew` installed, run:
+
+ ```bash
+ brew install openjdk@21
+ ```
+
+ You can target another version if you prefer.
+
+2. Confirm the installation:
+
+ ```bash
+ java -version
+ ```
+
+ The OpenJDK version you install should display.
+
+ If this command returns `command not found: java`, check your terminal logs.
+ Brew might prompt you to create a symlink or update your path variables within the logs in the
+ terminal output.
+ If so, run the prompts provided.
+
+## Update Java
+
+### Update Java on Ubuntu
+
+To update Java on Ubuntu, uninstall the current versions and follow the instructions to
+[install Java on Ubuntu](#install-java-on-ubuntu) with your target version.
+
+If you started with this guide, you can uninstall Java using the following command:
+
+```bash
+sudo apt-get purge openjdk-\*
+```
+
+### Update Java on MacOS
+
+You can update Java on MacOS using Homebrew.
+
+1. List your Homebrew packages:
+
+ ```bash
+ brew ls
+ ```
+
+2. To update the JDK version (for example, from 17 to 21), uninstall the old version and reinstall
+ the target version:
+
+ ```bash
+ brew uninstall openjdk@17
+ brew install openjdk@21
+ ```
+
+ :::note
+ If you installed a version of Java not using Homebrew, it is located at
+ `/Library/Java/JavaVirtualMachines` and can be safely deleted from that directory.
+ :::
+
+3. To update point versions of Java, run the `upgrade` command:
+
+ ```bash
+ brew upgrade openjdk
+ ```
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/java-flight-recorder.md b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/java-flight-recorder.md
new file mode 100644
index 00000000000..7916129cb04
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/java-flight-recorder.md
@@ -0,0 +1,36 @@
+---
+title: Use Java Flight Recorder
+sidebar_position: 4
+description: Using Java Flight Recorder with Hyperledger Besu
+tags:
+ - public networks
+ - private networks
+---
+
+# Use Java Flight Recorder
+
+[Java Flight Recorder (JFR)](https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm#JFRUH170) is a monitoring tool that collects information about the Java Virtual Machine (JVM) when Hyperledger Besu is running. Use the JFR as a tool to analyze Besu performance.
+
+## Enable Java Flight Recorder
+
+To enable JFR, set `BESU_OPTS` to the JFR tags as follows:
+
+```bash
+export BESU_OPTS=-XX:StartFlightRecording=disk=true,delay=15s,dumponexit=true,\
+filename=/tmp/recording.jfr,maxsize=1024m,maxage=1d,\
+settings=profile,path-to-gc-roots=true
+```
+
+:::tip
+
+When recording, cleanly exiting Besu results in better data. If not possible to cleanly exit, the file may be missing some information not flushed to disk.
+
+:::
+
+Inspect the file written to `/tmp/recording.jfr` with tools such as [Mission Control](https://docs.oracle.com/javacomponents/jmc-5-5/jmc-user-guide/intro.htm#JMCCI109).
+
+:::danger
+
+If providing the output file to [ConsenSys Quorum support](https://consensys.net/quorum/support/), be aware that while JFR files don't contain secrets such as private keys, some details about the user configuration can be inferred from the JFR output.
+
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/manage-memory.md b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/manage-memory.md
new file mode 100644
index 00000000000..cba1b64217b
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/manage-memory.md
@@ -0,0 +1,93 @@
+---
+title: Manage JVM memory
+sidebar_position: 3
+description: Besu memory management
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Manage JVM memory
+
+You can manage Java Virtual Machine (JVM) memory usage for Besu by modifying the maximum heap size.
+
+By default, the JVM uses 25% of system RAM. For example, if you have 16 GB RAM installed, the JVM uses 4 GB by default.
+
+On public networks, we recommend setting the maximum heap size to:
+
+- 3 GB on an 8 GB RAM system.
+- 5 GB on a 16 GB RAM system.
+- 8 GB on a system with at least 24 GB RAM.
+
+:::note
+
+Setting a higher maximum heap size speeds up the sync period but doesn't have much impact after sync. Thus, we recommend setting it to 8 GB only when you have available RAM.
+
+:::
+
+You can set the maximum heap size using the `BESU_OPTS` environment variable and the `-Xmx` option. The following examples set the maximum heap size to 8 GB:
+
+
+
+
+
+Set the variable for the whole shell before running Besu.
+
+```bash
+export BESU_OPTS=-Xmx8g
+```
+
+
+
+
+
+Set the variable only for the specific Besu command.
+
+```bash
+BESU_OPTS=-Xmx8g besu [Besu options]
+```
+
+# `.service` file example
+
+```bash
+[Service]
+...
+Environment="BESU_OPTS=-Xmx8g"
+ExecStart=besu [Besu options]
+...
+```
+
+
+
+
+
+## Manage the heap dump
+
+Heap dump file generation is disabled by default. To enable it, set the `-XX:+HeapDumpOnOutOfMemoryError` Java option.
+
+```bash
+BESU_OPTS="-XX:+HeapDumpOnOutOfMemoryError"
+```
+
+When heap dump file generation is enabled, and an out-of-memory error occurs, the heap dump file is saved in the Besu runtime directory by default.
+
+The heap dump file might be large and can saturate your drive. It can be up to the size of the allocated memory. For example, for 8 GB heap memory, the file can be up to 8 GB. Specify the directory where you want the dump to be saved using the `-XX:HeapDumpPath` Java option.
+
+```bash
+BESU_OPTS="-XX:HeapDumpPath=///"
+```
+
+## Default options
+
+To reduce Besu memory footprint, the following G1GC Java options are enabled by default:
+
+```bash
+-XX:G1ConcRefinementThreads=2
+-XX:G1HeapWastePercent=15
+-XX:MaxGCPauseMillis=100
+```
+
+To run Besu without the default G1GC options, use the `besu-untuned` start script.
\ No newline at end of file
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/pass-jvm-options.md b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/pass-jvm-options.md
new file mode 100644
index 00000000000..97c78bf6428
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/configure-java/pass-jvm-options.md
@@ -0,0 +1,21 @@
+---
+title: Pass JVM options
+sidebar_position: 2
+description: Passing Java virtual machine JVM options to Hyperledger Besu at runtime
+tags:
+ - public networks
+ - private networks
+---
+
+# Pass JVM options
+
+To perform tasks such as attaching a debugger or configuring the garbage collector, pass Java Virtual Machine (JVM) options to Hyperledger Besu.
+
+Besu passes the contents of the `BESU_OPTS` environment variable to the JVM. Set standard JVM options in the `BESU_OPTS` variable.
+
+For Bash-based executions, you can set the variable for only the scope of the program execution by setting it before starting Besu.
+
+```bash
+BESU_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 \
+besu --network=goerli
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/connect/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/connect/_category_.json
new file mode 100644
index 00000000000..cce59e7c3f8
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/connect/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Find and connect to peers",
+ "position": 5
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/connect/configure-ports.md b/versioned_docs/version-24.5.0/public-networks/how-to/connect/configure-ports.md
new file mode 100644
index 00000000000..b9802f3073e
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/connect/configure-ports.md
@@ -0,0 +1,54 @@
+---
+title: Configure ports
+sidebar_position: 2
+description: To enable communication you must expose Hyperledger Besu ports appropriately
+tags:
+ - public networks
+ - private networks
+---
+
+# Configure ports
+
+To enable communication you must expose Hyperledger Besu ports appropriately. The following shows an example port configuration for a Besu node on AWS.
+
+![Port Configuration](../../../assets/images/PortConfiguration.png)
+
+When running Besu from the [Docker image](../../get-started/install/run-docker-image.md), [expose ports](../../get-started/install/run-docker-image.md#exposing-ports).
+
+:::info
+
+If your nodes are running in AWS, ensure you have appropriate `SecurityGroups` to allow access to the required ports.
+
+:::
+
+:::tip
+
+Besu supports [UPnP](specify-nat.md) for home or small office environments where a wireless router or modem provides NAT isolation.
+
+:::
+
+## P2P networking
+
+To enable peer discovery, the P2P UDP port must be open for inbound connections. Specify the P2P port using the [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. The default is `30303`.
+
+We also recommend opening the P2P TCP port for inbound connections. This is not strictly required because Besu attempts to open outbound TCP connections. But if no nodes on the network are accepting inbound TCP connections, nodes cannot communicate.
+
+Combine the P2P port with the values for the [`--p2p-host`](../../reference/cli/options.md#p2p-host) and [`--p2p-interface`](../../reference/cli/options.md#p2p-interface) options when specifying the [P2P host](../../reference/cli/options.md#p2p-host) and [P2P network interface](../../reference/cli/options.md#p2p-interface).
+
+:::info
+
+By default, peer discovery listens on `0.0.0.0:30303` (all interfaces). If the device Besu is running on must bind to a specific network interface, specify the interface using the [`--p2p-interface`](../../reference/cli/options.md#p2p-interface) option.
+
+:::
+
+## JSON-RPC API
+
+To enable access to the [JSON-RPC API](../use-besu-api/json-rpc.md), open the HTTP JSON-RPC and WebSockets JSON-RPC ports to the intended users of the JSON-RPC API on TCP.
+
+Specify the HTTP and WebSockets JSON-RPC ports using the [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) and [`--rpc-ws-port`](../../reference/cli/options.md#rpc-ws-port) options. The defaults are `8545` and `8546`.
+
+## Metrics
+
+To enable [Prometheus to access Besu](../monitor/metrics.md), open the metrics port or metrics push port to Prometheus or the Prometheus push gateway on TCP.
+
+Specify the ports for Prometheus and Prometheus push gateway using the [`--metrics-port`](../../reference/cli/options.md#metrics-port) and [`--metrics-push-port`](../../reference/cli/options.md#metrics-push-port) options. The defaults are `9545` and `9001`.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/connect/manage-peers.md b/versioned_docs/version-24.5.0/public-networks/how-to/connect/manage-peers.md
new file mode 100644
index 00000000000..35b225447ea
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/connect/manage-peers.md
@@ -0,0 +1,76 @@
+---
+title: Manage peers
+sidebar_position: 3
+description: Managing Hyperledger Besu peers
+tags:
+ - public networks
+ - private networks
+---
+
+# Manage peers
+
+Hyperledger Besu peer-to-peer (P2P) discovery happens periodically based on the number of peers in a network and the node's [peer limit](#limit-peers).
+
+The frequency of discovery isn't configurable, but you can [limit remote connections](#limit-remote-connections) in public networks and [randomly prioritize connections](../../reference/cli/options.md#random-peer-priority-enabled) in small, stable networks.
+
+:::info
+
+You can use [`admin_addPeer`](../../reference/cli/options.md#admin_addpeer) to attempt a specific connection, but this isn't P2P discovery.
+
+:::
+
+In private networks, we recommend [using bootnodes](../../../private-networks/how-to/configure/bootnodes.md) to initially discover peers.
+
+## Limit peers
+
+You can limit peers to reduce the bandwidth, CPU time, and disk access Besu uses to manage and respond to peers.
+
+To reduce the maximum number of peers, use the [`--max-peers`](../../reference/cli/options.md#max-peers) option. The default is 25.
+
+## Limit remote connections
+
+Prevent eclipse attacks when using [`--sync-mode`](../../reference/cli/options.md#sync-mode) and [`--fast-sync-min-peers`](../../reference/cli/options.md##sync-min-peers-fast-sync-min-peers) on public networks by enabling the [remote connection limits](../../reference/cli/options.md#remote-connections-limit-enabled).
+
+In private and permissioned networks with only trusted peers, enabling the remote connection limits is unnecessary and might adversely affect the speed at which nodes can join the network. Limiting remote connections can cause a closed group of peers to form when the number of nodes in the network is slightly higher than [`--max-peers`](../../reference/cli/options.md#max-peers). The nodes in this closed group are all connected to each other and can't accept more connections.
+
+:::tip
+
+You can use [`--random-peer-priority-enabled`](../../reference/cli/options.md#random-peer-priority-enabled) to help prevent closed groups of peers in small, stable networks.
+
+:::
+
+## Monitor peer connections
+
+JSON-RPC API methods to monitor peer connections include:
+
+- [`net_peerCount`](../../reference/api/index.md#net_peercount).
+- [`admin_peers`](../../reference/api/index.md#admin_peers).
+- [`debug_metrics`](../../reference/api/index.md#debug_metrics).
+
+Each peer entry returned by [`admin_peers`](../../reference/api/index.md#admin_peers) includes a `protocols` section. Use the information in the `protocols` section to:
+
+- Determine the health of peers. For example, an external process can use [`admin_peers`](../../reference/api/index.md#admin_peers) and [`admin_removePeer`](../../reference/api/index.md#admin_removepeer) to disconnect from peers that are stalled at a single difficulty for an extended period of time.
+
+- Monitor node health. For example, if peers report increasing difficulties but the node is stuck at the same block number, the node may be on a different fork to most peers.
+
+- Determine which protocol level peers are communicating with. For example, you can see if `"version": 65` is being used to reduce transaction sharing traffic.
+
+## List node connections
+
+The default logging configuration doesn't list node connection and disconnection messages. To enable listing them, set the [`--logging`](../../reference/cli/options.md#logging) option to `DEBUG`. For more verbosity, set the option to `TRACE`.
+
+The console logs connection and disconnection events when the log level is `DEBUG` or higher. If the message `Successfully accepted connection from ...` displays, connections are getting through the firewalls.
+
+```bash title="Sample log output"
+2018-10-16 12:37:35.479-04:00 | nioEventLoopGroup-3-1 | INFO | NettyP2PNetwork | Successfully accepted connection from 0xa979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c
+```
+
+## Disable discovery
+
+To disable P2P discovery, set the [`--discovery-enabled`](../../reference/cli/options.md#discovery-enabled) option to `false`.
+
+With discovery disabled, peers can't open connections with the node unless they were previously discovered or manually peered (for example, using [`admin_addPeer`](../../reference/api/index.md#admin_addpeer)). [Static nodes](static-nodes.md) can also open connections.
+
+## Troubleshoot
+
+If you encounter issues with peering, see the [troubleshoot peering documentation](../../how-to/troubleshoot/peering.md), which helps you identify and resolve common problems that can occur during the peering process.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/connect/specify-nat.md b/versioned_docs/version-24.5.0/public-networks/how-to/connect/specify-nat.md
new file mode 100644
index 00000000000..6438ab2fc13
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/connect/specify-nat.md
@@ -0,0 +1,93 @@
+---
+title: Specify NAT method
+sidebar_position: 4
+description: Configuring NAT with Hyperledger Besu
+tags:
+ - public networks
+ - private networks
+---
+
+# Specify the NAT method
+
+Use the [`--nat-method`](../../reference/cli/options.md#nat-method) option to specify the NAT method. Options are: [`UPNP`](#upnp), [`KUBERNETES`](#kubernetes), [`DOCKER`](#docker), [`AUTO`](#auto), and [`NONE`](#none).
+
+The [enode](../../concepts/node-keys.md#enode-url) advertised to other nodes during discovery is the external IP address and port. The [`admin_nodeInfo`](../../reference/api/index.md#admin_nodeinfo) JSON-RPC API method returns the external address and port for the `enode` and `listenAddr` properties.
+
+While Hyperledger Besu is running, the following are not supported:
+
+- IP address changes
+- Changing NAT methods. To change the NAT method, restart the node with the [`--nat-method`](../../reference/cli/options.md#nat-method) option set.
+
+## Auto
+
+`AUTO` detects if Besu is running inside a Kubernetes cluster or a Docker container.
+
+- If Besu is running in a Kubernetes cluster, `AUTO` sets to [`KUBERNETES`](#kubernetes).
+- If Besu is running in a Docker container, `AUTO` sets to [`DOCKER`](#docker).
+- If Besu is not running in Kubernetes or Docker container, `AUTO` sets to [`NONE`](#none).
+
+`AUTO` is the default NAT method.
+
+The following log shows an automatic detection failure.
+
+```log title="The following log shows an automatic detection failure"
+INFO | KubernetesNatManager | Starting kubernetes NAT manager.
+DEBUG | KubernetesNatManager | Trying to update information using Kubernetes client SDK.
+DEBUG | NatService | Nat manager failed to configure itself automatically due to the following reason Service not found. NONE mode will be used
+INFO | NetworkRunner | Starting Network.
+```
+
+:::tip
+
+If automatic detection fails, set the IP and ports in [`NONE`](#none) mode.
+
+:::
+
+## UPnP
+
+Specify `UPNP` to quickly allow inbound peer connections without manual router configuration. Use UPnP in home or small office environments where a wireless router or modem provides NAT isolation.
+
+UPnP automatically detects if a node is running in a UPnP environment and provides port forwarding. UPnP might introduce delays during node startup, especially on networks without a UPnP gateway device.
+
+Use `UPNPP2PONLY` if you wish to enable UPnP only for p2p traffic.
+
+:::tip
+
+UPnP support is often disabled by default in networking firmware. If disabled by default, you must explicitly enable UPnP support.
+
+:::
+
+:::info
+
+When the NAT method is set to `UPNP`, the advertised port is the same as the [listening port](../../reference/cli/options.md#p2p-port).
+
+:::
+
+## Kubernetes
+
+Specify `KUBERNETES` to explicitly specify Hyperledger Besu is running inside a Kubernetes cluster. Besu automatically detects if it's running inside of a Kubernetes cluster and interacts with Kubernetes APIs as required to determine external IP addresses and exposed ports.
+
+In Kubernetes, the Ingress IP of the load balancer will be used as the external IP for Besu. A load balancer service can map any incoming port to a target port. These mapping rules will be the one retrieved by Besu.
+
+A tutorial to [Configure the Nat Manager for Kubernetes](../../../private-networks/tutorials/kubernetes/nat-manager.md) is available.
+
+## Docker
+
+Specify `DOCKER` to explicitly specify Hyperledger Besu is running inside a Docker container. If you specify `DOCKER`, you advertise the host IP address not the container IP address.
+
+The host IP address is the advertised host specified in the [`docker run` command](https://docs.docker.com/engine/reference/commandline/run/#add-entries-to-container-hosts-file---add-host). If not specified in the `docker run` command, the advertised host defaults to the values for [`--p2p-host`](../../reference/cli/options.md#p2p-host) and [`--p2p-port`](../../reference/cli/options.md#p2p-port).
+
+## None
+
+Specify `NONE` to explicitly configure the external IP address and ports advertised using:
+
+- [`--p2p-host`](../../reference/cli/options.md#p2p-host) and [`--p2p-port`](../../reference/cli/options.md#p2p-port) for the P2P service.
+- [`--rpc-http-host`](../../reference/cli/options.md#rpc-http-host) and [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) for the JSON-RPC HTTP service.
+
+The P2P and JSON-RPC HTTP hosts and ports are advertised in the [`net_services`](../../reference/api/index.md#net_services) method.
+
+:::tip
+
+When the NAT method is set to `NONE`, the advertised port is the same as the [listening port](../../reference/cli/options.md#p2p-port).
+
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/connect/static-nodes.md b/versioned_docs/version-24.5.0/public-networks/how-to/connect/static-nodes.md
new file mode 100644
index 00000000000..0c131a7f2f4
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/connect/static-nodes.md
@@ -0,0 +1,69 @@
+---
+title: Configure static nodes
+sidebar_position: 1
+description: Configuring static nodes
+tags:
+ - public networks
+ - private networks
+---
+
+# Static nodes
+
+Static nodes are a configured set of trusted nodes. Static nodes are exempt from [maximum peer](manage-peers.md#limit-peers) and [remote connection](manage-peers.md#limit-remote-connections) limits.
+
+Besu periodically initiates a connection to any unconnected static node. To mitigate low peer count issues in small networks, we recommend using static nodes, or static nodes and bootnodes.
+
+:::tip
+
+Bootnodes and static nodes are both methods for finding peers. Depending on your use case, you can use only bootnodes, only static nodes, or both bootnodes and static nodes.
+
+For example:
+* You run multiple nodes on Mainnet, using bootnodes for discovery, but want to ensure your nodes are always connected to each other, using static nodes.
+* You run a small network and want your nodes to reconnect if disconnected, using static nodes.
+
+To find peers, configure one or more [bootnodes](../../../private-networks/how-to/configure/bootnodes.md). To configure a specific set of peer connections, use static nodes.
+
+:::
+
+## Configure static nodes
+
+To configure a network of static nodes:
+
+1. List the [enode URLs](../../concepts/node-keys.md#enode-url) of the nodes in the [`static-nodes.json` file](#static-nodesjson-file).
+
+1. Save the `static-nodes.json` file in the data directory (specified by [`--data-path`](../../reference/cli/options.md#data-path)) of each node. Alternatively, you can explicitly specify the static nodes file on the command line using [`--static-nodes-file`](../../reference/cli/options.md#static-nodes-file).
+
+1. Start Besu with discovery disabled using [`--discovery-enabled=false`](../../reference/cli/options.md#discovery-enabled).
+
+To update the list of static peers at run time, use the [`admin_addPeer`](../../reference/api/index.md#admin_addpeer) and [`admin_removePeer`](../../reference/api/index.md#admin_removepeer) JSON-RPC API methods.
+
+:::note
+
+Runtime modifications of static nodes are not persisted between runs. The `static-nodes.json` file is not updated by the `admin_addPeer` and `admin_removePeer` methods.
+
+Nodes not in the list of the static nodes are not prevented from connecting. To prevent nodes from connecting, use [Permissioning](../../../private-networks/concepts/permissioning/index.md).
+
+:::
+
+:::tip
+
+If the added peer does not appear in the peer list (returned by [`admin_peers`](../../reference/api/index.md#admin_peers)), check the the supplied [enode URL](../../concepts/node-keys.md#enode-url) is correct, the node is running, and the node is listening for TCP connections on the endpoint.
+
+:::
+
+### `static-nodes.json` file
+
+The `static-nodes.json` file must be in the data directory (specified by [`--data-path`](../../reference/cli/options.md#data-path)) and contain a JSON array of [enode URLs](../../concepts/node-keys.md#enode-url).
+
+```json title="Example"
+[
+ "enode://cea71cb65a471037e01508cebcc178f176f9d5267bf29507ea1f6431eb6a5dc67d086dc8dc54358a72299dab1161febc5d7af49d1609c69b42b5e54544145d4f@127.0.0.1:30303",
+ "enode://ca05e940488614402705a6b6836288ea902169ecc67a89e1bd5ef94bc0d1933f20be16bc881ffb4be59f521afa8718fc26eec2b0e90f2cd0f44f99bc8103e60f@127.0.0.1:30304"
+]
+```
+
+:::note
+
+Each node has a `static-nodes.json` file. We recommend each node in the network has the same `static-nodes.json` file.
+
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/develop/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/develop/_category_.json
new file mode 100644
index 00000000000..8c8a280b930
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/develop/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Develop dapps",
+ "position": 9
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/develop/client-libraries.md b/versioned_docs/version-24.5.0/public-networks/how-to/develop/client-libraries.md
new file mode 100644
index 00000000000..009e82d8d35
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/develop/client-libraries.md
@@ -0,0 +1,31 @@
+---
+title: Use client libraries
+sidebar_position: 2
+description: Hyperledger Besu client libraries
+tags:
+ - public networks
+ - private networks
+---
+
+# Use client libraries
+
+Dapps use client libraries, such as [web3.js](https://github.com/ethereum/web3.js/), [web3j](https://github.com/web3j/web3j), or [ethereumj](https://github.com/ethereum/ethereumj), to forward JSON-RPC requests to Hyperledger Besu. Any client library implementing core Ethereum RPC methods works with Besu.
+
+Use the [web3js-quorum library](../../../private-networks/how-to/use-privacy/web3js-quorum.md) with Besu for [privacy features](../../../private-networks/concepts/privacy/index.md).
+
+![Client Libraries](../../../assets/images/Hyperledger-Besu-Client-Libraries.png)
+
+Use client libraries to:
+
+- Create signed transactions
+- [Create and send private transactions].
+
+:::note
+
+[Hyperledger Besu does not support key management inside the client](../send-transactions.md#use-wallets-for-key-management).
+
+:::
+
+
+
+[Create and send private transactions]: ../../../private-networks/how-to/send-transactions/private-transactions.md
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/develop/hardhat.md b/versioned_docs/version-24.5.0/public-networks/how-to/develop/hardhat.md
new file mode 100644
index 00000000000..06b4a800171
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/develop/hardhat.md
@@ -0,0 +1,74 @@
+---
+title: Use Hardhat
+sidebar_position: 1
+description: Using Hyperledger Besu with Hardhat
+tags:
+ - public networks
+ - private networks
+---
+
+# Use Hardhat
+
+Developing for Hyperledger Besu using Hardhat is the same as developing for public Ethereum networks using Hardhat. Hardhat
+supports Besu with the only difference being Besu does not support private key management.
+
+You can therefore use a wallet provider, or specify your private key in the code.
+
+## Private key management
+
+### Use an HD wallet
+
+To add the wallet provider, update the `hardhat.config.ts` file in the project directory. Replace:
+
+- `` with the JSON-RPC endpoint (IP address and port) of a Besu node.
+- `` with the list of words that make up your account's mnemonic.
+- ` your password if used
+- `` your account's private key
+
+```js
+module.exports = {
+ // See
+ // for more about customizing your Hardhat configuration!
+ networks: {
+ besuWallet: {
+ url: "",
+ accounts: {
+ mnemonic: "",
+ path: "m/44'/60'/0'/0",
+ initialIndex: 0,
+ count: 1,
+ passphrase: "",
+ },
+ },
+ },
+};
+```
+
+### Specify your private key in code
+
+:::danger
+
+Ensure you do not commit private keys to source control like Github, always inject your keys at runtime as environment variables, or
+use a vault or similar.
+
+:::
+
+```js
+const provider = new ethers.JsonRpcApiProvider();
+const wallet = new ethers.Wallet();
+// connect the wallet to the provider
+const signer = wallet.connect(provider);
+
+```
+
+## Start a Besu node
+
+Start a Besu node with JSON-RPC enabled on the endpoint specified in the Hardhat configuration file.
+
+## Deploy a contract
+
+To deploy a contract onto the Besu network:
+
+```bash
+npx hardhat scripts run ./scripts/deploy_my_contract.ts --network besuWallet
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/monitor/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/_category_.json
new file mode 100644
index 00000000000..9be56b91890
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Monitor nodes",
+ "position": 6
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/monitor/index.md b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/index.md
new file mode 100644
index 00000000000..c2c49d0e9fd
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/index.md
@@ -0,0 +1,15 @@
+---
+description: Monitoring using metrics and logging
+tags:
+ - public networks
+ - private networks
+---
+
+# Monitor Besu
+
+Monitoring enables identification of node and network issues. Specifically, configuring metrics and logging enables:
+
+- [Visual representation of declining node or network performance](metrics.md)
+- [Collection of log files to enable issue diagnosis](logging.md).
+
+For an overview of monitoring Hyperledger Besu, view [this recording](https://www.youtube.com/watch?v=7BuutRe0I28&feature=youtu.be).
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/monitor/logging.md b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/logging.md
new file mode 100644
index 00000000000..c994d6388c6
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/logging.md
@@ -0,0 +1,77 @@
+---
+title: Configure logging
+sidebar_position: 3
+description: Hyperledger Besu log level setting and log formatting
+path: blob/master/besu/src/main/resources/
+source: log4j2.xml
+tags:
+ - public networks
+ - private networks
+---
+
+# Use logging
+
+Hyperledger Besu uses Log4J2 for logging and provides two methods to configure logging behavior:
+
+- [Basic](#basic-logging) - Changes the log level.
+- [Advanced](#advanced-logging) - Configures the output and format of the logs.
+
+[Quorum Developer Quickstart](https://github.com/ConsenSys/quorum-dev-quickstart) provides an [example implementation using Elastic Stack](../../../private-networks/how-to/monitor/elastic-stack.md) for log management.
+
+## Basic logging
+
+Use the [`--logging`](../../reference/cli/options.md#logging) command line option to specify logging verbosity. The [`--logging`](../../reference/cli/options.md#logging) option changes the volume of events displayed in the log. Valid log levels are `OFF`, `ERROR`, `WARN`, `INFO`, `DEBUG`, `TRACE`, `ALL`. The default level is `INFO`.
+
+For most use cases, the basic method provides enough configurability.
+
+:::tip
+
+Use the [`admin_changeLogLevel`](../../reference/api/index.md#admin_changeloglevel) API method to change the log level while Besu is running.
+
+:::
+
+## Advanced logging
+
+You can provide your own logging configuration using the standard Log4J2 configuration mechanisms. For example, the following Log4J2 configuration is the same as the [default configuration] except for the exclusion of logging of stack traces for exceptions.
+
+```xml title="debug.xml"
+
+
+
+ INFO
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+To use your custom configuration, set the environment variable `LOG4J_CONFIGURATION_FILE` to the location of your configuration file.
+
+If you have more specific requirements, you can create your own [log4j2 configuration](https://logging.apache.org/log4j/2.x/manual/configuration.html).
+
+For Bash-based executions, you can set the variable for only the scope of the program execution by setting it before starting Besu.
+
+To set the debug logging and start Besu connected to the Goerli testnet:
+
+```bash
+LOG4J_CONFIGURATION_FILE=./debug.xml besu --network=goerli
+```
+
+### Log rotation
+
+[Quorum Developer Quickstart](https://github.com/ConsenSys/quorum-dev-quickstart) logging configuration defines a [log rotation to restrict the size of the log files].
+
+
+
+[default configuration]: https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/besu/src/main/resources/log4j2.xml
+[log rotation to restrict the size of the log files]: https://github.com/ConsenSys/quorum-dev-quickstart/blob/b72a0f64d685c851bf8be399a8e33bbdf0e09982/files/besu/config/besu/log-config.xml
+[default configuration]: https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/besu/src/main/resources/log4j2.xml
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/monitor/metrics.md b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/metrics.md
new file mode 100644
index 00000000000..6fc3dafd301
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/metrics.md
@@ -0,0 +1,216 @@
+---
+title: Use metrics
+sidebar_position: 1
+description: Monitoring and metrics
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Use metrics to monitor node performance
+
+To enable the [Prometheus](https://prometheus.io/) monitoring and alerting service to access Hyperledger Besu metrics, use the [`--metrics-enabled`](../../reference/cli/options.md#metrics-enabled) option. Use [Grafana](https://grafana.com/) to visualize the collected data. See the sample [Besu Full Grafana dashboard](https://grafana.com/grafana/dashboards/16455-besu-full/).
+
+The Besu example networks have [monitoring with Prometheus and Grafana configured].
+
+Use Prometheus to monitor the number of blocks your Besu node is behind the chain head, and to alert you that your node is not keeping up with the chain head.
+
+[This recording](https://www.youtube.com/watch?v=7BuutRe0I28&feature=youtu.be) shows examples of monitoring Hyperledger Besu.
+
+## Install Prometheus
+
+To use Prometheus with Besu, install the [Prometheus main component](https://prometheus.io/download/). On MacOS, install with [Homebrew](https://formulae.brew.sh/formula/prometheus):
+
+```bash
+brew install prometheus
+```
+
+:::tip
+
+You can also install:
+
+- Exporters that send system metrics to Prometheus to monitor non-Besu-specific items such as disk and CPU usage.
+- Other Prometheus components, such as the Alert Manager. Additional configuration is not required for these components because Prometheus handles and analyzes data directly from the feed.
+
+:::
+
+## Set up and run Prometheus with Besu
+
+To configure Prometheus and run with Besu:
+
+1. Configure Prometheus to poll Besu.
+ For example, add the following YAML fragment to the `scrape_configs` block of the `prometheus.yml` file:
+
+
+
+
+ ```yml
+ - job_name: besu
+ scrape_interval: 15s
+ scrape_timeout: 10s
+ metrics_path: /metrics
+ scheme: http
+ static_configs:
+ - targets:
+ - localhost:9545
+ ```
+
+
+
+
+ ```yml
+ global:
+ scrape_interval: 15s
+
+ scrape_configs:
+ - job_name: "prometheus"
+ static_configs:
+ - targets: ["localhost:9090"]
+ - job_name: besu
+ scrape_interval: 15s
+ scrape_timeout: 10s
+ metrics_path: /metrics
+ scheme: http
+ static_configs:
+ - targets:
+ - localhost:9545
+ ```
+
+
+
+
+ Prometheus requires 3 MB of space per node per hour for metrics, with a `scrape_interval` of 15 seconds.
+
+2. Start Besu with the [`--metrics-enabled`](../../reference/cli/options.md#metrics-enabled) option.
+ To start a single node for testing with metrics enabled, run the following command:
+
+
+
+
+ ```bash
+ besu --network=dev --miner-enabled --miner-coinbase --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-enabled
+ ```
+
+
+
+
+ ```bash
+ besu --network=dev --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-enabled
+ ```
+
+
+
+
+ To specify the host and port on which Prometheus accesses Besu, use the
+ [`--metrics-host`](../../reference/cli/options.md#metrics-host) and
+ [`--metrics-port`](../../reference/cli/options.md#metrics-port) options.
+ The default host and port are `127.0.0.1` (`localhost`) and `9545`.
+
+ :::danger
+ To avoid DNS rebinding attacks, if running Prometheus on a different host than your Besu node
+ (any host other than `localhost`), add the hostname that Prometheus uses to
+ [`--host-allowlist`](../../reference/cli/options.md#host-allowlist).
+ For example, if Prometheus is configured to get metrics from `http://besu.local:8008/metrics`,
+ then `besu.local` must be in `--host-allowlist`.
+ :::
+
+3. In another terminal, run Prometheus specifying the `prometheus.yml` file:
+
+ ```bash
+ prometheus --config.file=prometheus.yml
+ ```
+
+4. View the [Prometheus graphical interface](#view-prometheus-graphical-interface).
+
+ :::tip
+ Use a log ingestion tool, such as Logstash, to parse the logs and alert you to configured anomalies.
+ :::
+
+## Run Prometheus with Besu in push mode
+
+The [`--metrics-enabled`](../../reference/cli/options.md#metrics-enabled) option enables Prometheus
+polling of Besu, but sometimes metrics are hard to poll (for example, when running inside Docker
+containers with varying IP addresses).
+To enable Besu to push metrics to a [Prometheus push gateway](https://github.com/prometheus/pushgateway),
+use the [`--metrics-push-enabled`](../../reference/cli/options.md#metrics-push-enabled) option.
+
+To configure Prometheus and run with Besu pushing to a push gateway:
+
+1. Configure Prometheus to read from a push gateway.
+ For example, add the following YAML fragment to the `scrape_configs` block of the `prometheus.yml` file:
+
+ ```yml
+ - job_name: push-gateway
+ metrics_path: /metrics
+ scheme: http
+ static_configs:
+ - targets:
+ - localhost:9091
+ ```
+
+1. Start the push gateway.
+ You can deploy the push gateway using the Docker image:
+
+ ```bash
+ docker pull prom/pushgateway
+ docker run -d -p 9091:9091 prom/pushgateway
+ ```
+
+1. Start Besu specifying the `--metrics-push-enabled` option and port of the push gateway:
+
+
+
+
+ ```bash
+ besu --network=dev --miner-enabled --miner-coinbase --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-push-enabled --metrics-push-port=9091 --metrics-push-host=127.0.0.1
+ ```
+
+
+
+
+ ```bash
+ besu --network=dev --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-push-enabled --metrics-push-port=9091 --metrics-push-host=127.0.0.1
+ ```
+
+
+
+
+1. In another terminal, run Prometheus specifying the `prometheus.yml` file:
+
+ ```bash
+ prometheus --config.file=prometheus.yml
+ ```
+
+1. View the [Prometheus graphical interface](#view-prometheus-graphical-interface).
+
+## View Prometheus graphical interface
+
+1. Open a Web browser to [`http://localhost:9090`](http://localhost:9090) to view the Prometheus graphical interface.
+
+1. Choose **Graph** from the menu bar and click the **Console** tab below.
+
+1. From the **Insert metric at cursor** drop-down, select a [metric](#metrics-list) such as `besu_blockchain_difficulty_total` or `ethereum_blockchain_height` and click **Execute**. The values display.
+
+1. Click the **Graph** tab to view the data as a time-based graph. The query string displays below the graph. For example, `{ethereum_blockchain_height{instance="localhost:9545",job="prometheus"}`.
+
+## View the metrics list
+
+Run the following command to view the full list of available metrics:
+
+```bash
+curl http://localhost:9545/metrics
+```
+
+Update the host and port if you are not using the default values.
+
+Each metric, such as `besu_blockchain_chain_head_gas_limit`, starts with a metric category prefix.
+Metrics specific to Besu use the `besu_` prefix, followed by another metric category.
+You can enable metric categories using the
+[`--metrics-category`](../../reference/cli/options.md#metrics-category) command line option.
+
+
+
+[monitoring with Prometheus and Grafana configured]: ../../../private-networks/tutorials/quickstart.md#monitor-nodes-with-prometheus-and-grafana
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/monitor/understand-metrics.md b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/understand-metrics.md
new file mode 100644
index 00000000000..863798555be
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/monitor/understand-metrics.md
@@ -0,0 +1,101 @@
+---
+title: Understand metrics
+sidebar_position: 2
+description: Understand Besu performance metrics
+tags:
+ - public networks
+---
+
+# Understand metrics
+
+When running Besu on Ethereum Mainnet using [snap sync](../../get-started/connect/sync-node.md#snap-synchronization), you might notice graphical patterns that stand out in different metrics charts. These patterns are related to the [CPU usage](#cpu-usage) and [block time](#block-time) of the Besu sync process.
+
+## CPU usage
+
+The following screenshot from [monitoring Besu with Prometheus and Grafana] shows patterns related to CPU usage.
+
+![CPU Grafana Besu dashboard patterns screenshot](../../../assets/images/besu-cpu-pattern-during-sync.png)
+
+The CPU pattern is a "staircase" pattern, where each step represents one of the Besu running stages.
+
+### 1. Blocks import and world state download
+
+Step 1 highlights blocks import and world state download, two tasks executed in parallel in Besu. Besu manages these two tasks with two different pipelines.
+
+This step is CPU-bound.[^1] The two pipeline stages run on multiple threads.
+
+As displayed in the following screenshot (for a VM with 8 CPUs) the CPU load average is about 7.5 and sometimes exceeds 10 (a 100% load for the 8 CPUs is 8). This means there's more work to be done than what the CPUs can handle.
+
+![System load metrics screenshot](../../../assets/images/system-load.png)
+
+### 2. World state healing
+
+Step 2, world state healing, starts just after the world state download in step 1 is complete. The peak in system CPU is related to the high rate of input and output (IO) required during this step. IO usage is around 61% during healing, and it's only 39% during the remaining sync.
+
+![IO utilization metrics screenshot](../../../assets/images/io-utilization.png)
+
+### 3. Blocks import
+
+After steps 1 and 2, world state is downloaded and healed, and block import continues.
+
+The visible drop in CPU shows that Besu finished the world state nodes download.
+
+The block import step is long because Besu can't parallelize block import -- it must validate each parent block before importing a child.
+
+:::note
+
+The Besu team is currently working on other algorithm and implementations to make this block import faster.
+
+:::
+
+### 4. Blocks full import
+
+In step 4, Besu executes all transactions of each block. This is when Besu updates the world state after the healing step.
+
+The quantity of imported blocks in this step depends on the speed of the sync. This number indicates the cumulated blocks quantity behind head since the last healing step.
+
+This step consumes less CPU than the previous steps because the sequential part -- executing transactions on the EVM -- must be single-threaded, reducing the concurrent work at the CPU level.
+
+### 5. Blocks production and propagation
+
+Once Besu is completely synced, it propagates blocks and executes the transactions inside each block. Step 5, block production and propagation, shows a reduction in CPU consumption due to the idle time while waiting for the new block and the sequential nature of executing transactions on the EVM.
+
+## Block time
+
+Block time measures the duration of getting new blocks in Besu. Block time is closely related to [CPU usage](#cpu-usage).
+
+The following screenshot shows patterns related to block time as available in the [Besu Grafana full dashboard](https://grafana.com/grafana/dashboards/16455-besu-full/).
+
+![Block time Grafana Besu dashboard patterns screenshot](../../../assets/images/block-time.png)
+
+The block time pattern is also a "staircase" pattern.
+
+### 1. Block import time
+
+Step 1, block import time, is the duration of importing a block.
+
+Import includes:
+
+- Data retrieval over the network.
+- Headers, body, and receipt validation.
+- Persisting the block in the database.
+
+Block import takes between a few and tens of milliseconds.
+
+### 2. Block full import time
+
+Step 2, block full import time, is the duration of importing a block (step 1) and executing all its transactions.
+
+Block full import takes between 1 and 2 seconds per block, depending on the number and complexity of the transactions.
+
+### 3. Block network time
+
+Step 3, block network time, is the duration of propagating a block over the network and executing all its transactions.
+
+Block network takes between 13 and 16 seconds.
+
+
+
+[monitoring Besu with Prometheus and Grafana]: ../../../private-networks/tutorials/quickstart.md#monitor-nodes-with-prometheus-and-grafana
+
+[^1]: A CPU-bound task means that the time required to execute the task is determined only by the CPU speed.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/send-transactions.md b/versioned_docs/version-24.5.0/public-networks/how-to/send-transactions.md
new file mode 100644
index 00000000000..0da7aba53d5
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/send-transactions.md
@@ -0,0 +1,59 @@
+---
+title: Create and send transactions
+sidebar_position: 4
+description: Send transactions using eth_call or eth_sendRawTransaction.
+tags:
+ - public networks
+---
+
+# Create and send transactions
+
+You can send signed transactions using the [`eth_sendRawTransaction`](../reference/api/index.md#eth_sendrawtransaction) JSON-RPC API method.
+
+Signed transactions can be simple value transfers, contract creation, or contract invocation. Set the maximum transaction fee for transactions using the [`--rpc-tx-feecap`](../reference/cli/options.md#rpc-tx-feecap) CLI option.
+
+To accept signed transactions from remote connections, set the [API listening host](use-besu-api/index.md#service-hosts) to `0.0.0.0`.
+
+[Use client libraries](develop/client-libraries.md) to create and send a signed raw transaction to transfer Ether and create a smart contract.
+
+:::danger Private keys
+
+Don't use the accounts from the examples on Mainnet or any public network except for testing. The private keys are displayed which means the accounts are not secure.
+
+All accounts and private keys in the examples are from the `dev.json` genesis file in the [`/besu/config/src/main/resources`](https://github.com/hyperledger/besu/tree/master/config/src/main/resources) directory.
+
+In production environments avoid exposing your private keys by creating signed transactions offline, or use [Web3Signer](https://docs.web3signer.consensys.net/) to isolate your private keys and sign transactions with [`eth_sendTransaction`](https://docs.web3signer.consensys.net/reference/api/json-rpc#eth_sendtransaction).
+
+:::
+
+:::caution
+
+Setting the [listening host](use-besu-api/index.md#service-hosts) to `0.0.0.0` exposes the API service connection on your node to any remote connection. In a production environment, ensure you are using a firewall to avoid exposing your node to the internet.
+
+:::
+
+:::tip
+
+Libraries such as [web3j](https://github.com/web3j/web3j) or [ethereumj](https://github.com/ethereum/ethereumj) and tools such as [MyCrypto](https://mycrypto.com/) can also create signed transactions.
+
+:::
+
+## `eth_call` vs `eth_sendRawTransaction`
+
+You can interact with contracts using [`eth_call`](../reference/api/index.md#eth_call) or [`eth_sendRawTransaction`](../reference/api/index.md#eth_sendrawtransaction). The table below compares the characteristics of both calls.
+
+| `eth_call` | `eth_sendRawTransaction` |
+| --- | --- |
+| Read-only | Write |
+| Invokes contract function locally | Broadcasts to the network |
+| Does not change state of blockchain | Updates the blockchain (for example, transfers ether between accounts) |
+| Does not consume gas | Requires gas |
+| Synchronous | Asynchronous |
+| Returns the value of a contract function available immediately | Returns transaction hash only. A block might not include all possible transactions (for example, if the gas price is too low). |
+
+## Use wallets for key management
+
+Besu doesn't support key management inside the client. Use:
+
+- [Web3Signer](https://docs.web3signer.consensys.net/) with Besu to provide access to your key store and sign transactions.
+- Third-party tools (for example, [MetaMask](https://metamask.io/) and [web3j](https://web3j.io/)) for creating accounts.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/_category_.json
new file mode 100644
index 00000000000..cf5f9653813
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Troubleshoot",
+ "position": 12
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/evm-tool.md b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/evm-tool.md
new file mode 100644
index 00000000000..3ccf4e08dad
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/evm-tool.md
@@ -0,0 +1,69 @@
+---
+title: Use EVM tool
+sidebar_position: 1
+description: Hyperledger Besu EVM tool
+tags:
+ - public networks
+ - private networks
+---
+
+# Use the EVM tool
+
+The Besu EVM tool is a CLI program that executes arbitrary EVM programs and Ethereum State Tests
+outside the context of an operating node.
+Use the EVM tool for benchmarking and fuzz testing.
+
+## Get the EVM tool
+
+The EVM tool is part of the standard [Besu binary distribution](../../get-started/install/binary-distribution.md).
+
+### Build from source
+
+To build from source, run the following from the root of the Besu repository:
+
+```bash
+./gradlew :ethereum:evmTool:installDist
+```
+
+An extractable archive files is created in `ethereum/evmtool/build/distributions` and an executable
+installation in `ethereum/evmtool/build/install/evmtool`.
+
+Execute the EVM tool:
+
+```bash
+ethereum/evmtool/build/install/evmtool/bin/evmtool
+```
+
+### Execute with Docker
+
+To run the Besu EVM tool in a container:
+
+```bash
+docker run -rm hyperledger/besu-evmtool:develop
+```
+
+- Because no data is stored in local directories we recommended using the `-rm` docker option.
+ The `-rm` option deletes the container at the end of execution.
+- If you use an option that requires input from standard in, use the `-i` docker option.
+ The `-i` option pipes standard input to the EVM tool.
+- If you need to reference files we recommend using a docker file binding, such as
+ `-v ${PWD}:/opt/data`, which maps the current directory to the `/opt/data` directory in the container.
+
+:::note
+The `latest` tag is the latest released version of Besu.
+The `develop` tag is the current main branch code that will go into a future release version of Besu.
+:::
+
+## EVM tool options
+
+The first mode of the EVM tool runs arbitrary EVM bytecode.
+Use [command line options](../../reference/evm-tool.md#options) to specify the code and other
+contextual information.
+For example:
+
+```bash
+evmtool --code=5B600080808060045AFA50600056
+```
+
+The EVM tool also has [subcommands](../../reference/evm-tool.md#subcommands) used for testing code bases.
+These subcommands are not meant for typical user interactions.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/peering.md b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/peering.md
new file mode 100644
index 00000000000..20452939433
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/peering.md
@@ -0,0 +1,72 @@
+---
+title: Troubleshoot peering
+sidebar_position: 4
+description: How to troubleshoot peering
+tags:
+ - public networks
+---
+
+# Troubleshoot peering
+
+Many factors can affect the ability of your node to find and maintain peers. Your network router, machine environment, and node configuration are all important. If you have peering issues, start by [configuring your ports](../connect/configure-ports.md) and [managing peers](../connect/manage-peers.md).
+
+## Peering FAQ
+
+### "Why can’t I find enough peers to sync?"
+
+One or more of the following may be the cause:
+
+- Your hardware doesn't have enough CPU, disk IOPS, or bandwidth to handle all the peers.
+- Your ports aren't open in your firewall and/or router.
+- Your node is sending large numbers of DNS requests. See [issue #4375](https://github.com/hyperledger/besu/issues/4375).
+- You're using [checkpoint sync](../../get-started/connect/sync-node.md#checkpoint-synchronization), which doesn't download all historical block data, so your peers may disconnect you when fetching those blocks.
+- Your node is experiencing the normal behavior of peers connecting and disconnecting. This is especially normal soon after you start your node.
+
+You can try the following to find more peers:
+
+- Set [`p2p-host`](../../reference/cli/options.md#p2p-host) to your external IP address to allow inbound connections.
+- Restart Besu. This can take a while to build up again.
+- Set `-Xdns-enabled` to `true` (only for private networks).
+- Delete the node key (which is autogenerated in your data directory). There are two reasons that this might help find more peers:
+ 1. Your node (identified by the address associated with this key) has been put onto other peers' bad peer lists for some reason.
+ 2. Peer discovery is influenced by the value of the node key. This is related to the node "distance" in the [discovery algorithm](https://github.com/ethereum/devp2p/wiki/Discovery-Overview#kademlia).
+
+You can read the [Prysm EL and CL peering documentation](https://docs.prylabs.network/docs/prysm-usage/p2p-host-ip) for more information.
+
+### "What network or router/modem settings should I check?"
+
+Check the following settings:
+
+- Your machine and router's specified DNS should support TCP. You can check your DNS online for TCP support. Google and Cloudflare, 8.8.8.8 and 1.1.1.1, support TCP over port 853. Other DNS might as well.
+- The appropriate ports should be open on your router, or your router should have UPNP enabled. See the next FAQ for more information on router settings.
+- If you use [Docker](https://docs.docker.com/network/network-tutorial-host/) or virtualization, the container should be able to create outbound connections on the host machine.
+
+### "Which URLs should I check?"
+
+Check that the [enode URLs](../../concepts/node-keys.md#enode-url) specified for [bootnodes](../../../private-networks/how-to/configure/bootnodes.md) or [static nodes](../connect/static-nodes.md) match the enode URLs displayed when starting the remote nodes.
+
+### "How do I open/forward my ports?"
+
+If you’re behind NAT, you probably need to set up port forwarding in your router. You might also need to configure your firewall. Forward and open `30303` (if using the default p2p port) for both UDP and TCP. If your router supports UPNP, you can set [`--nat-method`](../../reference/cli/options.md#nat-method) to [`UPNPP2PONLY`](../connect/specify-nat.md#upnp).
+
+### "How do I test that my ports are open?"
+
+You can use this [open port checker](https://www.yougetsignal.com/tools/open-ports/).
+
+### "What's the ideal number of peers for Besu?"
+
+The default maximum is 25. Increasing the number of peers increases the bandwidth, CPU, and disk access Besu uses to respond to peers. Hardware with low specifications might result in low peer numbers. You'll experience diminishing returns with a larger number of peers (>100).
+
+### "What's the benefit of increasing the number of peers?"
+
+Increasing the number of max peers won't speed up Besu syncing, because the bottleneck during sync is disk IO and CPU.
+
+Note that Besu's peers are only used for the initial sync and transaction gossip, neither of which affects attestation performance. The beacon node connectivity controls how quickly you receive blocks and how attestations are published. Increasing Besu's peer count increases the load on your node, which may hurt attestations.
+
+## Metrics
+
+Capture [metrics](../monitor/index.md) to gain insights into peering behavior over time.
+
+To [enable Prometheus to access Besu](../monitor/metrics.md), open the metrics port or metrics push port to Prometheus or the Prometheus push gateway on TCP.
+
+Specify the ports for Prometheus and Prometheus push gateway using the [`--metrics-port`](../../reference/cli/options.md#metrics-port) and [`--metrics-push-port`](../../reference/cli/options.md#metrics-push-port) options. The defaults are `9545` and `9001`.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/performance.md b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/performance.md
new file mode 100644
index 00000000000..d324e2aaf4d
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/performance.md
@@ -0,0 +1,45 @@
+---
+description: Troubleshoot poor performance and resource constraints.
+sidebar_label: Troubleshoot performance
+sidebar_position: 3
+tags:
+ - public networks
+---
+
+# Troubleshoot poor performance and resource constraints
+
+Your hardware, machine environment, and node configuration can affect your node's ability to serve
+requests and perform [validator duties](../../concepts/proof-of-stake/index.md), including
+[attestation performance](../../concepts/proof-of-stake/attestations.md).
+
+If you notice high resource usage when [monitoring your node](../monitor/index.md), you can
+try the following suggestions:
+
+* Disable swapping.
+ Besu is an I/O intensive application, especially during sync, enabling swapping hurts Besu's performance.
+ You can disable swap at the OS level.
+ [This article](https://www.tecmint.com/disable-swap-partition/) provides information on how to
+ disable swap (and caveats).
+* Use a high performance SSD disk with NVMe, since Besu's performance bottleneck is often slow disk I/O.
+* Configure memory and RAM:
+ * If you have RAM constraints, use [OpenJ9](../../get-started/system-requirements.md) if you're
+ running on `x86_64` Linux architecture to reduce memory usage.
+ * Review and change your [Java heap size](../configure-java/manage-memory.md) if necessary.
+ 5GB is an appropriate limit.
+ Higher values may improve sync time, but can be reduced after completing sync.
+ * Ensure Besu is using [jemalloc](../../get-started/install/binary-distribution.md).
+ * If you have 32GB RAM or more, set the `Xplugin-rocksdb-high-spec-enabled` configuration option
+ to `true`.
+ Don't use this on RAM machines with 16GB RAM or less if you're running a consensus client on the
+ same hardware.
+* If you're running on ARM64, make sure the glibc version is greater than 2.29.
+ If not, Besu uses a Java implementation instead of the native one for some precompiled contracts,
+ which results in lower performance.
+ * On Ubuntu, run `ldd --version`.
+ See [the methods for other environments](https://dev.to/0xbf/how-to-get-glibc-version-c-lang-26he).
+* Pay attention to what processes are running on the same machine/VM as Besu.
+ Java applications, with default settings, are designed to run alone on the machine.
+ You can run your consensus client on the same machine, but this adds overhead on Besu, and vice
+ versa (on CPU cache misses, CPU scheduler latency, IO, etc.).
+
+You should continue to monitor your node after following these suggestions.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/trace-transactions.md b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/trace-transactions.md
new file mode 100644
index 00000000000..77c334c50c4
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/troubleshoot/trace-transactions.md
@@ -0,0 +1,48 @@
+---
+title: Trace transactions
+sidebar_position: 2
+description: How to trace transactions
+tags:
+ - public networks
+ - private networks
+---
+
+# Trace transactions
+
+To get detailed information about transaction processing, use the [`TRACE` API](../../reference/api/index.md#trace-methods). Enable the `TRACE` API using the [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../../reference/cli/options.md#rpc-ws-api) command line options.
+
+The `TRACE` API has two sets of trace calls, [ad-hoc tracing APIs](#ad-hoc-tracing-apis) and [transaction-trace filtering APIs](#transaction-trace-filtering-apis).
+
+## Ad-hoc tracing APIs
+
+These APIs allow you to use the [`trace`, `vmTrace`, or `stateDiff`](../../reference/trace-types.md) diagnostic options when tracing calls or transactions.
+
+When using [Bonsai Tries](../../concepts/data-storage-formats.md#bonsai-tries) with the ad-hoc
+tracing APIs, the requested block or transaction must be within the number of
+[blocks retained](../../reference/cli/options.md#bonsai-historical-block-limit) (by default, 512
+from the head of the chain).
+
+The ad-hoc tracing APIs are:
+
+- [`trace_call`](../../reference/api/index.md#trace_call)
+- [`trace_callMany`](../../reference/api/index.md#trace_callmany)
+- [`trace_rawTransaction`](../../reference/api/index.md#trace_rawtransaction)
+- [`trace_replayBlockTransactions`](../../reference/api/index.md#trace_replayblocktransactions)
+
+## Transaction-trace filtering APIs
+
+These APIs allow you to filter and search by specific information such as the block, address, or transaction. These APIs only use the [`trace` type](../../reference/trace-types.md#trace).
+
+To use the transaction-trace filtering APIs, your node must be an
+[archive node](../../get-started/connect/sync-node.md#run-an-archive-node), or the requested block
+or transaction must be within the number of
+[blocks retained](../../reference/cli/options.md#bonsai-historical-block-limit) when using
+[Bonsai Tries](../../concepts/data-storage-formats.md#bonsai-tries) (by default, 512 from the head
+of the chain).
+
+The transaction-trace filtering APIs are:
+
+- [`trace_block`](../../reference/api/index.md#trace_block)
+- [`trace_filter`](../../reference/api/index.md#trace_filter)
+- [`trace_get`](../../reference/api/index.md#trace_get)
+- [`trace_transaction`](../../reference/api/index.md#trace_transaction)
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/upgrade-node.md b/versioned_docs/version-24.5.0/public-networks/how-to/upgrade-node.md
new file mode 100644
index 00000000000..4e33d3dce08
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/upgrade-node.md
@@ -0,0 +1,33 @@
+---
+title: Upgrade Besu
+sidebar_position: 11
+description: Upgrade your Besu node to a new version.
+tags:
+ - public networks
+---
+
+# Upgrade your Besu node
+
+When upgrading your Besu node, we recommend:
+
+- Using an orchestration method (for example, Ansible or Chef) to keep all nodes in sync with your desired configuration.
+- Storing your configuration under version control.
+
+## Ansible
+
+You can use the [Ansible role on Galaxy](https://galaxy.ansible.com/consensys/hyperledger_besu) directly or customize it to suit your needs.
+
+Upgrade the Besu version on nodes by running the play with the new version. For more information, For more information, select **Read Me** on the [Ansible Galaxy Besu page](https://galaxy.ansible.com/consensys/hyperledger_besu).
+
+The playbook:
+
+1. Stops Besu.
+1. Downloads the updated version.
+1. Applies any new configuration.
+1. Starts Besu.
+
+## Find peers on restarting
+
+Nodes store known peers in the peer table. The peer table is not persisted to disk. When a node restarts, the node connects to the specified bootnodes and discovers other nodes through the peer discovery process. The node continues collecting data from where it left off before the restart (assuming there was no data corruption in a failure scenario).
+
+Before the node restarted, connected peers saved the node details in their peer tables. These peers can reconnect to the restarted node. The restarted node uses these peers and the bootnodes, to discover more peers. To ensure that the restarted node successfully rejoins the network, ensure you specify at least one operational bootnode.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/_category_.json
new file mode 100644
index 00000000000..300deff1cbe
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Use the Besu API",
+ "position": 1
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/access-logs.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/access-logs.md
new file mode 100644
index 00000000000..4f35a86ffd8
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/access-logs.md
@@ -0,0 +1,195 @@
+---
+title: Access logs using JSON-RPC
+sidebar_position: 5
+description: Accessing logs using the Hyperledger Besu API
+tags:
+ - public networks
+ - private networks
+---
+
+# Access logs using the Hyperledger Besu API
+
+Subscribe to events, such as logs, using either [RPC Pub/Sub over WebSockets](rpc-pubsub.md) or filters over HTTP.
+
+Access logs using the following Hyperledger Besu API methods:
+
+- [`eth_getFilterChanges`](../../reference/api/index.md#eth_getfilterchanges)
+- [`eth_getFilterLogs`](../../reference/api/index.md#eth_getfilterlogs)
+- [`eth_getLogs`](../../reference/api/index.md#eth_getlogs).
+
+Use [`eth_newFilter`](../../reference/api/index.md#eth_newfilter) to create the filter before using [`eth_getFilterChanges`](../../reference/api/index.md#eth_getfilterchanges) and [`eth_getFilterLogs`](../../reference/api/index.md#eth_getfilterlogs)).
+
+Access logs for [private contracts](../../../private-networks/concepts/privacy/index.md) using the equivalent [`priv_*` methods and specifying the privacy group ID](#filters-for-private-contracts). For example, [`priv_getLogs`](../../reference/api/index.md#priv_getlogs).
+
+:::note
+
+The following examples use the sample contract included in [events and logs](../../concepts/events-and-logs.md).
+
+:::
+
+## Create a filter
+
+Create a filter using [`eth_newFilter`](../../reference/api/index.md#eth_newfilter).
+
+If the [example contract](../../concepts/events-and-logs.md) was deployed to 0x42699a7612a82f1d9c36148af9c77354759b210b, the following request for `eth_newFilter` creates a filter to log when `valueIndexed` is set to 5:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_newFilter",
+ "params": [
+ {
+ "fromBlock": "earliest",
+ "toBlock": "latest",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "topics": [
+ ["0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8"],
+ ["0x0000000000000000000000000000000000000000000000000000000000000005"]
+ ]
+ }
+ ],
+ "id": 1
+}
+```
+
+[`eth_newFilter`](../../reference/api/index.md#eth_newfilter) returns a filter ID hash (for example, `0x1ddf0c00989044e9b41cc0ae40272df3`).
+
+### Poll a filter for changes
+
+To poll the filter for changes since the last poll, use [`eth_getFilterChanges`](../../reference/api/index.md#eth_getfilterchanges) with the filter ID hash returned by [`eth_newFilter`](../../reference/api/index.md#eth_newfilter).
+
+If the contract had been executed twice since the last poll, with `valueIndexed` set to 1 and 5, [`eth_getFilterChanges`](../../reference/api/index.md#eth_getfilterchanges) returns only the log where the [topic](../../concepts/events-and-logs.md#event-parameters) for `valueIndexed` is 5:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x21c",
+ "blockHash": "0xc7e6c9d5b9f522b2c9d2991546be0a8737e587beb6628c056f3c327a44b45132",
+ "transactionHash": "0xfd1a40f9fbf89c97b4545ec9db774c85e51dd8a3545f969418a22f9cb79417c5",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000005",
+ "topics": [
+ "0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8",
+ "0x0000000000000000000000000000000000000000000000000000000000000005"
+ ]
+ }
+ ]
+}
+```
+
+### Get all logs for a filter
+
+To get all logs for a filter, use [`eth_getFilterLogs`](../../reference/api/index.md#eth_getfilterlogs).
+
+If the contract had been executed twice with `valueIndexed` set to 5 since the filter was created using `eth_newFilter`, `eth_getFilterLogs` returns:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x1a7",
+ "blockHash": "0x4edda22a242ddc7bc51e2b6b11e63cd67be1af7389470cdea9c869768ff75d42",
+ "transactionHash": "0x9535bf8830a72ca7d0020df0b547adc4d0ecc4321b7d5b5d6beb1eccee5c0afa",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000005",
+ "topics": [
+ "0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8",
+ "0x0000000000000000000000000000000000000000000000000000000000000005"
+ ]
+ },
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x21c",
+ "blockHash": "0xc7e6c9d5b9f522b2c9d2991546be0a8737e587beb6628c056f3c327a44b45132",
+ "transactionHash": "0xfd1a40f9fbf89c97b4545ec9db774c85e51dd8a3545f969418a22f9cb79417c5",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000005",
+ "topics": [
+ "0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8",
+ "0x0000000000000000000000000000000000000000000000000000000000000005"
+ ]
+ }
+ ]
+}
+```
+
+:::tip
+
+You can use [`eth_getLogs`](#get-logs-using-a-filter-options-object) with a filter options object to get all logs matching the filter options instead of using [`eth_newFilter`](../../reference/api/index.md#eth_newfilter) followed by [`eth_getFilterLogs`](../../reference/api/index.md#eth_getfilterlogs).
+
+:::
+
+## Uninstall a filter
+
+When a filter is no longer required, use [`eth_uninstallFilter`](../../reference/api/index.md#eth_uninstallfilter) to remove the filter.
+
+## Filters for private contracts
+
+Filters for private contracts are created, accessed, and uninstalled using:
+
+- [`priv_getFilterChanges`](../../reference/api/index.md#priv_getfilterchanges)
+- [`priv_getFilterLogs`](../../reference/api/index.md#priv_getfilterlogs)
+- [`priv_getLogs`](../../reference/api/index.md#priv_getlogs)
+- [`priv_newFilter`](../../reference/api/index.md#priv_newfilter)
+- [`priv_uninstallFilter`](../../reference/api/index.md#priv_uninstallfilter).
+
+The [privacy group ID](../../../private-networks/concepts/privacy/index.md) must be specified as parameter 0 for the `priv` methods.
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "priv_newFilter",
+ "params": [
+ "4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=",
+ {
+ "fromBlock": "earliest",
+ "toBlock": "latest",
+ "addresses": ["0x991cc548c154b2953cc48c02f782e1314097dfbb"],
+ "topics": [
+ "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"
+ ]
+ }
+ ],
+ "id": 1
+}
+```
+
+## Get logs using a filter options object
+
+To get all logs for a filter options object, use [`eth_getLogs`](../../reference/api/index.md#eth_getlogs) or [`priv_getLogs`](../../reference/api/index.md#priv_getlogs) for a private contract.
+
+The following request for `eth_getLogs` returns all the logs where the example contract has been deployed to `0x42699a7612a82f1d9c36148af9c77354759b210b` and executed with `valueIndexed` set to 5.
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getLogs",
+ "params": [
+ {
+ "fromBlock": "earliest",
+ "toBlock": "latest",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "topics": [
+ ["0xd3610b1c54575b7f4f0dc03d210b8ac55624ae007679b7a928a4f25a709331a8"],
+ ["0x0000000000000000000000000000000000000000000000000000000000000005"]
+ ]
+ }
+ ],
+ "id": 1
+}
+```
+
+The above example returns the same result as calling [eth_newFilter](#creating-a-filter) followed by [eth_getFilterLogs](#getting-all-logs-for-a-filter).
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/authenticate.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/authenticate.md
new file mode 100644
index 00000000000..d0a251c3bf9
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/authenticate.md
@@ -0,0 +1,326 @@
+---
+title: Authenticate over JSON-RPC requests
+sidebar_position: 4
+description: Hyperledger Besu authentication and authorization for JSON-RPC
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Authenticate and authorize JSON-RPC
+
+Authentication identifies a user, and authorization verifies user access to requested JSON-RPC methods. Hyperledger Besu verifies users using [JSON Web Tokens (JWT)](https://jwt.io/introduction/). JWT is also used in [multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md) to verify tenant data access.
+
+Besu supports two mutually exclusive authentication methods:
+
+- [Username and password](#username-and-password-authentication)
+- [JWT public key](#jwt-public-key-authentication).
+
+Besu creates JWT internally with [username and password authentication](#username-and-password-authentication), and externally with [JWT public key authentication](#jwt-public-key-authentication).
+
+:::info
+
+Using JSON-RPC authentication and authorization with [MetaMask](https://metamask.io/) is not supported.
+
+:::
+
+:::caution
+
+To prevent interception of authentication credentials and authenticated tokens, make authenticated requests over HTTPS. We recommend running production deployments behind a network layer that provides SSL termination. Besu does not provide a HTTPS connection natively.
+
+:::
+
+## Username and password authentication
+
+Enable authentication from the command line. Supply the credentials file and send a request to the `/login` endpoint using the username and password. The `/login` endpoint creates a JWT for making permitted JSON-RPC requests.
+
+Using [public key authentication](#jwt-public-key-authentication) disables the `/login` endpoint.
+
+### 1. Create the credentials file
+
+The `toml` credentials file defines user details and the JSON-RPC methods they can access.
+
+:::info Sample `auth.toml` credentials file
+
+```toml
+[Users.username1]
+password = "$2a$10$l3GA7K8g6rJ/Yv.YFSygCuI9byngpEzxgWS9qEg5emYDZomQW7fGC"
+permissions=["net:*","eth:blockNumber"]
+privacyPublicKey="U7ANiOOd5L9Z/dMxRFjdbhA1Qragw6fLuYgmgCvLoX4="
+
+[Users.username2]
+password = "$2b$10$6sHt1J0MVUGIoNKvJiK33uaZzUwNmMmJlaVLkIwinkPiS1UBnAnF2"
+permissions=["net:version","admin:*"]
+privacyPublicKey="quhb1pQPGN1w8ZSZSyiIfncEAlVY/M/rauSyQ5wVMRE="
+```
+
+:::
+
+Each user requiring JSON-RPC access the configuration file lists the:
+
+- Username. `Users.` is mandatory and followed by the username. That is, replace `` in `[Users.]` with the username.
+- Hash of the user password. Use the [`password hash`](../../reference/cli/subcommands.md#password) subcommand to generate the hash.
+- [JSON-RPC permissions](#json-rpc-permissions).
+- Optional. The tenant's Tessera public key using `privacyPublicKey`. Only used for [multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md).
+
+
+
+
+
+```bash
+besu password hash --password=MyPassword
+```
+
+
+
+
+
+```text
+$2a$10$L3Xb5G/AJOsEK5SuOn9uzOhpCCfuVWTajc5hwWerY6N5xBM/xlrMK
+```
+
+
+
+
+
+### 2. Enable authentication
+
+Enable authentication for the JSON-RPC API using the
+[`--rpc-http-authentication-enabled`](../../reference/cli/options.md#rpc-http-authentication-enabled)
+or [`--rpc-ws-authentication-enabled`](../../reference/cli/options.md#rpc-ws-authentication-enabled) option.
+
+Specify the [credentials file](#1-create-the-credentials-file) using the
+[`--rpc-http-authentication-credentials-file`](../../reference/cli/options.md#rpc-http-authentication-credentials-file)
+or [`--rpc-ws-authentication-credentials-file`](../../reference/cli/options.md#rpc-ws-authentication-credentials-file) option.
+
+:::note
+With authentication enabled, you can specify methods that don't require authentication using
+[`--rpc-http-api-methods-no-auth`](../../reference/cli/options.md#rpc-http-api-methods-no-auth) or
+[`--rpc-ws-api-methods-no-auth`](../../reference/cli/options.md#rpc-ws-api-methods-no-auth).
+:::
+
+### 3. Generate an authentication token
+
+To generate an authentication token, make a request to the `/login` endpoint with your username and password. Specify the HTTP port or the WS port to generate a token to authenticate over HTTP or WS respectively. HTTP and WS requires a different token.
+
+
+
+
+
+```bash
+curl -X POST --data '{"username":"username1","password":"MyPassword"}' /login
+```
+
+
+
+
+
+```bash
+curl -X POST --data '{"username":"username1","password":"MyPassword"}' http://localhost:8545/login
+```
+
+
+
+
+
+```bash
+curl -X POST --data '{"username":"username1","password":"MyPassword"}' /login
+```
+
+
+
+
+
+```bash
+curl -X POST --data '{"username":"username1","password":"MyPassword"}' http://localhost:8546/login
+```
+
+
+
+
+
+```json
+{
+ "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6WyIqOioiXSwidXNlcm5hbWUiOiJ1c2VyMiIsImlhdCI6MTU1MDQ2MDYwNCwiZXhwIjoxNTUwNDYwOTA0fQ.l2Ycqzl_AyvReXBeUSayOlOMS_E8-DCuz3q0Db0DKD7mqyl6q-giWoEtfdWzUEvZbRRi2_ecKO3N6JkXq7zMKQAJbVAEzobfbaaXWcQEpHOjtnK4_Yz-UPyKiXtu7HGdcdl5Tfx3dKoksbqkBl3U3vFWxzmFnuu3dAISfVJYUNA"
+}
+```
+
+
+
+
+
+Authentication tokens expire five minutes after generation. If you require access after the token expires, you need to generate a new token.
+
+## JWT public key authentication
+
+Enable authentication from the command line and supply the external JWT provider's public key.
+
+:::caution
+
+JWT public authentication disables the Besu `/login` endpoint, meaning [username and password authentication](#username-and-password-authentication) will not work.
+
+:::
+
+### 1. Generate a private and public key pair
+
+The private and accompanying public key files must be in `.pem` format.
+
+The [key algorithm](https://datatracker.ietf.org/doc/html/rfc7518#section-3.1) can be:
+
+- RSA with private key length of at least 2048 bits using algorithm `RS256`, `RS384`, or `RS512`.
+- ECDSA private key, using `ES256` (`secp256r1` or `secp256k1`), `ES384`, or `ES512`.
+
+The default value for Besu is `RS256`.
+When you use a different key algorithm, you must specify the
+[`--rcp-http-authentication-jwt-algorithm`](../../reference/cli/options#rpc-http-authentication-jwt-algorithm)
+option and/or the
+[`--rcp-ws-authentication-jwt-algorithm`](../../reference/cli/options#rpc-ws-authentication-jwt-algorithm)
+option depending on your needs.
+
+
+
+
+1. Generate the private key:
+
+ ```bash
+ openssl genrsa -out privateRSAKey.pem 2048
+ ```
+
+2. Generate the public key:
+
+ ```bash
+ openssl rsa -pubout -in privateRSAKey.pem -pubout -out publicRSAKey.pem
+ ```
+
+
+
+
+
+1. Generate the private key:
+
+ ```bash
+ openssl ecparam -name secp256r1 -genkey -out privateECDSAKey.pem
+ ```
+
+2. Generate the public key:
+
+ ```bash
+ openssl ec -in privateECDSAKey.pem -pubout -out publicECDSAKey.pem
+ ```
+
+
+
+
+
+:::danger Private key security
+
+The private key must be kept secret. Never share private keys publicly or on a Web site, even if advertised as secure.
+
+Always keep your private keys safe -- ideally using [hardware](https://connect2id.com/products/nimbus-jose-jwt/examples/pkcs11) or [vault](https://www.vaultproject.io/docs/secrets/identity/identity-token) -- and define a strong security policy and [best practices](https://auth0.com/docs/best-practices/token-best-practices).
+
+Compromised keys can provide attackers access to your node's RPC-API.
+
+:::
+
+### 2. Create the JWT
+
+Create the JWT using a trusted authentication provider[^1] or [library](https://jwt.io/libraries) in your own code.
+
+[^1]: for example [Auth0](https://auth0.com/) or [Keycloak](https://www.keycloak.org/)
+
+See [Java code sample to generate JWT using Vertx](https://github.com/NicolasMassart/java-jwt-sample-generation/) for an example implementation.
+
+:::caution Important
+
+The JWT must use one of the `RS256`, `RS384`, `RS512`, `ES256`, `ES384`, or `ES512` algorithms.
+
+:::
+
+Each payload for the JWT must contain:
+
+- [JSON-RPC permissions](#json-rpc-permissions)
+- [`exp` (Expiration Time) claim](https://tools.ietf.org/html/rfc7519#section-4.1.4)
+- Optionally, the tenant's Tessera public key using `privacyPublicKey`. Only used for [multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md).
+
+
+
+
+
+```json
+{
+ "permissions": ["*:*"],
+ "privacyPublicKey": "2UKH3VJThkOoKskrLFpwoxCnnRARyobV1bEdgseFHTs=",
+ "exp": 1600899999002
+}
+```
+
+
+
+
+
+![Example result](jwt.png)
+
+
+
+
+
+### 3. Enable authentication
+
+Enable authentication for the JSON-RPC API using the
+[`--rpc-http-authentication-enabled`](../../reference/cli/options.md#rpc-http-authentication-enabled)
+or [`--rpc-ws-authentication-enabled`](../../reference/cli/options.md#rpc-ws-authentication-enabled) option.
+
+Specify the JWT provider's public key file to use with the externally created JWT, using the
+[`--rpc-http-authentication-jwt-public-key-file`](../../reference/cli/options.md#rpc-http-authentication-jwt-public-key-file)
+or [`--rpc-ws-authentication-jwt-public-key-file`](../../reference/cli/options.md#rpc-ws-authentication-jwt-public-key-file) option.
+
+:::note
+With authentication enabled, you can specify methods that don't require authentication using
+[`--rpc-http-api-methods-no-auth`](../../reference/cli/options.md#rpc-http-api-methods-no-auth) or
+[`--rpc-ws-api-methods-no-auth`](../../reference/cli/options.md#rpc-ws-api-methods-no-auth).
+:::
+
+## JSON-RPC permissions
+
+Each user has a list of permissions strings defining the methods they can access. To give access to:
+
+- All API methods, specify `["*:*"]`.
+- All API methods in an API group, specify `[":*"]`. For example, `["eth:*"]`.
+- Specific API methods, specify `[":"]`. For example, `["admin:peers"]`.
+
+With authentication enabled, to explicitly specify a user cannot access any methods, include the user with an empty permissions list (`[]`). Users with an empty permissions list and users not included in the credentials file cannot access any JSON-RPC methods.
+
+## Use an authentication token to make requests
+
+Specify the authentication token as a `Bearer` token in the JSON-RPC request header.
+
+### Postman
+
+In the **Authorization** tab in the **TYPE** drop-down list, select **Bearer Token** and specify the token (generated either [externally](#2-create-the-jwt) or by the [`login` request](#3-generate-an-authentication-token)).
+
+### cURL
+
+Specify the `Bearer` in the header.
+
+
+
+
+
+```bash
+curl -X POST -H 'Authorization: Bearer ' -d '{"jsonrpc":"2.0","method":"","params":[],"id":1}'
+```
+
+
+
+
+
+```bash
+curl -X POST -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6WyIqOioiXSwidXNlcm5hbWUiOiJ1c2VyMiIsImlhdCI6MTU1MDQ2MTQxNiwiZXhwIjoxNTUwNDYxNzE2fQ.WQ1mqpqzRLHaoL8gOSEZPvnRs_qf6j__7A3Sg8vf9RKvWdNTww_vRJF1gjcVy-FFh96AchVnQyXVx0aNUz9O0txt8VN3jqABVWbGMfSk2T_CFdSw5aDjuriCsves9BQpP70Vhj-tseaudg-XU5hCokX0tChbAqd9fB2138zYm5M' -d '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":1}' http://localhost:8545
+```
+
+
+
+
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/graphql.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/graphql.md
new file mode 100644
index 00000000000..51722c07e94
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/graphql.md
@@ -0,0 +1,205 @@
+---
+title: Use GraphQL over HTTP
+sidebar_position: 3
+description: How to access the Hyperledger Besu API using GraphQL
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Use GraphQL over HTTP
+
+GraphQL can reduce the overhead needed for common queries.
+For example, instead of querying each receipt in a block, GraphQL can get the same result with a
+single query for the entire block.
+
+The [Besu GraphQL schema] describes the GraphQL implementation for Ethereum.
+Enable the GraphQL service using [command line options](index.md#enable-api-access).
+
+:::note
+
+GraphQL is not supported over WebSocket.
+
+:::
+
+Access the GraphQL endpoint at `http://:/graphql`.
+Configure `` and `` using [`graphql-http-host`](../../reference/cli/options.md#graphql-http-host)
+and [`graphql-http-port`](../../reference/cli/options.md#graphql-http-port).
+The default endpoint is `http://127.0.0.1:8547/graphql`.
+
+## GraphQL requests with cURL
+
+[Hyperledger Besu JSON-RPC API methods](../../reference/api/index.md) with an equivalent
+[GraphQL](graphql.md) query include a GraphQL request and result in the method example.
+
+For example, the following request returns the block number:
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block{number}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```json
+{
+ "data" : {
+ "block" : {
+ "number" : "0x281"
+ }
+ }
+}
+```
+
+
+
+
+The following request returns the gas price:
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{gasPrice}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```json
+{
+ "data" : {
+ "gasPrice" : "0x0"
+ }
+}
+```
+
+
+
+
+The following [`syncing`](../../reference/api/index.md#eth_syncing) request returns data about the
+synchronization status:
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{syncing{startingBlock currentBlock highestBlock}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```json
+{
+ "data" : {
+ "syncing" : {
+ "startingBlock" : 665,
+ "currentBlock" : 3190,
+ "highestBlock" : 26395
+ }
+ }
+}
+```
+
+
+
+
+:::info note
+In some cases, for example, when your node is fully synced, the syncing request returns a `null` response:
+
+```json
+{
+ "data" : {
+ "syncing" : null
+ }
+}
+```
+:::
+
+## GraphQL requests with GraphiQL app
+
+The third-party tool, [GraphiQL](https://github.com/skevy/graphiql-app), provides a tabbed interface
+for editing and testing GraphQL queries and mutations.
+GraphiQL also provides access to the [Besu GraphQL schema] from within the app.
+
+![GraphiQL](../../../assets/images/GraphiQL.png)
+
+## Pending
+
+`transactionCount` and `transactions` supports the Pending query.
+
+:::info
+
+Besu does not execute pending transactions so results from `account`, `call`, and `estimateGas` for
+Pending do not reflect pending transactions.
+
+:::
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactionCount}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "pending": {
+ "transactionCount": 2
+ }
+ }
+}
+```
+
+
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactions{hash}}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "pending": {
+ "transactions": [
+ {
+ "hash": "0xbb3ab8e2113a4afdde9753782cb0680408c0d5b982572dda117a4c72fafbf3fa"
+ },
+ {
+ "hash": "0xf6bd6b1bccf765024bd482a71c6855428e2903895982090ab5dbb0feda717af6"
+ }
+ ]
+ }
+ }
+}
+```
+
+
+
+
+
+
+[Besu GraphQL schema]: https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/ethereum/api/src/main/resources/schema.graphqls
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/index.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/index.md
new file mode 100644
index 00000000000..381c2e4ba93
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/index.md
@@ -0,0 +1,104 @@
+---
+description: Hyperledger Besu API
+tags:
+ - public networks
+ - private networks
+---
+
+# Access the Hyperledger Besu API
+
+Access the [Hyperledger Besu API](../../reference/api/index.md) using:
+
+- [JSON-RPC over HTTP, WebSocket, or IPC](json-rpc.md)
+- [RPC Pub/Sub over WebSockets](rpc-pubsub.md)
+- [GraphQL over HTTP](graphql.md).
+
+:::note
+
+HTTP and WebSocket responses are compact JSON by default. You can use [`--json-pretty-print-enabled`](../../reference/cli/options.md#json-pretty-print-enabled) to pretty-print the output.
+
+:::
+
+The following sections provide information about JSON-RPC, RPC Pub/Sub, and GraphQL.
+
+## Enable API access
+
+To enable API access, use the [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled), [`--ws-http-enabled`](../../reference/cli/options.md#rpc-ws-enabled), [`--graphql-http-enabled`](../../reference/cli/options.md#graphql-http-enabled), and `--Xrpc-ipc-enabled` options.
+
+:::caution
+
+`--Xrpc-ipc-enabled` is an early access option.
+
+:::
+
+## Service hosts
+
+To specify the host the API service listens on, use the [`--rpc-http-host`](../../reference/cli/options.md#rpc-http-host), [`--rpc-ws-host`](../../reference/cli/options.md#rpc-ws-host), and [`--graphql-http-host`](../../reference/cli/options.md#graphql-http-host) options. The default host is `127.0.0.1`.
+
+To allow remote connections, set the host to `0.0.0.0`.
+
+:::caution
+
+Setting the host to `0.0.0.0` exposes the API service connection on your node to any remote connection. In a production environment, ensure you use a firewall to avoid exposing your node to the internet.
+
+:::
+
+## Service ports
+
+To specify the port the API service listens on, use the [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port), [`--rpc-ws-port`](../../reference/cli/options.md#rpc-ws-port), and [`--graphql-http-port`](../../reference/cli/options.md#graphql-http-port) options.
+
+The default ports are:
+
+- 8545 for JSON-RPC over HTTP.
+- 8546 for JSON-RPC over WebSocket.
+- 8547 for GraphQL over HTTP.
+
+Ports must be [exposed appropriately](../connect/configure-ports.md).
+
+## Socket path
+
+To specify the socket path for the IPC socket, use the `--Xrpc-ipc-path` option. The default path is `besu.ipc` in the Besu data directory.
+
+:::caution
+
+`--Xrpc-ipc-path` is an early access option.
+
+:::
+
+## Host allowlist
+
+To prevent DNS rebinding attacks, Besu checks incoming HTTP request host headers, WebSocket connections, and GraphQL requests. Besu accepts requests only when hostnames specified using the [`--host-allowlist`](../../reference/cli/options.md#host-allowlist) option matches the request host headers. By default, Besu accepts requests and connections from `localhost` and `127.0.0.1`.
+
+:::info
+
+This isn't a permissioning feature. To restrict access to the API, we recommend using the [Besu authentication mechanism](authenticate.md) with username and password authentication or JWT public key authentication.
+
+:::
+
+If your application publishes RPC ports, specify the hostnames when starting Besu.
+
+```bash
+besu --host-allowlist=example.com
+```
+
+Specify `*` for `--host-allowlist` to effectively disable host protection.
+
+:::caution
+
+Specifying `*` for `--host-allowlist` is not recommended for production code.
+
+:::
+
+## Not supported by Besu
+
+### Account management
+
+Account management relies on private key management in the client, which is not supported by Besu.
+
+To send signed transactions, use [`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction). `eth_sendTransaction` is not implemented.
+
+For [account management](../send-transactions.md#use-wallets-for-key-management), use third-party wallets.
+
+### Protocols
+
+Besu does not support the Whisper and Swarm protocols.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/json-rpc.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/json-rpc.md
new file mode 100644
index 00000000000..df52bfe67f2
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/json-rpc.md
@@ -0,0 +1,342 @@
+---
+title: Use JSON-RPC over HTTP, WS, and IPC
+sidebar_position: 1
+description: How to access the Hyperledger Besu API using JSON-RPC
+tags:
+ - public networks
+ - private networks
+---
+
+import Postman from '../../../global/postman.md';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Use JSON-RPC over HTTP, WebSocket, and IPC
+
+JSON-RPC APIs allow you to interact with your node. JSON-RPC endpoints are not enabled by default.
+
+:::caution
+
+You should secure access to your node's JSON-RPC endpoints. Users with access to your node via JSON-RPC can make calls directly to your node, causing your node to consume resources.
+
+:::
+
+To enable JSON-RPC over HTTP or WebSocket, use the [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) and [`--rpc-ws-enabled`](../../reference/cli/options.md#rpc-ws-enabled) options.
+
+To enable JSON-RPC over an [IPC socket](index.md#socket-path), use the `--Xrpc-ipc-enabled` option.
+
+:::caution
+
+`--Xrpc-ipc-enabled` is an early access option.
+
+:::
+
+
+
+## Geth console
+
+The geth console is a REPL (Read, Evaluate, & Print Loop) JavaScript console. Use JSON-RPC APIs supported by geth and Hyperledger Besu directly in the console.
+
+To use the geth console with Besu:
+
+1. Start Besu with the [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) or `--Xrpc-ipc-enabled` option.
+1. Specify which APIs to enable using the [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) or `--Xrpc-ipc-api` option.
+1. Start the geth console specifying the JSON-RPC endpoint:
+
+
+
+
+
+```bash
+geth attach http://localhost:8545
+```
+
+
+
+
+
+```bash
+geth attach /path/to/besu.ipc
+```
+
+
+
+
+
+Use the geth console to call [JSON-RPC API methods](../../reference/api/index.md) that geth and Besu share.
+
+```bash
+eth.syncing
+```
+
+## JSON-RPC authentication
+
+Besu disables [Authentication](authenticate.md) by default.
+
+## HTTP and WebSocket requests
+
+### HTTP
+
+To make RPC requests over HTTP, you can use [`curl`](https://curl.haxx.se/download.html).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","id":,"method":"","params":[]}'
+```
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}' http://127.0.0.1:8555
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": "1",
+ "result": "0x60e"
+}
+```
+
+
+
+
+
+You can use `curl` to make multiple RPC requests (batch requests) over HTTP at the same time. Send the requests as an array, and receive an array of responses. The default number of allowed requests in a RPC batch request is `1024`. Use the [`--rpc-http-max-batch-size`](../../reference/cli/options.md#rpc-http-max-batch-size) command line option to update the default value.
+
+
+
+
+
+```bash
+curl -X POST --data '[{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}, {"jsonrpc":"2.0","id":"2","method":"admin_peers","params":[]}]' http://127.0.0.1:8555
+```
+
+
+
+
+
+```json
+[
+ {
+ "jsonrpc": "2.0",
+ "id": "1",
+ "result": "0x60e"
+ },
+ {
+ "jsonrpc": "2.0",
+ "id": "2",
+ "result": []
+ }
+]
+```
+
+
+
+
+
+### WebSocket
+
+To make RPC requests over WebSocket, you can use [`wscat`](https://github.com/websockets/wscat), a Node.js based command-line tool.
+
+First connect to the WebSocket server using `wscat` (you only need to connect once per session):
+
+```bash
+wscat -c ws://
+```
+
+After you establish a connection, the terminal displays a '>' prompt. Send individual requests as a JSON data package at each prompt.
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","id":,"method":"","params":[]}
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": "1",
+ "result": "0x23"
+}
+```
+
+
+
+
+
+You can use `wscat` to make multiple RPC requests over WebSocket at the same time. Send the requests as an array, and receive an array of responses.
+
+
+
+
+
+```bash
+[{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}, {"jsonrpc":"2.0","id":"2","method":"admin_peers","params":[]}]
+```
+
+
+
+
+
+```json
+[
+ {
+ "jsonrpc": "2.0",
+ "id": "1",
+ "result": "0x23"
+ },
+ {
+ "jsonrpc": "2.0",
+ "id": "2",
+ "result": []
+ }
+]
+```
+
+
+
+
+
+:::note
+
+`wscat` does not support headers. [Authentication](authenticate.md) requires you to pass an authentication token in the request header. To use authentication with WebSocket, you need an app that supports headers.
+
+:::
+
+## Readiness and liveness endpoints
+
+Besu provides readiness and liveness endpoints to confirm the Besu node status. Both return a `200 OK` status when ready or live and a `503 Service Unavailable` status if not ready or live.
+
+### Readiness
+
+By default, the readiness check requires a connected peer and the node to be within two blocks of the best known block. If you have [disabled P2P communication](../../reference/cli/options.md#p2p-enabled), you do not need peers. A live node with P2P disabled is always ready.
+
+Use the query parameters `minPeers` and `maxBlocksBehind` to adjust the number of peers required and the number of blocks tolerance.
+
+
+
+
+
+```bash
+http:///readiness
+```
+
+
+
+
+
+```bash
+curl -v 'http://localhost:8545/readiness'
+```
+
+
+
+
+
+```bash
+curl -v 'http://localhost:8545/readiness?minPeers=0&maxBlocksBehind=10'
+```
+
+
+
+
+
+### Liveness
+
+The liveness check requires the JSON-RPC server to be up. You can use the endpoint to verify that the node can respond to RPC calls. The status in the response will always be `UP`.
+
+
+
+
+
+```bash
+http:///liveness
+```
+
+
+
+
+
+```bash
+curl -v 'http://localhost:8545/liveness'
+```
+
+
+
+
+
+## API methods enabled by default
+
+Besu enables the `ETH`, `NET`, and `WEB3` API methods by default.
+
+To enable the `ADMIN`, `CLIQUE`, `DEBUG`, `EEA`, `IBFT`, `MINER`, `PERM`, `PLUGINS`, `PRIV`, `TRACE`, and `TXPOOL` API methods, use the [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api), [`--rpc-ws-api`](../../reference/cli/options.md#rpc-ws-api), or `--Xrpc-ipc-api` options.
+
+:::caution
+
+`--Xrpc-ipc-api` is an early access option.
+
+:::
+
+## Block parameter
+
+When you make requests that might have different results depending on the block accessed, the block
+parameter specifies the block.
+Methods such as [`eth_getTransactionByBlockNumberAndIndex`](../../reference/api/index.md#eth_gettransactionbyblocknumberandindex)
+have a block parameter.
+
+The block parameter can have one of the following values:
+
+- `blockNumber` : _quantity_ - The block number, specified in hexadecimal or decimal.
+ `0` represents the genesis block.
+- `blockHash` : _string_ or _object_ - 32-byte block hash or JSON object specifying the block hash.
+ If using a JSON object, you can specify `requireCanonical` to indicate whether the block must be a
+ canonical block.
+ See [this example](https://github.com/hyperledger/besu/blob/a2dedb0b2c7980cdc35db8eb4c094f2eb0dc7deb/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/eth/eth_getBalance_blockHashObjectCanonical.json).
+
+ :::note
+
+ Only the following methods support the `blockHash` parameter:
+
+ - [`eth_call`](../../reference/api/index.md#eth_call)
+ - [`eth_getBalance`](../../reference/api/index.md#eth_getbalance)
+ - [`eth_getCode`](../../reference/api/index.md#eth_getcode)
+ - [`eth_getProof`](../../reference/api/index.md#eth_getproof)
+ - [`eth_getStorageAt`](../../reference/api/index.md#eth_getstorageat)
+ - [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount)
+
+ :::
+
+- `earliest` : _tag_ - The earliest (genesis) block.
+- `latest` : _tag_ - The last block mined.
+- `pending` : _tag_ - When used with [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount),
+ refers to the last block mined plus pending transactions.
+ When used with [`qbft_getValidatorsByBlockNumber`](../../../private-networks/reference/api/index.md#qbft_getvalidatorsbyblocknumber),
+ returns a list of validators that will be used to produce the next block.
+- `finalized` : _tag_ - The most recent crypto-economically secure block.
+ It cannot be reorganized outside manual intervention driven by community coordination.
+- `safe` : _tag_ - The most recent block that is safe from reorganization under honest majority and
+ certain synchronicity assumptions.
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/jwt.png b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/jwt.png
new file mode 100644
index 00000000000..ee676469c77
Binary files /dev/null and b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/jwt.png differ
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/rpc-pubsub.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/rpc-pubsub.md
new file mode 100644
index 00000000000..d0ed530b497
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-besu-api/rpc-pubsub.md
@@ -0,0 +1,550 @@
+---
+title: Use RPC Pub/Sub over WS
+sidebar_position: 2
+description: Using RPC Pub/Sub with Hyperledger Besu WebSockets
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Use RPC Pub/Sub over WebSockets
+
+## Introduction
+
+Subscribe to events by using either RPC Pub/Sub over WebSockets or [filters over HTTP](access-logs.md).
+
+Use RPC Pub/Sub over WebSockets to wait for events instead of polling for them. For example, dapps subscribe to logs and receive notifications when a specific event occurs.
+
+Methods specific to RPC Pub/Sub are:
+
+- `eth_subscribe` and `eth_unsubscribe` - create or cancel a subscription for specific events.
+- `priv_subscribe` and `priv_unsubscribe` - create or cancel a subscription for [private logs](../../../private-networks/concepts/privacy/index.md).
+
+:::info
+
+Unlike other [Hyperledger Besu API methods](../../reference/api/index.md), you cannot call the RPC Pub/Sub methods over HTTP. Use the [`--rpc-ws-enabled`](../../reference/cli/options.md#rpc-ws-enabled) option to enable the WebSockets JSON-RPC service.
+
+:::
+
+### Use RPC Pub/Sub
+
+[WebSockets](json-rpc.md#http-and-websocket-requests) supports the RPC Pub/Sub API.
+
+To create subscriptions, use `eth_subscribe` or `priv_subscribe`. Once subscribed, the API publishes notifications using `eth_subscription` or `priv_subscription`.
+
+Subscriptions couple with connections. If a connection is closed, all subscriptions created over the connection are removed.
+
+### Subscription ID
+
+`eth_subscribe` and `priv_subscribe` return a subscription ID for each subscription created. Notifications include the subscription ID.
+
+For example, to create a synchronizing subscription:
+
+```json
+{ "id": 1, "method": "eth_subscribe", "params": ["syncing"] }
+```
+
+The result includes the subscription ID of `"0x1"`:
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }
+```
+
+The notifications also include the subscription ID of `"0x1"`:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x1",
+ "result": {
+ "startingBlock": "0x0",
+ "currentBlock": "0x50",
+ "highestBlock": "0x343c19"
+ }
+ }
+}
+```
+
+### Notifications when synchronizing
+
+Subscribing to some events (for example, logs) can cause a flood of notifications while the node is synchronizing.
+
+## Subscribe
+
+Use `eth_subscribe` to create subscriptions for the following event types:
+
+- [Use RPC Pub/Sub over WebSockets](#use-rpc-pubsub-over-websockets)
+ - [Introduction](#introduction)
+ - [Use RPC Pub/Sub](#use-rpc-pubsub)
+ - [Subscription ID](#subscription-id)
+ - [Notifications when synchronizing](#notifications-when-synchronizing)
+ - [Subscribe](#subscribe)
+ - [New headers](#new-headers)
+ - [Logs](#logs)
+- [All logs](#all-logs)
+- [Specific address, topic, fromBlock and toBlock](#specific-address-topic-fromblock-and-toblock)
+- [Result](#result)
+- [Notification](#notification)
+- [All logs for privacy group](#all-logs-for-privacy-group)
+- [Specific address and topic](#specific-address-and-topic)
+- [Result](#result-1)
+- [Notification](#notification-1)
+ - [Pending transactions](#pending-transactions)
+ - [Dropped transactions](#dropped-transactions)
+ - [Synchronizing](#synchronizing)
+ - [Unsubscribe](#unsubscribe)
+
+Use `priv_subscribe` to [create subscriptions for logs on private contracts](#logs).
+
+:::tip
+
+Only logs subscriptions are relevant for private transactions because private transactions are anchored to the public chain rather than having their own private blockchain.
+
+:::
+
+### New headers
+
+To notify you about each block added to the blockchain, use the `newHeads` parameter with `eth_subscribe`.
+
+If a chain reorganization occurs, the subscription publishes notifications for blocks in the new chain. This means the subscription can publish notifications for multiple blocks at the same height on the blockchain.
+
+The new headers notification returns [block objects](../../reference/api/objects.md#block-object). The second parameter is optional. If specified, the notifications include whole [transaction objects](../../reference/api/objects.md#transaction-object), Otherwise, the notifications include transaction hashes.
+
+To subscribe to new header notifications:
+
+```json
+{
+ "id": 1,
+ "method": "eth_subscribe",
+ "params": ["newHeads", { "includeTransactions": true }]
+}
+```
+
+Example result:
+
+```json
+{ "jsonrpc": "2.0", "id": 2, "result": "0x1" }
+```
+
+Example notification without the `{"includeTransactions": true}` parameter included:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x1",
+ "result": {
+ "number": "0x40c22",
+ "hash": "0x16af2ee1672203c7ac13ff280822008be0f38e1e5bdc675760015ae3192c0e3a",
+ "parentHash": "0x1fcf5dadfaf2ab4d985eb05d40eaa23605b0db25d736610c4b87173bfe438f91",
+ "nonce": "0x0000000000000000",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "logsBloom": "0x00008000000000080000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000040000000000000000000000000000000000000400000000010000000000000000100000000000020000000000000000000000000000000000010000000000000000000000000000000000000000000",
+ "transactionsRoot": "0x5b2e3c1a49352f1ca9fb5dfe74b7ffbbb6d70e23a12693444e26058d8a8e6296",
+ "stateRoot": "0xbe8d3bc58bd982421a3ea8b66753404502df0f464ae78a17661d157c406dd38b",
+ "receiptsRoot": "0x81b175ec1f4d44fbbd6ba08f1bd3950663b307b7cb35751c067b535cc0b58f12",
+ "miner": "0x0000000000000000000000000000000000000000",
+ "difficulty": "0x1",
+ "totalDifficulty": "0x7c16e",
+ "extraData": "0xd783010600846765746887676f312e372e33856c696e757800000000000000002160f780bb1f61eda045c67cdb1297ba37d8349df8035533cb0cf82a7e45f23f3d72bbec125a9f499b3eb110b7d1918d466cb2ede90b38296cfe2aaf452c513f00",
+ "size": "0x3a1",
+ "gasLimit": "0x47e7c4",
+ "gasUsed": "0x11ac3a",
+ "timestamp": "0x592afc24",
+ "uncles": [],
+ "transactions": [
+ "0x419c69d21b14e2e8f911def22bb6d0156c876c0e1c61067de836713043364d6c",
+ "0x70a5b2cb2cee6e0b199232a1757fc2a9d6053a4691a7afef8508fd88aeeec703",
+ "0x4b3035f1d32339fe1a4f88147dc197a0fe5bbd63d3b9dec2dad96a3b46e4fddd"
+ ]
+ }
+ }
+}
+```
+
+Example notification with the `{"includeTransactions": true}` parameter included:
+
+```json
+{
+"jsonrpc": "2.0",
+"method": "eth_subscription",
+"params":{
+ "subscription":"0x1",
+ "result": {
+ ....
+ "transactions":[
+ {
+ "blockHash":"0xa30ee4d7c271ae5150aec494131c5f1f34089c7aa8fb58bd8bb916a55275bb90",
+ "blockNumber":"0x63",
+ "from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas":"0x5208",
+ "gasPrice":"0x3b9aca00",
+ "hash":"0x11f66c3e96a92e3c14c1c33ad77381221bf8b58a887b4fed6aee456fc6f39b24",
+ "input":"0x",
+ "nonce":"0x1",
+ "to":"0x627306090abab3a6e1400e9345bc60c78a8bef57",
+ "transactionIndex":"0x0",
+ "value":"0x56bc75e2d63100000",
+ "v":"0xfe8",
+ "r":"0x4b57d179c74885ef5f9326fd000665ea7fae44095c1e2016a2817fc671beb8cc",
+ "s":"0x7ec060b115746dda392777df07ae1feacc0b83b3646f0a3de9a5fc3615af9bb8",
+ }
+ ],
+ },
+ }
+}
+```
+
+### Logs
+
+To notify you about [logs](../../concepts/events-and-logs.md) included in new blocks, use the `logs` parameter with `eth_subscribe` or `priv_subscribe`. Specify a filter object to receive notifications only for logs matching your filter.
+
+Logs subscriptions have an filter object parameter with the following fields:
+
+- `address` - (optional) Either an address or an array of addresses. Returns only logs created from these addresses.
+- `topics` - (optional) Returns only logs that match the [specified topics](../../concepts/events-and-logs.md#topic-filters).
+- `fromBlock` - (optional) The earliest block from which to return logs.
+- `toBlock` - (optional) The last block from which to return logs.
+
+For private contracts, the privacy group ID must be specified. Only members of a privacy group receive logs for a private contract subscription. If you create a subscription for a privacy group you are not a member of, you will not receive any notifications.
+
+If a chain reorganization occurs, the subscription publishes notifications for logs from the old chain with the `removed` property in the [log object](../../reference/api/objects.md#log-object) set to `true`. This means the subscription can publish notifications for multiple logs for the same transaction.
+
+The logs subscription returns [log objects](../../reference/api/objects.md#log-object).
+
+
+
+
+
+```json
+{ "id": 1, "method": "eth_subscribe", "params": ["logs", {}] }
+```
+
+# Specific address, topic, fromBlock and toBlock
+
+```json
+{
+ "id": 1,
+ "method": "eth_subscribe",
+ "params": [
+ "logs",
+ {
+ "address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd",
+ "topics": [
+ "0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"
+ ],
+ "fromBlock": "0x0",
+ "toBlock": "latest"
+ }
+ ]
+}
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": "0x2" }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x2",
+ "result": {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x2174",
+ "blockHash": "0x7bc83837534aa13df55ff7db77784b1d1ba666d4c4bdd223cae9fe09c7c37eba",
+ "transactionHash": "0x942179373e413824c6bc7045e92295aff91b679215446549b4aeb084da46495b",
+ "transactionIndex": "0x0",
+ "address": "0x9b8397f1b0fecd3a1a40cdd5e8221fa461898517",
+ "data": "0x",
+ "topics": [
+ "0x199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca072787",
+ "0x0000000000000000000000000000000000000000000000000000000000000005"
+ ]
+ }
+ }
+}
+```
+
+
+
+
+
+
+
+
+
+```json
+{
+ "id": 1,
+ "method": "priv_subscribe",
+ "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs", {}]
+}
+```
+
+
+
+
+
+```json
+{
+ "id": 1,
+ "method": "priv_subscribe",
+ "params": [
+ "4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=",
+ "logs",
+ {
+ "address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd",
+ "topics": [
+ "0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"
+ ]
+ }
+ ]
+}
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "priv_subscription",
+ "params": {
+ "subscription": "0x1",
+ "privacyGroupId": "4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=",
+ "result": {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x285",
+ "blockHash": "0x98490766b16de2a4d044c04d92599d71e626bc96e42f0c74274ef4e03fafd579",
+ "transactionHash": "0x40034ef14e3a22946693dd2a11efddf3a8850ddcad46b408198df6c176c53ffb",
+ "transactionIndex": "0x0",
+ "address": "0x61f96a7ed09877197d4fff0c29b8e523913651a9",
+ "data": "0x",
+ "topics": [
+ "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410",
+ "0x0000000000000000000000000000000000000000000000000000000000000002"
+ ]
+ }
+ }
+}
+```
+
+
+
+
+
+### Pending transactions
+
+To notify you about pending transactions added to the transaction pool for the node, use the `newPendingTransactions` parameter with `eth_subscribe`.
+
+The pending transactions subscription returns the transaction hashes or transaction details of the pending transactions. If the `includeTransactions` parameter is not included, the default is transaction hashes only.
+
+If a chain reorganization occurs, Besu resubmits transactions for inclusion in the new canonical chain. This means the subscription can publish notifications for the same pending transaction more than once.
+
+To subscribe to pending transaction notifications and receive transaction hashes only:
+
+```json
+{
+ "id": 1,
+ "method": "eth_subscribe",
+ "params": ["newPendingTransactions", { "includeTransactions": false }]
+}
+```
+
+Example result:
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }
+```
+
+Example notification:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x1",
+ "result": "0x5705bc8bf875ff03e98adb98489428835892dc6ba6a6b139fee1becbc26db0b8"
+ }
+}
+```
+
+To subscribe to pending transaction notifications and receive transaction details:
+
+```json
+{
+ "id": 1,
+ "method": "eth_subscribe",
+ "params": ["newPendingTransactions", { "includeTransactions": true }]
+}
+```
+
+Example result:
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": "0x2" }
+```
+
+Example notification:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x2",
+ "result": {
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0x5208",
+ "gasPrice": "0x2540be400",
+ "hash": "0x7a4185f40ee93cb27eb132f301d0a5414c1f871051f166fc8804c376aab3ffec",
+ "input": "0x",
+ "nonce": "0x13",
+ "to": "0x9d8f8572f345e1ae53db1dfa4a7fce49b467bd7f",
+ "value": "0x8ac7230489e80000",
+ "v": "0xfe7",
+ "r": "0xdd9013c67469d2fe79afdc61777c55bdced33c90fa6f9b83d8f9b7e445085123",
+ "s": "0x45823a1ab22ae9c83876ea435dc5ecc4fe3a83c1bfbc340a5f57df2f5a474fa5"
+ }
+ }
+}
+```
+
+### Dropped transactions
+
+To notify you about transactions dropped from the transaction pool for the node, use the `droppedPendingTransactions` parameter with `eth_subscribe`.
+
+The dropped transactions subscription returns the transaction hashes of the dropped transactions.
+
+Dropped transactions can be re-added to the transaction pool from a variety of sources. For example, receiving a previously dropped transaction from a peer. As a result, it's possible to receive multiple dropped transaction notifications for the same transaction.
+
+To subscribe to dropped transaction notifications:
+
+```json
+{ "id": 1, "method": "eth_subscribe", "params": ["droppedPendingTransactions"] }
+```
+
+Example result:
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }
+```
+
+Example notification:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x1",
+ "result": "0xf57d6a90a7fb30880cfbdf6b432b487d0e94a3b55b34dc4b45e3b0b237ecab4c"
+ }
+}
+```
+
+### Synchronizing
+
+To notify you about synchronization progress, use the `syncing` parameter with `eth_subscribe`.
+
+When behind the chain head, the synchronizing subscription returns an object indicating the synchronization progress. When fully synchronized, returns `false`.
+
+To subscribe to synchronizing notifications:
+
+```json
+{ "id": 1, "method": "eth_subscribe", "params": ["syncing"] }
+```
+
+Example result:
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": "0x4" }
+```
+
+Example notification while synchronizing:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x4",
+ "result": {
+ "startingBlock": "0x0",
+ "currentBlock": "0x3e80",
+ "highestBlock": "0x67b93c"
+ }
+ }
+}
+```
+
+Example notification when synchronized with chain head:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x4",
+ "result": false
+ }
+}
+```
+
+## Unsubscribe
+
+To cancel a subscription, use the [subscription ID](#subscription-id) with `eth_unsubscribe` or `priv_unsubscribe`. Only the connection that created a subscription can unsubscribe from it.
+
+When cancelling a subscription for private logs, the privacy group ID must be specified.
+
+`eth_unsubscribe` and `priv_unsubscribe` return `true` if subscription successfully unsubscribed; otherwise, returns an error.
+
+To unsubscribe from a subscription with subscription ID of `0x1`:
+
+```json
+{ "id": 1, "method": "eth_unsubscribe", "params": ["0x1"] }
+```
+
+To unsubscribe from private logs subscription:
+
+```json
+{
+ "id": 1,
+ "method": "priv_unsubscribe",
+ "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "0x2"]
+}
+```
+
+Example result:
+
+```json
+{ "jsonrpc": "2.0", "id": 1, "result": true }
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-configuration-file/index.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-configuration-file/index.md
new file mode 100644
index 00000000000..3d7f1f34242
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-configuration-file/index.md
@@ -0,0 +1,83 @@
+---
+title: Use a configuration file
+sidebar_position: 3
+description: Specify options in the Besu configuration file.
+tags:
+ - public networks
+ - private networks
+---
+
+# Use a configuration file
+
+You can specify command line options in a TOML configuration file.
+Save the configuration file and reuse it across node startups.
+Specify the configuration file using the [`--config-file`](../../reference/cli/options.md#config-file) CLI option.
+
+You can also [use a pre-configured profile](profile.md) for some common use cases.
+
+:::note
+
+The configuration file is used for node-level settings. You can specify network-wide settings in the [genesis file](../../concepts/genesis-file.md).
+
+:::
+
+## Configuration order of precedence
+
+For options specified in multiple places, the order of precedence is as follows:
+
+1. Command line
+2. Environment variable
+3. Configuration file specified by `--config-file`
+4. [Pre-configured profile](profile.md) specified by `--profile`
+5. Default values (used if no other configuration source is available)
+
+For example, if you specify a `config.toml` configuration file and `staker` profile, and an option
+is not found in the environment variables, Besu looks for it in `config.toml`.
+If the option is not found in `config.toml`, Besu looks for it in `staker.toml`.
+If the option is not found in `staker.toml`, Besu uses the default value for that option.
+
+## TOML specification
+
+The configuration file must be a valid TOML file composed of key/value pairs. Each key is the same as the corresponding command line option name without the leading dashes (`--`).
+
+Values must conform to TOML specifications for string, numbers, arrays, and booleans. Specific differences between the command line and the TOML file format are:
+
+- Comma-separated lists on the command line are string arrays in the TOML file.
+- Enclose file paths, hexadecimal numbers, URLs, and <host:port> values in quotes.
+
+Table headings are ignored in TOML files. If you specify a valid Besu option under a table heading in the configuration file, Besu ignores the table heading and reads the option in the same way it does for options not under table headings.
+
+:::tip
+
+The [command line reference](../../reference/cli/options.md) includes configuration file examples for each option.
+
+:::
+
+```toml title="Sample TOML configuration file"
+# Valid TOML config file
+data-path="~/besudata" # Path
+
+# Network
+bootnodes=["enode://001@123:4567", "enode://002@123:4567", "enode://003@123:4567"]
+
+p2p-host="1.2.3.4"
+p2p-port=1234
+max-peers=42
+
+rpc-http-host="5.6.7.8"
+rpc-http-port=5678
+
+rpc-ws-host="9.10.11.12"
+rpc-ws-port=9101
+
+# Chain
+genesis-file="~/genesis.json" # Path to the custom genesis file
+
+# Mining
+miner-enabled=true
+miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
+```
+
+```bash title="Starting Besu with a configuration file"
+besu --config-file=/home/me/me_node/config.toml
+```
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-configuration-file/profile.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-configuration-file/profile.md
new file mode 100644
index 00000000000..6b0111e7719
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-configuration-file/profile.md
@@ -0,0 +1,82 @@
+---
+sidebar_position: 1
+---
+
+# Use a profile
+
+To help you get started quickly, Besu provides pre-configured profiles containing custom settings
+for some common use cases.
+You can load these profiles using the [`--profile`](../../reference/cli/options.md#profile) CLI option.
+For example:
+
+```bash
+besu --config-file=config.toml --profile=staker
+```
+
+In this example, `config.toml` is the user-provided [configuration file](index.md), and `staker` is
+the pre-configured profile containing custom settings.
+
+Any configuration options explicitly set in the configuration file or command line will overwrite
+the same options set in the profile.
+See the [configuration order of precedence](index.md#configuration-order-of-precedence) for more information.
+
+You can use the following profiles:
+
+- [Minimalist staker profile](#minimalist-staker-profile)
+- [Staker profile](#staker-profile)
+- [Enterprise/Private profile](#enterpriseprivate-profile)
+
+## Minimalist staker profile
+
+For stakers who want to maximize their hardware value but don't want to serve full sets of data to
+their peers, Besu provides a minimalist staker profile.
+See the
+[minimalist staker profile on GitHub](https://github.com/hyperledger/besu/blob/8b64023a121ea996ef60e4b7e2299c5807683f90/config/src/main/resources/profiles/minimalist-staker.toml)
+for the custom settings.
+
+To use the minimalist staker profile, run Besu with
+[`--profile`](../../reference/cli/options.md#profile) set to `minimalist_staker`:
+
+```bash
+besu --profile=minimalist_staker
+```
+
+## Staker profile
+
+For stakers who want to maximize their hardware value and also want to serve full sets of data to
+their peers, Besu providers a staker profile.
+See the
+[staker profile on GitHub](https://github.com/hyperledger/besu/blob/8b64023a121ea996ef60e4b7e2299c5807683f90/config/src/main/resources/profiles/staker.toml)
+for the custom settings.
+
+To use the staker profile, run Besu with [`--profile`](../../reference/cli/options.md#profile) set to `staker`:
+
+```bash
+besu --profile=staker
+```
+
+## Enterprise/Private profile
+
+For private network operators who want to minimize confusion by setting sensible defaults, Besu
+provides an enterprise/private profile.
+This profile is designed to handle specific use cases for private network operators.
+See the
+[enterprise/private profile on GitHub](https://github.com/hyperledger/besu/blob/8b64023a121ea996ef60e4b7e2299c5807683f90/config/src/main/resources/profiles/enterprise-private.toml)
+for the custom settings.
+
+To use the enterprise/private profile, run Besu with
+[`--profile`](../../reference/cli/options.md#profile) set to `enterprise` or `private`:
+
+```bash
+besu --profile=enterprise
+```
+
+or
+
+```bash
+besu --profile=private
+```
+
+:::note
+`enterprise` and `private` are aliases for the same profile.
+:::
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-engine-api.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-engine-api.md
new file mode 100644
index 00000000000..4700e780cce
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-engine-api.md
@@ -0,0 +1,228 @@
+---
+title: Use the Engine API
+sidebar_position: 2
+description: Use the Engine API to communicate with a consensus client.
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Use the Engine API
+
+[Consensus and execution clients](../concepts/the-merge.md#execution-and-consensus-clients) communicate with each other using the [Engine API](../reference/engine-api/index.md). These API methods are a separate subsection of the [JSON-RPC API](../how-to/use-besu-api/index.md).
+
+## Configure the Engine API
+
+The Engine API is enabled by default even if no consensus client configuration exists. You can configure the Engine API to:
+
+- Specify the [service ports](#service-ports).
+- Specify the [host allowlist](#host-allowlist).
+
+```bash title="Example Engine API configuration"
+besu --engine-rpc-port=8551 --engine-host-allowlist=localhost,127.0.0.1 --engine-jwt-secret=jwt.hex
+```
+
+
+### Service ports
+
+To specify the port the Engine API service listens on for HTTP and WebSocket, use the [`--engine-rpc-port`](../reference/cli/options.md#engine-rpc-port) option. The default is `8551`. This option is useful when you have another execution engine running on port 8551, in which case you can specify Besu to use another port, for example, `--engine-rpc-port 8552`.
+
+### Host allowlist
+
+To prevent DNS rebinding attacks, Besu checks incoming HTTP request host headers, WebSocket connections, and GraphQL requests. Besu accepts requests only when hostnames specified using the [`--engine-host-allowlist`](../reference/cli/options.md#engine-host-allowlist) option matches the request host headers. By default, Besu accepts requests and connections from `localhost` and `127.0.0.1`.
+
+:::info
+
+This isn't a permissioning feature. To restrict access to the Engine API, we recommend using [authentication](#authentication).
+
+:::
+
+If your application publishes RPC ports, specify the hostnames when starting Besu.
+
+Specify `*` for `--engine-host-allowlist` to effectively disable host protection.
+
+:::caution
+
+We don't recommend specifying `*` for `--engine-host-allowlist` in production.
+
+:::
+
+## Authentication
+
+By default, [authentication](../how-to/use-besu-api/authenticate.md) for the Engine API is enabled. To disable, set the [`--engine-jwt-disabled`](../reference/cli/options.md#engine-jwt-disabled) option to `true`.
+
+:::caution
+
+Don't disable JWT authentication in production environments.
+
+Disable only for testing purposes.
+
+:::
+
+Set the [JWT secret](use-besu-api/authenticate.md#jwt-public-key-authentication) by using the [`--engine-jwt-secret`](../reference/cli/options.md#engine-jwt-secret) option.
+
+## Send a payload using the Engine API
+
+### 1. Prepare a payload
+
+Prepare to send a payload using [`engine_forkchoiceUpdatedV1`](../reference/engine-api/index.md#engine_forkchoiceupdatedv1).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_forkchoiceUpdatedV1","params":[{"headBlockHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a", "safeBlockHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a", "finalizedBlockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"},{"timestamp": "0x5","prevRandao": "0x0000000000000000000000000000000000000000000000000000000000000000","suggestedFeeRecipient": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b"}],"id":67}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": {
+ "payloadStatus": {
+ "status": "VALID",
+ "latestValidHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a",
+ "validationError": null
+ },
+ "payloadId": "0x0000000021f32cc1"
+ }
+}
+```
+
+
+
+
+
+### 2. Get the payload
+
+Get the payload using [`engine_getPayloadV1`](../reference/engine-api/index.md#engine_getpayloadv1)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_getPayloadV1","params":["0x1"],"id":1}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "parentHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a",
+ "feeRecipient": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "stateRoot": "0xca3149fa9e37db08d1cd49c9061db1002ef1cd58db2210f2115c8c989b2bdf45",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "prevRandao": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "blockNumber": "0x1",
+ "gasLimit": "0x1c9c380",
+ "gasUsed": "0x0",
+ "timestamp": "0x5",
+ "extraData": "0x",
+ "baseFeePerGas": "0x7",
+ "blockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "transactions": []
+ }
+}
+```
+
+
+
+
+
+### 3. Execute the payload
+
+Execute the payload using [`engine_newPayloadV1`](../reference/engine-api/index.md#engine_newpayloadv1)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_newPayloadV1","params":[
+ {
+ "parentHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a",
+ "feeRecipient": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "stateRoot": "0xca3149fa9e37db08d1cd49c9061db1002ef1cd58db2210f2115c8c989b2bdf45",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "prevRandao": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "blockNumber": "0x1",
+ "gasLimit": "0x1c9c380",
+ "gasUsed": "0x0",
+ "timestamp": "0x5",
+ "extraData": "0x",
+ "baseFeePerGas": "0x7",
+ "blockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "transactions": []
+ }
+],"id":67}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "status": "VALID",
+ "latestValidHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "validationError": null
+ }
+}
+```
+
+
+
+
+
+### 4. Update the fork choice
+
+Update the fork choice using [`engine_forkchoiceUpdatedV1`](../reference/engine-api/index.md#engine_forkchoiceupdatedv1) again.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_forkchoiceUpdatedV1","params":[{"headBlockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858", "safeBlockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858", "finalizedBlockHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a"},null],"id":67}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": {
+ "payloadStatus": {
+ "status": "VALID",
+ "latestValidHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "validationError": null
+ },
+ "payloadId": null
+ }
+}
+```
+
+
+
+
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-pow/_category_.json b/versioned_docs/version-24.5.0/public-networks/how-to/use-pow/_category_.json
new file mode 100644
index 00000000000..1381dd9fc66
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-pow/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Use proof of work",
+ "position": 10
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/how-to/use-pow/mining.md b/versioned_docs/version-24.5.0/public-networks/how-to/use-pow/mining.md
new file mode 100644
index 00000000000..6dbd9b29f52
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/how-to/use-pow/mining.md
@@ -0,0 +1,111 @@
+---
+title: Configure mining
+sidebar_position: 1
+description: Using Hyperledger Besu for PoW CPU mining
+tags:
+ - public networks
+ - private networks
+---
+
+# Configure mining
+
+Hyperledger Besu supports CPU and GPU mining, which are configured using command line options.
+
+GPU mining tests used [Ethminer](https://github.com/ethereum-mining/ethminer) with the `stratum+tcp` and `getwork` schemes.
+
+Ethminer has been used with Hyperledger Besu to mine blocks on the [Ropsten testnet](https://ropsten.etherscan.io/address/0x2f14582947E292a2eCd20C430B46f2d27CFE213c#mine), [ETC Mainnet (uncle block only)](https://etc.tokenview.com/en/uncleblock/10555173) and Mordor ETC testnet.
+
+:::note
+
+- Some mining software supports the `getwork` scheme as the `http` scheme.
+
+- The Ropsten testnet is now deprecated. It transitioned to proof of stake consensus before deprecation.
+
+:::
+
+## Configure CPU mining
+
+To enable CPU mining, start Hyperledger Besu with the following options:
+
+```bash
+besu --rpc-http-api=ETH,MINER --miner-enabled --miner-coinbase=
+```
+
+Where `` is the account you pay mining rewards to. For example, `fe3b557e8fb62b89f4916b721be55ceb828dbd73`.
+
+Start and stop mining using the [`miner_start`](../../reference/api/index.md#miner_start) and [`miner_stop`](../../reference/api/index.md#miner_stop) APIs.
+
+## Configure GPU mining
+
+Besu supports GPU mining, tested using [Ethminer](https://github.com/ethereum-mining/ethminer) with the `stratum+tcp` scheme.
+
+To enable GPU mining, start Hyperledger Besu with the following options:
+
+```bash
+besu --rpc-http-api=ETH,MINER --miner-enabled --miner-stratum-enabled --miner-coinbase=
+```
+
+Where `` is the account you pay mining rewards to. For example, `fe3b557e8fb62b89f4916b721be55ceb828dbd73`.
+
+Optional command line options are:
+
+- [`--miner-stratum-host`](../../reference/cli/options.md#miner-stratum-host) to specify the host of the mining service.
+- [`--miner-stratum-port`](../../reference/cli/options.md#miner-stratum-port) to specify the port of the mining service.
+
+:::note
+
+Besu also supports the `getwork` scheme. Use the [`--miner-stratum-enabled`](../../reference/cli/options.md#miner-stratum-enabled) option and [enable the `ETH` RPCs](../../reference/cli/options.md#rpc-http-api).
+
+The `getwork` scheme is supported as the `http` scheme in certain mining software.
+
+:::
+
+Start and stop mining using the [`miner_start`](../../reference/api/index.md#miner_start) and [`miner_stop`](../../reference/api/index.md#miner_stop) APIs.
+
+## Mining APIs
+
+The JSON-RPC API methods for mining are:
+
+- [`miner_start`](../../reference/api/index.md#miner_start) to start mining.
+- [`miner_stop`](../../reference/api/index.md#miner_stop) to stop mining.
+- [`eth_mining`](../../reference/api/index.md#eth_mining) to determine whether the client is actively mining new blocks.
+- [`eth_getMinerDataByBlockHash`](../../reference/api/index.md#eth_getminerdatabyblockhash) and [`eth_getMinerDataByBlockNumber`](../../reference/api/index.md#eth_getminerdatabyblocknumber) to get the miner data for a specified block.
+- [`eth_hashrate`](../../reference/api/index.md#eth_hashrate) to get the number of hashes per second with which the node is mining. Not supported for GPU mining.
+- [`eth_getWork`](../../reference/api/index.md#eth_getwork) to get the hash of the current block, the seed hash, and the target boundary condition. Only used when using the `getwork` scheme.
+- [`eth_submitWork`](../../reference/api/index.md#eth_submitwork) to submit the PoW solution. Only used when using the `getwork` scheme.
+
+## Besu mined blocks
+
+Besu has successfully mined blocks on the Ropsten testnet, ETC Mainnet (uncle block only) and Mordor ETC testnet. Blocks mined by the Hyperledger Besu team contain the version number used in the block's `extraData` field. The following accounts have been used to mine on public networks with Hyperledger Besu:
+
+- **Ropsten**: [`0x2f14582947E292a2eCd20C430B46f2d27CFE213c`](https://ropsten.etherscan.io/address/0x2f14582947E292a2eCd20C430B46f2d27CFE213c#mine)
+- **ETC**: [`0x3125309aa670f5e60493b50884a7e7abf9ebb701`](https://etc.tokenview.com/en/address/0x3125309aa670f5e60493b50884a7e7abf9ebb701)
+- **Mordor**: `0x2f14582947E292a2eCd20C430B46f2d27CFE213c`
+
+## Troubleshoot
+
+### Check block creation
+
+On mining nodes, log messages indicate block creation.
+
+```bash
+2019-05-08 20:28:27.026+10:00 | pool-10-thread-1 | INFO | IbftRound | Importing block to chain. round=ConsensusRoundIdentifier{Sequence=660, Round=0}, hash=0x759afaba4e923d89175d850ceca4b8ef81f7d9c727b0b0b8e714b624a4b8e8cc
+2019-05-08 20:28:29.020+10:00 | pool-10-thread-1 | INFO | IbftRound | Importing block to chain. round=ConsensusRoundIdentifier{Sequence=661, Round=0}, hash=0x5443e504256765f06b3cebfbee82276a034ebcc8d685b7c3d1a6010fd4acfa14
+```
+
+On non-mining nodes, log messages indicate importing blocks.
+
+```bash
+2019-05-08 20:28:29.026+10:00 | EthScheduler-Workers-1 | INFO | BlockPropagationManager | Imported #661 / 0 tx / 0 om / 0 (0.0%) gas / (0x5443e504256765f06b3cebfbee82276a034ebcc8d685b7c3d1a6010fd4acfa14) in 0.000s.
+2019-05-08 20:28:31.031+10:00 | EthScheduler-Workers-0 | INFO | BlockPropagationManager | Imported #662 / 0 tx / 0 om / 0 (0.0%) gas / (0x0ead4e20123d3f1433d8dec894fcce386da4049819b24b309963ce7a8a0fcf03) in 0.000s.
+```
+
+To confirm the block number is increasing, use the [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) JSON-RPC API method.
+
+If there's no block creation in [Clique](../../../private-networks/how-to/configure/consensus/clique.md#extra-data) or [IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md#extra-data) networks, ensure the validator addresses in the genesis file match running nodes.
+
+### No mined transactions
+
+If you add a transaction to the [transaction pool](../../concepts/transactions/pool.md) and the transaction hash returns, but the transaction is never mined, check the [`--min-gas-price`](../../reference/cli/options.md#min-gas-price) option on mining nodes. If the `gasPrice` on a [transaction](../send-transactions.md) is lower than the `min-gas-price` for the mining node, the transaction will never mine.
+
+In [free gas networks](../../../private-networks/how-to/configure/free-gas.md), you must set [`--min-gas-price`](../../reference/cli/options.md#min-gas-price) to zero.
diff --git a/versioned_docs/version-24.5.0/public-networks/index.md b/versioned_docs/version-24.5.0/public-networks/index.md
new file mode 100644
index 00000000000..d16d273afd8
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/index.md
@@ -0,0 +1,25 @@
+---
+title: Public networks
+sidebar_position: 1
+sidebar_label: Introduction
+description: Public networks overview
+tags:
+ - public networks
+---
+
+# Hyperledger Besu for public networks
+
+Besu serves as an [execution client](concepts/the-merge.md#execution-clients) on public proof-of-stake Ethereum networks such as Ethereum Mainnet, Goerli, and Sepolia.
+
+You can also run Besu using proof of work on [Ethereum Classic (ETC)](how-to/use-pow/mining.md).
+
+Get started by [installing Besu](get-started/install/index.md).
+
+## Architecture
+
+The following diagram outlines the high-level architecture of Besu for public networks.
+
+![Public architecture](../assets/images/public-architecture.jpeg)
+
+If you have any questions about Besu for public networks, ask on the **besu** channel on
+[Hyperledger Discord](https://discord.gg/hyperledger).
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/_category_.json b/versioned_docs/version-24.5.0/public-networks/reference/_category_.json
new file mode 100644
index 00000000000..1f988aef3d0
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Reference",
+ "position": 6,
+ "link": {
+ "type": "generated-index",
+ "slug": "public-networks/reference"
+ }
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/api/index.md b/versioned_docs/version-24.5.0/public-networks/reference/api/index.md
new file mode 100644
index 00000000000..01fe3d3dce5
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/api/index.md
@@ -0,0 +1,8062 @@
+---
+title: Besu API
+sidebar_position: 2
+description: Hyperledger Besu JSON-RPC API methods reference
+toc_max_heading_level: 3
+tags:
+ - public networks
+ - private networks
+---
+
+import Postman from '../../../global/postman.md'
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Besu API methods
+
+:::caution
+
+- This reference contains API methods that apply to both public and private networks. For private-network-specific API methods, see the [private network API reference](../../../private-networks/reference/api/index.md).
+- All JSON-RPC HTTP examples use the default host and port endpoint `http://127.0.0.1:8545`. If using the [--rpc-http-host](../cli/options.md#rpc-http-host) or [--rpc-http-port](../cli/options.md#rpc-http-port) options, update the endpoint.
+- Most example requests are made against private networks. Depending on network configuration and activity, your example results might be different.
+
+:::
+
+
+
+## `ADMIN` methods
+
+The `ADMIN` API methods provide administrative functionality to manage your node.
+
+:::note
+
+The `ADMIN` API methods are not enabled by default for JSON-RPC. To enable the `ADMIN` API methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options.
+
+:::
+
+### `admin_addPeer`
+
+Adds a [static node](../../how-to/connect/static-nodes.md).
+
+:::caution
+
+If connections are timing out, ensure the node ID in the [enode URL](../../concepts/node-keys.md#enode-url) is correct.
+
+:::
+
+#### Parameters
+
+`enode`: _string_ - [enode URL](../../concepts/node-keys.md#enode-url) of peer to add
+
+#### Returns
+
+`result`: _boolean_ - `true` if peer added or `false` if peer already a [static node](../../how-to/connect/static-nodes.md)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"admin_addPeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+### `admin_changeLogLevel`
+
+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
+
+- `level`: _string_ - [log level](../cli/options.md#logging)
+
+- `log_filter`: _array_ - (optional) packages or classes for which to change the log level
+
+#### Returns
+
+`result`: _string_ - `Success` if the log level has changed, otherwise `error`
+
+The following example changes the debug level for specified classes to `DEBUG`.
+
+
+
+
+
+```bash
+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}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"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}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "Success"
+}
+```
+
+
+
+
+
+The following example changes the debug level of all logs to `WARN`.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"admin_changeLogLevel","params":["WARN"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "admin_changeLogLevel",
+ "params": ["WARN"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "Success"
+}
+```
+
+
+
+
+
+### `admin_generateLogBloomCache`
+
+Generates cached log bloom indexes for blocks. APIs such as [`eth_getLogs`](#eth_getlogs) and [`eth_getFilterLogs`](#eth_getfilterlogs) use the cache for improved performance.
+
+:::tip
+
+Manually executing `admin_generateLogBloomCache` is not required unless the [`--auto-log-bloom-caching-enabled`](../cli/options.md#auto-log-bloom-caching-enabled) command line option is set to false.
+
+:::
+
+:::note
+
+Each index file contains 100000 blocks. The last fragment of blocks less than 100000 are not indexed.
+
+:::
+
+#### Parameters
+
+- `startBlock`: _string_ - block to start generating indexes
+
+- `endBlock`: _string_ - block to stop generating indexes
+
+#### Returns
+
+`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
+
+
+
+
+
+```bash
+curl -X POST --data '{jsonrpc":"2.0","method":"admin_generateLogBloomCache", "params":["0x0", "0x10000"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "admin_generateLogBloomCache",
+ "params": ["0x0", "0x10000"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "startBlock": "0x0",
+ "endBlock": "0x10000",
+ "currentBlock": "0x0",
+ "indexing": true,
+ "requestAccepted": true
+ }
+}
+```
+
+
+
+
+
+### `admin_logsRemoveCache`
+
+Removes cache files for the specified range of blocks.
+
+#### Parameters
+
+- `fromBlock`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+ string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+- `toBlock`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+ string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+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
+
+`result`: _object_ - `Cache Removed` status or `error`.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRemoveCache","params":["1", "100"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "admin_logsRemoveCache",
+ "params": ["1", "100"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "Status": "Cache Removed"
+ }
+}
+```
+
+
+
+
+
+### `admin_logsRepairCache`
+
+Repairs cached logs by fixing all segments starting with the specified block number.
+
+#### Parameters
+
+`startBlock`: _string_ - decimal index of the starting block to fix; defaults to the head block
+
+#### Returns
+
+`result`: _object_ - status of the repair request; `Started` or `Already running`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRepairCache","params":["1200"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "admin_logsRepairCache",
+ "params": ["1200"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "Status": "Started"
+ }
+}
+```
+
+
+
+
+
+### `admin_nodeInfo`
+
+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
+
+None
+
+#### Returns
+
+`result`: _object_ - node object with the following fields:
+
+- `enode`: _string_ - [enode URL](../../concepts/node-keys.md#enode-url) of the node
+
+- `listenAddr`: _string_ - host and port for the node
+
+- `name`: _string_ - client name
+
+- `id`: _string_ - [node public key](../../concepts/node-keys.md#node-public-key)
+
+- `ports`: _object_ - peer discovery and listening [ports](../../how-to/connect/manage-peers.md#port-configuration)
+
+- `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`](../../how-to/connect/specify-nat.md).
+
+:::
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "enode": "enode://87ec35d558352cc55cd1bf6a472557797f91287b78fe5e86760219124563450ad1bb807e4cc61e86c574189a851733227155551a14b9d0e1f62c5e11332a18a3@[::]:30303",
+ "listenAddr": "[::]:30303",
+ "name": "besu/v1.0.1-dev-0d2294a5/osx-x86_64/oracle-java-1.8",
+ "id": "87ec35d558352cc55cd1bf6a472557797f91287b78fe5e86760219124563450ad1bb807e4cc61e86c574189a851733227155551a14b9d0e1f62c5e11332a18a3",
+ "ports": {
+ "discovery": 30303,
+ "listener": 30303
+ },
+ "protocols": {
+ "eth": {
+ "config": {
+ "chainId": 2018,
+ "homesteadBlock": 0,
+ "daoForkBlock": 0,
+ "daoForkSupport": true,
+ "eip150Block": 0,
+ "eip155Block": 0,
+ "eip158Block": 0,
+ "byzantiumBlock": 0,
+ "constantinopleBlock": 0,
+ "constantinopleFixBlock": 0,
+ "ethash": {
+ "fixeddifficulty": 100
+ }
+ },
+ "difficulty": 78536,
+ "genesis": "0x43ee12d45470e57c86a0dfe008a5b847af9e372d05e8ba8f01434526eb2bea0f",
+ "head": "0xc6677651f16d07ae59cab3a5e1f0b814ed2ec27c00a93297b2aa2e29707844d9",
+ "network": 2018
+ }
+ }
+ }
+}
+```
+
+
+
+
+
+### `admin_peers`
+
+Returns networking information about connected remote nodes.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`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](../../concepts/node-keys.md#enode-url) `enode://@:`.)
+
+- `protocols`: _object_ - [current state of peer](../../how-to/connect/manage-peers.md#monitor-peer-connections) including `difficulty` and `head` (`head` is the hash of the highest known block for the peer.)
+
+- `enode`: _string_ - enode URL of the remote node
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "version": "0x5",
+ "name": "besu/v20.10.4-dev-0905d1b2/osx-x86_64/adoptopenjdk-java-11",
+ "caps": ["eth/62", "eth/63", "eth/64", "eth/65", "IBF/1"],
+ "network": {
+ "localAddress": "192.168.1.229:50115",
+ "remoteAddress": "168.61.153.255:40303"
+ },
+ "port": "0x765f",
+ "id": "0xe143eadaf670d49afa3327cae2e655b083f5a89dac037c9af065914a9f8e6bceebcfe7ae2258bd22a9cd18b6a6de07b9790e71de49b78afa456e401bd2fb22fc",
+ "protocols": {
+ "eth": {
+ "difficulty": "0x1ac",
+ "head": "0x964090ae9277aef43f47f1b8c28411f162243d523118605f0b1231dbfdf3611a",
+ "version": 65
+ }
+ },
+ "enode": "enode://e143eadaf670d49afa3327cae2e655b083f5a89dac037c9af065914a9f8e6bceebcfe7ae2258bd22a9cd18b6a6de07b9790e71de49b78afa456e401bd2fb22fc@127.0.0.1:30303"
+ }
+ ]
+}
+```
+
+
+
+
+
+### `admin_removePeer`
+
+Removes a [static node](../../how-to/connect/static-nodes.md).
+
+#### Parameters
+
+`enode`: _string_ - [enode URL](../../concepts/node-keys.md#enode-url) of peer to remove
+
+#### Returns
+
+`result`: _boolean_ - `true` if peer removed or `false` if peer not a [static node](../../how-to/connect/static-nodes.md)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"admin_removePeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"admin_removePeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+## `DEBUG` methods
+
+The `DEBUG` API methods allow you to inspect and debug the network. The `DEBUG` API is a more verbose alternative to the [`TRACE` API](#trace-methods), and its main purpose is compatibility with tools such as [Remix](https://remix.ethereum.org/). Where these APIs overlap, we recommend using the [`TRACE` API](#trace-methods) 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`](../cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options.
+
+:::
+
+### `debug_accountAt`
+
+Returns account information at the specified index of the specified block.
+
+#### Parameters
+
+- `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
+
+`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.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0xc8df1f061abb4d0c107b2b1a794ade8780b3120e681f723fe55a7be586d95ba6", 0, "0xbcde5374fce5edbc8e2a8697c15331677e6ebf0b"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_accountAt",
+ "params": [
+ "0xc8df1f061abb4d0c107b2b1a794ade8780b3120e681f723fe55a7be586d95ba6",
+ 0,
+ "0xbcde5374fce5edbc8e2a8697c15331677e6ebf0b"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "code": "0x0",
+ "nonce": "0x5",
+ "balance": "0xad78ebc5ac6200000",
+ "codehash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
+ }
+}
+```
+
+
+
+
+
+This example uses a contract address for the `address` parameter.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c", 0, "0x0e0d2c8f7794e82164f11798276a188147fbd415"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_accountAt",
+ "params": [
+ "0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c",
+ 0,
+ "0x0e0d2c8f7794e82164f11798276a188147fbd415"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "code": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b27b880414610030575b600080fd5b61004a60048036038101906100459190610108565b61004c565b005b60606000806000604051935036600085376000803686885af490503d9150816000853e806000811461007d57610093565b60008311156100925761012085019350836040525b5b5060008114156100ec578473ffffffffffffffffffffffffffffffffffffffff167f410d96db3f80b0f89b36888c4d8a94004268f8d42309ac39b7bcba706293e099856040516100e3919061016e565b60405180910390a25b5050505050565b60008135905061010281610227565b92915050565b60006020828403121561011e5761011d610211565b5b600061012c848285016100f3565b91505092915050565b600061014082610190565b61014a818561019b565b935061015a8185602086016101de565b61016381610216565b840191505092915050565b600060208201905081810360008301526101888184610135565b905092915050565b600081519050919050565b600082825260208201905092915050565b60006101b7826101be565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156101fc5780820151818401526020810190506101e1565b8381111561020b576000848401525b50505050565b600080fd5b6000601f19601f8301169050919050565b610230816101ac565b811461023b57600080fd5b5056fea2646970667358221220fdfb5c371055342507b8fb9ca7b0c234f79819bd5cb05c0d467fb605de979eb564736f6c63430008060033",
+ "nonce": "0x1",
+ "balance": "0x0",
+ "codehash": "0xf5f334d41776ed2828fc910d488a05c57fe7c2352aab2d16e30539d7726e1562"
+ }
+}
+```
+
+
+
+
+
+### `debug_accountRange`
+
+[Retesteth](https://github.com/ethereum/retesteth/wiki/Retesteth-Overview) uses `debug_accountRange` to implement debugging.
+
+Returns the accounts for a specified block.
+
+#### Parameters
+
+- `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
+
+`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
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountRange","params":["12345", 0, "0", 5],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_accountRange",
+ "params": ["12345", 0, "0", 5],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "addressMap": {
+ "0x005e5...86960": "0x0000000000000000000000000000000000000000",
+ "0x021fe...6ffe3": "0x0000000000000000000000000000000000000000",
+ "0x028e6...ab776": "0x0000000000000000000000000000000000000000",
+ "0x02cb5...bc4d8": "0x0000000000000000000000000000000000000000",
+ "0x03089...23fd5": "0x0000000000000000000000000000000000000000"
+ },
+ "nextKey": "0x04242954a5cb9748d3f66bcd4583fd3830287aa585bebd9dd06fa6625976be49"
+ }
+}
+```
+
+
+
+
+
+### `debug_batchSendRawTransaction`
+
+Sends a list of [signed transactions](../../how-to/send-transactions.md). This is used to quickly load a network with a lot of transactions. This does the same thing as calling [`eth_sendRawTransaction`](#eth_sendrawtransaction) multiple times.
+
+#### Parameters
+
+`data`: _string_ - signed transaction data array
+
+#### Returns
+
+`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
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_batchSendRawTransaction","params":["0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ba0ac74ecfa0e9b85785f042c143ead4780931234cc9a032fce99fab1f45e0d90faa02fd17e8eb433d4ca47727653232045d4f81322619c0852d3fe8ddcfcedb66a43","0x416","0xf868018203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ca0b24ea1bee8fe36984c36acbf80979a4509f23fc17141851e08d505c0df158aa0a00472a05903d4cd7a811bd4d5c59cc105d93f5943f3393f253e92e65fc36e7ce0","0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef5787470de4df820000801ca0f7936b4de04792e3c65095cfbfd1399d231368f5f05f877588c0c8509f6c98c9a01834004dead527c8da1396eede42e1c60e41f38a77c2fd13a6e495479c729b99"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"debug_batchSendRawTransaction","params":["0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ba0ac74ecfa0e9b85785f042c143ead4780931234cc9a032fce99fab1f45e0d90faa02fd17e8eb433d4ca47727653232045d4f81322619c0852d3fe8ddcfcedb66a43","0x416","0xf868018203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ca0b24ea1bee8fe36984c36acbf80979a4509f23fc17141851e08d505c0df158aa0a00472a05903d4cd7a811bd4d5c59cc105d93f5943f3393f253e92e65fc36e7ce0","0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef5787470de4df820000801ca0f7936b4de04792e3c65095cfbfd1399d231368f5f05f877588c0c8509f6c98c9a01834004dead527c8da1396eede42e1c60e41f38a77c2fd13a6e495479c729b99"],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "index": 0,
+ "success": true
+ },
+ {
+ "index": 1,
+ "success": false,
+ "errorMessage": "Invalid raw transaction hex"
+ },
+ {
+ "index": 2,
+ "success": true
+ },
+ {
+ "index": 3,
+ "success": false,
+ "errorMessage": "TRANSACTION_REPLACEMENT_UNDERPRICED"
+ }
+ ]
+}
+```
+
+
+
+
+
+### `debug_getBadBlocks`
+
+Returns a list of invalid blocks. This is used to detect and analyze consensus flaws.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [block objects](objects.md#block-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "block": {
+ "number": "0xd",
+ "hash": "0x85c2edc1ca74b4863cab46ff6ed4df514a698aa7c29a9bce58742a33af07d7e6",
+ "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash": "0x544a2f7a4c8defc0d8da44aa0c0db7c36b56db2605c01ed266e919e936579d31",
+ "nonce": "0x0000000000000000",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "transactionsRoot": "0x02c387e001cbe2a8296bfa2e18afbc3480d0e49588b05556148b0bf7c17dec41",
+ "stateRoot": "0x861ab7e868e3c23f84b7c4ed86b52a6a4f063633bc45ef29212c33459df84ea5",
+ "receiptsRoot": "0xccd2d33763dc0ac3fe02d4ecbbcd7d2bdc6f57db635ba31007184679303721d7",
+ "miner": "0x0000000000000000000000000000000000000000",
+ "difficulty": "0x1",
+ "totalDifficulty": "0x1",
+ "extraData": "0x00000000000000000000000000000000000000000000000000000000000000008c6a091f07e4ba3930f2f5fabbfc5b1c70986319096760ba200a6abc0d30e33c2d501702d1b58d7f75807bdbf981044557628611319121170b96466ec06bb3fd01",
+ "size": "0x3a0",
+ "gasLimit": "0xffffffffffff",
+ "gasUsed": "0x1a488",
+ "timestamp": "0x5f5b6824",
+ "uncles": [],
+ "transactions": [
+ {
+ "blockHash": "0x85c2edc1ca74b4863cab46ff6ed4df514a698aa7c29a9bce58742a33af07d7e6",
+ "blockNumber": "0xd",
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0x1a49e",
+ "gasPrice": "0x3e8",
+ "hash": "0xdd8cf045113754c306ba9ac8ac8786235e33bc5c087678084ef260a2a583f127",
+ "input": "0x608060405234801561001057600080fd5b5060c78061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636057361d146037578063b05784b8146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b60686088565b6040518082815260200191505060405180910390f35b8060008190555050565b6000805490509056fea26469706673582212208dea039245bf78c381278382d7056eef5083f7d243d8958817ef447e0a403bd064736f6c63430006060033",
+ "nonce": "0x0",
+ "to": null,
+ "transactionIndex": "0x0",
+ "value": "0x0",
+ "v": "0xf9d",
+ "r": "0xa7a15050302ca4b7d3842d35cdd3cbf25b2c48c0c37f96d78beb6a6a6bc4f1c7",
+ "s": "0x130d29294b2b6a2b7e89f501eb27772f7abf37bfa28a1ce300daade975589fca"
+ }
+ ]
+ },
+ "hash": "0x85c2edc1ca74b4863cab46ff6ed4df514a698aa7c29a9bce58742a33af07d7e6",
+ "rlp": "0xf9039df9025ca0544a2f7a4c8defc0d8da44aa0c0db7c36b56db2605c01ed266e919e936579d31a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0861ab7e868e3c23f84b7c4ed86b52a6a4f063633bc45ef29212c33459df84ea5a002c387e001cbe2a8296bfa2e18afbc3480d0e49588b05556148b0bf7c17dec41a0ccd2d33763dc0ac3fe02d4ecbbcd7d2bdc6f57db635ba31007184679303721d7b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d86ffffffffffff8301a488845f5b6824b86100000000000000000000000000000000000000000000000000000000000000008c6a091f07e4ba3930f2f5fabbfc5b1c70986319096760ba200a6abc0d30e33c2d501702d1b58d7f75807bdbf981044557628611319121170b96466ec06bb3fd01a00000000000000000000000000000000000000000000000000000000000000000880000000000000000f9013af90137808203e88301a49e8080b8e6608060405234801561001057600080fd5b5060c78061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636057361d146037578063b05784b8146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b60686088565b6040518082815260200191505060405180910390f35b8060008190555050565b6000805490509056fea26469706673582212208dea039245bf78c381278382d7056eef5083f7d243d8958817ef447e0a403bd064736f6c63430006060033820f9da0a7a15050302ca4b7d3842d35cdd3cbf25b2c48c0c37f96d78beb6a6a6bc4f1c7a0130d29294b2b6a2b7e89f501eb27772f7abf37bfa28a1ce300daade975589fcac0"
+ },
+ {
+ "block": {
+ "number": "0x8",
+ "hash": "0x601a3ae9b6eceb2476d249e1cffe058ba3ff2c9c1b28b1ec7a0259fdd1d90121",
+ "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash": "0x98ae440cd7b904d842daa6c263608969a3c8ce6a9acd6bd1f99b394f5f28a207",
+ "nonce": "0x0000000000000000",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "transactionsRoot": "0x8ee998cc699a1f9310a1079458780b3ebee8756f96a0905f5224b89d0eb17486",
+ "stateRoot": "0x140a9783291704223eb759e3a0db5471a520d349fc17ac2f77ff8582472e3bac",
+ "receiptsRoot": "0x2b5c77f6e7764d2468178fab7253346b9b8bb6a34b63946f6bdc2f5ad398bfc3",
+ "miner": "0x0000000000000000000000000000000000000000",
+ "difficulty": "0x2",
+ "totalDifficulty": "0x2",
+ "extraData": "0x00000000000000000000000000000000000000000000000000000000000000004d04551bdd9ae08af1fd661e49d4ab662c98c532c7ec0e4656a27e4de7d330af578ab1e4f5e49e085ff1d78673c7388ed9ccf017fbe89e53066bfa4018142c0701",
+ "size": "0x3a0",
+ "gasLimit": "0xffffffffffff",
+ "gasUsed": "0x1a4c9",
+ "timestamp": "0x5f5b6b80",
+ "uncles": [],
+ "transactions": [
+ {
+ "blockHash": "0x601a3ae9b6eceb2476d249e1cffe058ba3ff2c9c1b28b1ec7a0259fdd1d90121",
+ "blockNumber": "0x8",
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0x1a4c9",
+ "gasPrice": "0x3e8",
+ "hash": "0x675e336a4281b29c619dfd4ccfbd2f930f3728b20caf9e0067284aa3224e6758",
+ "input": "0x608060405234801561001057600080fd5b5060c78061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636057361d146037578063b05784b8146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b60686088565b6040518082815260200191505060405180910390f35b8060008190555050565b6000805490509056fea26469706673582212208dea039245bf78c381278382d7056eef5083f7d243d8958817ef447e0a403bd064736f6c63430006060033",
+ "nonce": "0x0",
+ "to": null,
+ "transactionIndex": "0x0",
+ "value": "0x0",
+ "v": "0xf9d",
+ "r": "0x2e30624c0305e64812e1d9e325ba6e50410314634b008edcb50f45be71fa0d4",
+ "s": "0x50e205faed23c219ba15610de2451d458cbd4221207b2168344cfc972a7973c0"
+ }
+ ]
+ },
+ "hash": "0x601a3ae9b6eceb2476d249e1cffe058ba3ff2c9c1b28b1ec7a0259fdd1d90121",
+ "rlp": "0xf9039df9025ca098ae440cd7b904d842daa6c263608969a3c8ce6a9acd6bd1f99b394f5f28a207a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0140a9783291704223eb759e3a0db5471a520d349fc17ac2f77ff8582472e3baca08ee998cc699a1f9310a1079458780b3ebee8756f96a0905f5224b89d0eb17486a02b5c77f6e7764d2468178fab7253346b9b8bb6a34b63946f6bdc2f5ad398bfc3b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020886ffffffffffff8301a4c9845f5b6b80b86100000000000000000000000000000000000000000000000000000000000000004d04551bdd9ae08af1fd661e49d4ab662c98c532c7ec0e4656a27e4de7d330af578ab1e4f5e49e085ff1d78673c7388ed9ccf017fbe89e53066bfa4018142c0701a00000000000000000000000000000000000000000000000000000000000000000880000000000000000f9013af90137808203e88301a4c98080b8e6608060405234801561001057600080fd5b5060c78061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636057361d146037578063b05784b8146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b60686088565b6040518082815260200191505060405180910390f35b8060008190555050565b6000805490509056fea26469706673582212208dea039245bf78c381278382d7056eef5083f7d243d8958817ef447e0a403bd064736f6c63430006060033820f9da002e30624c0305e64812e1d9e325ba6e50410314634b008edcb50f45be71fa0d4a050e205faed23c219ba15610de2451d458cbd4221207b2168344cfc972a7973c0c0"
+ }
+ ]
+}
+```
+
+
+
+
+
+### `debug_getRawBlock`
+
+Returns the [RLP encoding](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/) of the specified block.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _object_ - RLP-encoded [block object](objects.md#block-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getRawBlock","params":["0x32026E"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"debug_getRawBlock","params":["0x32026E"],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0xf96096f90236a09f73691f6dabca4f0a99b05d0a701995506aa311dcaa9ce9833d6f4ca474c162a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a078103ea8c47231886481d72ec1afae6eeb06c3773ce24a91323d5c9eed69d4cca0008992da2531db404f07b0871dd620a94ba346963e1b1c6dc7b00748e8593a1ea0b6c3890d9604434fc52f722848c84d1770add20cd75bbc28cdedff42940dbb56b90100200800000400000002000e0000000401000000440100000000c0400600000002000801000000040480020840048000000000400000000000000020004220000011002000000000000204000800000010010002000002000000000040a000000000000400020000010885000000000808000000008800001004002010020300005000000010002110410402000000000000000890000008000000000000000000020040000002000000000000810400000040006000004000004080020000000000000022001000000000000840400000000220250000000000080402000420000418000000000000000400040000004080040010200000000000108020020000808332026e8401c9c380833e3c3c846436f93899d883010b05846765746888676f312e32302e32856c696e7578a0112d8f15793e7df7f8dcdb21c891cff78c0d1839cb5b6dcd06116cdbb99536ae88000000000000000008a0cdb97712af6685bb9650d21d609525913293c48adda7c45990926daada335c9bf95c56f8ac82d51f8502540be4008303c9e294a68d4c1e3de1b721ad1356bbf827d6bc8cef304f80b844b1bb4d351300dbc7e12342566318001b83aefc9f20080000f3ef25472407fe9c9c69a1470000000242692bb4cd506c409651ab80eb3acfa54551d3dbc9af4493605d79871ba01e474fb147b16b9538d7a59a57738e406158d9cc306a9062b1b7a9f544c35abfa061aabb714c760f2243a16a024811679d402c8822e8b25dfd0038d84298fb5205b87502f87283aa36a754849502f900849502f9108302222794102554afa6b5dbccc86176faef2b2d854201756e8084e2bc7b43c001a04f2398f24bc950db1f5439de3cf6431ea277236595ae8dc5815c0cc671c9f97ca029898786a59c56f086fc0f7a16859f366cf46084add999fe137cbf43693712e8b87c02f87983aa36a7830293748459682f00850165a0bc008255f094fafb56bb5b37c3b0b0ee9d7c31f018aac91dfb778806f05b59d3b2000080c080a0b069dd8967533a773e592c26b1b36df0793d0b9f6eceba34da246f602c2fae58a002009dab32ab63a25b705d9a00e311f7cd5d85e73f9b2c03ffd0e5135c0bb2c6b89502f89283aa36a7018459682f008459682f0983011fec945b9fedd37f0b92e7e282b19cebcf06f57b77c60480a46a62784200000000000000000000000019a1fcc6fcc5832cd2db7704d75efbc800f5a742c001a0c65eb0e48090a8f8830de47f430b9ad11071a62a5db9555619a990d7e9b81738a05a6e826610a5b2ee529a22942ebcd3abd2a8a10228098c8158380e8fcceb962fb9028002f9027c83aa36a7178459682f008459682f0983017ac9942ab7c0ab9ab47fcf370d13058bfee28f2ec0940c880169964394fc8860b9020496e17852000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003aa4d7eb55ec2539f5305eb27ea42f6f90f168270000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000028c5c0000000000000000000000003aa4d7eb55ec2539f5305eb27ea42f6f90f168270000000000000000000000003aa4d7eb55ec2539f5305eb27ea42f6f90f168270000000000000000000000003aa4d7eb55ec2539f5305eb27ea42f6f90f16827000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000650cb3772886000000000000000000000000000000000000000000000000000000000000222e000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c080a004f8666c8e5d0f3c7110994f624d24aa47a1327814289698c3e2777284a5cfdca04ff05f1b8c5beb58972d40e5a7b894d5e28ad2f15a3429c7d2bee6b6a9633730b9019f02f9019b83aa36a70b8459682f008459682f098303644f944284890d4acd0bcb017ece481b96fd4cb457cac88715c0f4db6e0ea0b90124ee1490b20000000000000000000000000000000000000000000000000000000000028c5c0000000000000000000000007847f2e0262512206333ffb200f6d9df2da319d40000000000000000000000001e8c104d068f22d351859cdbfe41a697a98e6ea20000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000222e00000000000000000000000000000000000000000000000000015c0f4db6e0ea00000000000000000000000007847f2e0262512206333ffb200f6d9df2da319d400000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000c080a0e5270f6291acc162885656bedf64fbcb904c41951221dc0cbbbdca03bb33ce43a01f08c7ed3c231403b55f37a157d80e121b653baa810add8c02aea722631450dcb87c02f87983aa36a7830293758459682f00850165a0bc008255f0948d247f4fbbe81429d3d164a5c9ae0063210edbdc8806f05b59d3b2000080c080a0bb83dd6181c9a7ae3069af3bdf1820b5e556eaf99e385b8d7b3571321fb2966ba02ac193773704524adcd02824796df83407a42cdd81e786b591eba43c4ffc6c40b9028002f9027c83aa36a7048459682f008459682f0983017ac9942ab7c0ab9ab47fcf370d13058bfee28f2ec0940c880169964394fc8860b9020496e178520000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000062d23ed77d0e5d0205edabe4ce3a27adc49ac6790000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000028c5c00000000000000000000000062d23ed77d0e5d0205edabe4ce3a27adc49ac67900000000000000000000000062d23ed77d0e5d0205edabe4ce3a27adc49ac67900000000000000000000000062d23ed77d0e5d0205edabe4ce3a27adc49ac679000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000650cb3772886000000000000000000000000000000000000000000000000000000000000222e000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c001a0fc882968005f717a74a2c2fb345f691091cab084f4bd3934358741807bd5a66ea03f81c68d05d06bf851a6ef5ea6874557a221cbadde24f3fa51f777699b5d2804b8d802f8d583aa36a7822c0b8459682f008459682f098303534f943367dfa11e3148a07c2da773e1f65b155b0abe5680b864ad58bdd100000000000000000000000053844f9577c2334e541aec7df7174ece5df1fcf0000000000000000000000000e9e12c660e77a732940bab3c2cf385c843b834b800000000000000000000000000000000000000000006015d637c177581800000c001a0a292e7723d3c950aa8a557bd91dece34ec527d9efe2cc413d582dcd9fc6bf6eba03386ce6f58e862f329946bf32897f7df5d1c8f818fecfafc1223052fb251d97eb8b602f8b383aa36a7138459682f008459682f09832dc6c094ba175fdab00e7fcf603f43be8f68db7f4de9f3a980b844095ea7b300000000000000000000000084a0cc1ab353da6b7817947f7b116b8ea982c3d20000000000000000000000000000000000000000000000068f365aea1e440000c001a0968ed0274829918071d9cef28e1adbf1fd15ec76e5a4f809971e887b4c9f34b6a001ce26485bc7e3ea71fb99866bd43002b264b2ed80e10850203c2f07b78856bdb87c02f87983aa36a7830293768459682f00850165a0bc008255f0946d3b93db4e4078cf6541a68532d00705d9a4da618806f05b59d3b2000080c080a083c831630788e7ee57c87128d18582e29aa51f1f233e91d916c06d0750578156a0549b5a00477f3fb4d8fbf95ba3a636c3a14ff011c1bbf3a717e00d61735cbf34b87c02f87983aa36a7830293778459682f00850165a0bc008255f0940d3a7d69859a0dd6971d39703b15379e05ae2ec48806f05b59d3b2000080c001a0082660b5db2d3a8a58c0b863673ab27f7cfe4c049dcc52c76a00ab45b0358db5a05a7519a2d399cb534480383ac21262fbde2dd85241495d7832dee8bb02c49c87b87c02f87983aa36a7830293788459682f00850165a0bc008255f0941be13f64a2463fc7a76b4092c53328cc965a77fb8806f05b59d3b2000080c001a0e6ee9b85c3b729518524fdaeb25d47f89f6fc6c4d2c4df707187bef74d73f958a0756bbf4ab119805b77466957b5895c1d5bf422c5f65d8a06f7efd37dcb2c87afb87c02f87983aa36a7830293798459682f00850165a0bc008255f094a90b28fd6f8e46ac668fcb688414184a163e2cd28806f05b59d3b2000080c080a0d394dd43c58591e5dda8a7f3a2f4eae1bfd65655b9e9eec5facc6dcb39aa77baa002eeabf3fe9c0a56eae476d2f6452ea72e63a9c9b1180290b792883258f939f5b8f802f8f583aa36a7830283818459682f008459682f1082962494d0f723c6b2226df56fe41e63b9eaa66eb540bcb880b884abac047b000000000000000000000000000000000000000000000000000000000103e9f0f3471dc445d8f209ef546e0d20eaccc12ed0a5b4100007f57d9bc8638dacaf6480000000000000000000000000000000000000000000000000000000001d209b1ea11d77d1ab457eb3e2954cb2b98e77b5b07e2a4f48507af0adc61329ddc210c001a0efa10ab60f3bd1e7c4a8d52a275a568fbe2f5edc9e1eaf386299577ff9ddbd6ba06e62cf2f66b58f655ddd3eae47ce40408445b086f6ea858edb7bd847ee206207f86f82e6e582014482f618949ebf6b12e7e33b8672788e7b2b3330356f6f2c41880de0b6b3a7640000808401546d72a008d6be7aa21be0a43e08e960620f4c40c44010a743ead9919ef9423863c08b12a06a63a7caae4504ee5528e50387ca09974f7124035328a62d1085da2fee6618f9f86f82e1c382014482f618949c68eb31c4d00b94c3e3d4c2887946f8b076b24c880de0b6b3a7640000808401546d72a0c22d48d72c70ccf0a44d0950daf16741838f9333ee0bc5e05ff02b058da1e010a06a20c9f74cbc14c0d5bf3b3c38d3c33a5ace9194cddc2c533afb16459eaa7647f86f82e4cb82014482f61894d531e7aa3c0bee832aaff22642c7a3128d48a81a880de0b6b3a7640000808401546d72a01dbaeffc8e11964c06a722bae73e35bb5de55b8f959592868f2ff5fc13b69bd3a002acadc04665570a2032cdb616de15bdca79127f21302d62db5baf96ae4734e6f86e830176e381d882520894ad346e81c5b26fe563ab1ba2aa4ff811655882ca872386f26fc10000808401546d72a0b6de11598824e338100d5ebe70c0b0f4d6893fbb36f11ad55cf74b2f43afc5dda05101e65e7e84ea9edba6e5bf1a1e07028ae3fa5213240e812e57cf6b29080726b9235302f9234f83aa36a7830137d564748315f52194ac9251ee97ed8bef31706354310c6b020c35d87b80b922e48ed7b3be000000000000000000000000000000000000000000000000000000000001edc00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000001fe000000000000000000000000000000000000000000000000000000000000020c00000000000000000000000000000000000000000000000000000000000001f60000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000002200000000000000000000000009d69394bd71906a235f9113cc04321f573958d3e00000000000000000000000000000000000000000000000000000000000005200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001edc00000000000000000000000000000000000000000000000000000000000320266d6b1b655f66cf8f99d35432492f8fbedfa97a2a48f0efaae65de6738e2594aa5000000000000000000000000000077770000000000000000000000000000000191c15235c348207e935e72b9151056a9661d73631d1e2c3f89ffddf8e74efe8a42ab8767076a555a049372055c846097c99e69c26ab0a24553d21c15de29ea900000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000030ef2c000000000000000000000000000000000000000000000000000000006436f8d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d65822107fcfd520000000000000000000000000000000000000000000000000000000000000000ec15abee257256da1a964434000f59ddd45b1ce67d5df44f1c82fd5bfe95c3b31dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493470000000000000000000000000000777700000000000000000000000000000001d4b5b35d93f51c8143f6a4cc3d7b320d37ce03989cd88c28601f4ea94cd6554249cff83e4dd8e99a8ef9004b2ac7518996f4784af1f9e52debb6223a697e9652530feda219f333e01f8cd0b31ee83b9c250ee51fde9718ef5fa305cbcd01901200200100002020000400000280000006004000c0020000000000000000000100000000029000000000000000090000000000008000200040000012004020000800000000240002400008000800000020000000001040000000000040824000000000000002040000400000002000080000000000000804000000001001000c84000208000000000180020000014000000000210100510008000082c0000000001200002000000024000008400000000220001800400000008010000052000200000200028000000000800000040200000110000010000010000001020000210004100002000000000900280000010008001000000018004000000020000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001edc0000000000000000000000000000000000000000000000000000000000034bfbc00000000000000000000000000000000000000000000000000000000002ddb24000000000000000000000000000000000000000000000000000000006436f8d800000000000000000000000000000000000000000000000000000000000002e042ab8767076a555a049372055c846097c99e69c26ab0a24553d21c15de29ea900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000017e000000000000000000000000000000000000000000000000000000000000016202bf20ff78727f38ef16e03bfb3d4895f35cc626f97ede7cc99f48aeff8661fe32015ea8d62ec7a79e01cd398e85867bafdcf55cb6a7121b6fef097f5f5656a5d11ddf336b6879926ea2ae425e91c748a553c9a496cbe2ab556a91689f75ee2b01ad3c43aa774b50a9d8411a9f65be42d6cde781db1a1949a1e886f868917997b2a7122720155935f15da0807d0054f1a4c3db2a92ec4124bf590ce7a16594f3f1812f260acb049d01ad534a937840a80c0f56fd9a54ca5a8628ed896d14a5f8b2570f5813e35c990656f6300a1a1849429135ada6337646248f6ea03a7f70ac426c1d805216d154ea5a8e5ff953bc04b71b049b4b5bd549b6b0cfa7f8b21dba72a3805c7093d8589f2d4c55b6211441041e8bd7916daed5093fcebd377c31e810a6499e6e26840e3afadc9b339c6abc86b7f89fc3559f4242d373a71389db20219195f6e13069701f6d539dcf63a049726cdd8cadc412d1c43cf3fc0095ae5e2157dc668bdb924d7d7afc2b4632ab8a0e4ef71941a0a6a65645f6cd8570302f90b98bbdd01be238dc07780ee9b93e22ab87f26170d7fc5531347fb9fadcb65dc2ca20442a70be9e785292d533fa9496308a7b1588b50b45c17ea765de525259f036edd3984782399b46793acd5abb9f49e38b309c2363aead57264ac1a44e6432b81127a0bfdc29f01bd04e7db2b2545ed8426d2fe9b3e561793ec8fc875f2a71f31c13d11b94f892bb9f96bd2931b66ffa5e22b104c549e7c0d5010e4e70e271d48c0bd6e4be68c920ea77af85d12eb155d9b25703eabbd0ede1909565a55f11fcba848e01c60438611958101321898e95c8fdc936d31389bdba8073b382e5b1e2cd25993ad31586d7525f165fb25a1cf8c22623f983c025d21f0e52ecfec5f0232a753addaad88340ca39f00e9722f35dd25fbe8fdd8846bfc0288215d0638004009396bfcd5e6eb0c587797ae8297decbca48b02407219b910ce163552ed230438292cec430007886beabe7cdf5c6f9c3740a3dd6c52ba88e6d652ce43f90044193c4a42335291795c2cc160dc68b6225edb425a88d27cae159f77df3a2241fbe809c8f1122d245bf439df0761bec97358b96d6653bc83702b559bde5a2d12f771a2a11bc9dc32580bc3ccf9dfacd0a5379587ac5160b45d333a85cde46810ad2875b406f00438aee245ecc63815528a185e9e2a029147db7fcffcb8875e5259f15c3e467de02e035891b131bc715e54e7e27a7acc437bb9f6f84fa4456aa016b3578a73ed8a4706efb935be8b6abe0697e46d878d9c74e274f2816d2fd88146b316731719e125d227e002af95aa13f468a9bae4ff41a4a6036ee7fc321b3249aed4dfb6e75089ec0656ee4e87e1fffefbd74edf55a20d752a85caccf583c0d9e2ef1040b4d36a8e992ad50ce1c4bd2b300b344ca881725c164886a5f8f18035f6e75e67a3eaa2064fc24ff79897edb624e1a67f34deb414d5efaf4c55d482da108aa2ab7504fd5d7f78d91da5c20230380ec013b910b01a26b8bed8a05a004d52db30b7fb01f16347692e9f19f303f48ea8cbbed2d3a3eb277ddf4e9ed8026af5ce92a618c8942caf28b3249044347e14e5c3c2ed5ec0f9cccf1d11a5b290c00773e12c25feafbcceeb8ae6c25a88c9657c627187af6fe0bfea0b3cc36c908a76f90e965bc4135c8596534f444c91aaaaaa6277985e36248bd53ef0f74f103eeac98ba92c5350e4a0c586c851ad25df982e16b2d408de37c687efc6915a41197df379614aa657ab5100627c47896b51b000cb95505bac77e4e440ecd1fe50252fc98f15ee41cafbf717e144da35f424e141639de04ebe5d333e9df8c06821c689d1ef2abbfd12e8a1edc059a9279db7ff44bac1962b5f7297da5c989528229e98a91a3a2e351f371dfa34d4c3676725baa5fa4696f67f4239b5fe1e3fa351d66aa5a2df992426d94ba049bbb4eea0ab22e3b9a7409f2b6719ede64353f4112e4da3919adc16dcd99c545966256493d2699ae529e365c20515d95c013ba2627576fb75a030ffd25b85ed3fc40dbbedbca54427f8dc2255c16b742b3e2b82e1bb634ae73a402927e6dc424d1908942b9b0f2cc17909ed050defe85d24a1986291facbb4ecf9b7ff66c27f8e771d28ec6866e3d24bc97e7be388013df8ba8f407b9147ed9b3581784003a22eeada55656d2be271afce06ef3fca32ac9b77b4f2420d60e892c95418b2a1b7d3dae2738a073ef105e66c08488e8a91e8ebdb5a10e979611bd29245c13cc4c0f5b33eedc5263edd6c27666e0c3f02161114120230511406f9f82102fd8c37c36d4e383e445df4afc6e7dbaa570cfe05b3f6038ec1b7932b70e7b068a2656173d241e8f20bb6be3a3a3767111aa6f459f84be961c2337f6e03ed3cc6c847a3683894288b471504cbdc43a78f856801a10a87c77322e36e0ca426ec67ad3a2a3b79bc5cb81928a79a67a0fb46bb967cbab73fd36022f92d920204de61717dde6a85b7bcf57584c11ce54ac92998f856bf042a01c5006f155ac97d6757728caceba5530eb745e72277723ad34268b34008a97a27c370e9bc006aeaca4ac36414f35aa41ff400f698623a447c949f7f004f3c3fdb09f2af3c96042e215f0d4bbb23fda72d4f01dd9a55dbdec930919715a23e2cd772a260e2b91324c244d88ce1b83c92dce1aa0e0c255b80ed9325dec0e677563984a1c559ddb4a544eadeb2a38e8ed7736174a30d2bee6e0b65f3766e0b7a4e4d8022dd9f82493a9b1fadd1907147ac29edeb8cf8c7c58fbfa9b82ed3d9f9f05bfc900e52e29a05ca8d445b5245b16928dd61800ebb63933d9c471c2fb38776459641e9debdc606abf6ccfdf8fb41da88ba0745d96fd4557a879fee82e33df32d18b18d7360529f89f3dea680a5cb0c6a7652ee38589e1997f3e64ce4db1d3c04cd628fc0fd6e7ef1944108d48eb742a28467fa4bca693dbc8f923945256da2a83222d172286c82b1949803c54409de4653f258d0cf4266c83d5675ca9b5b3a3fb322b9c493ed7bff0a6165babb19c94d9e2014b13b099f09894fbcf32959b9d4ce71ddf9d24dee8bc40d6be92ee6e1220d84d68ecf1a0424132315c0612802b477b0acabcf346b0ad5ea329ea72f4de7524530bc00ad36baeee835908655faecd350463484d31623127c09c6cec446a9ac9a53cb6841ca2a097ceef88e537e209880ffdcfd5033bc3f5a885c271e41ee332366345fa867780beb3c1d5eaa496ea0908c560e84b404afb45f69169d28348ca20bb4f5693db19304d154f60a91ec4e9255be05739f5dc7e0b420d4bde4b188a8520bf39202f81dd3e2f4adcc6f4b4be16880103e0ab232f509729c91ddf0006d6a099a769b38affb89d7489b3bf261106aec362c77acdbb0a71c3da369067eb0f2ee9866a0bbdc4ee41ae81a88d860f1784565b7b1cdd350e8e12241103ff9d57c86c368775530773bafc058cbcea6309bd6d9c144cf6657cac5084ac5fe63ef038a71b3d79e6b7a32cc70039e182052f5cd5e415128e9ab1f553f13c165ea122d089975c1daf617766e12d9f3abb2501571eefde182b767e4b63568d37a8c553671adcee2ee4c7c6d77493e4599cd70d002a718fe0d7c31b7df3893f8b9993c90d7d55eea1c38292f1eae3a7887cfd182977403d5c029a42809f2c6fb8d04aff1c60106ba36367ecca0699866e5ec922ebaeffc4e624d0cc2c748f9c446da0c293d8ba7a28125145ce0936a2dd47172c4502ccf050145fc0584ad8608ee8f6c34c3e718fa5ca616722c5b3549ddb5e2f6a96e82c3d706bf255afda0272c199da51f9a4a869ce8b164694f6ef7593ce08b4bb0afda822eed4a0a7863f532fc0a22de9de5d3456574021b711c42eb1c9190de35ea592568f8ba5528c0f5fadc38e10b14a89a1e49fba9a76ca2478dcca20f8a3c78bb3e1b9869b7375d0deb87819ce7209ad4d73d84a92d08d23649bb50ecb4a1763050b7860afb055461b3158647b453d7977bddde0fac9415327e7eb2ea373fc8abd6793f576e72a47c92d6f6e19fadfdf2c6912365b74929d9b483c19f5146ac5a8dd943caf50b2e0a95fb19066a63a71862a540b2e41731ea66697094e51d309589ce9d25a37c06c9a12839c4c08a050a3ff9e502514f20d573c610466ac5399e11b0153954428f25d16958ab48614d34f768991f84411c401e6900fb0dfaab4108db0ad42fc9ae0a255e60fa4d92747ddda47d07de9f847e7a2be289798c5d34924aae419abdc41d30fb095c6ccabe5c5d5be73ec6197371ea74e08f0583b21901bd748db5348282cabaf57d883f5c55311f1304d7fcd30a9f0b22f810b1a7f089860e4ca0f23ddce9a23d7167762734b10b995d5bd2cf3b31f8f24b18d0a2f7ce1101d3a32d18988f162e91ac94b0f521f24fa287b0d2b97c408079336b89af9e842cf31886c701018ba98d5b0eb0e6d41b67b499f4c466cb1412db0e5937f7ffa83426c9234c713096444d0fc65d1b45f166e54d2a54bc103de110669fbc34555a6d16714ca37651e976b06a7ee96d80af9ff50162016a998451e2ce5819f3346b1fcdf6fe9ff3ec8420d4860a9980ce28fd8c55660983a3fb02cbedb5c638a49e5cdf0b69b71d78e071f1200608e235e6ed0ee8fea5567be12018bcd026412db0538c28bcd4a9afe799d5c677298646943c4200a039d2fced71d985d188f84dfd3132b6a015c50b8a60d712a97c89e0cd7d3a1740244c1522b117dad1220463f5d4af1004c1a2ad6b5708d7d6b28f8ae1e1e7dd1b2d3798b8c2e27a3559c7202aa268099eb3bbdf7c42d0d20b47e5623dba8e6aa1392ff532113c32bd836f4160abb287aefe648aaff6bb0a23928f580347046b64babf354790704538c6ce83f117ac7e83e1e0f54054466cc82b2144cf135be31f24f1b224e2a956827c303b0d82964e284b968c5ebe97688e49ca793a4aba81a3d36eefd8c12e3ce9409be63c3a308636a7b296b804d8125b4f29068ef44d3f2a3c9eb13e61d6365bb96d6973e88a70757b1d9213511d357d252df58d1e848d534d9517165263e803855e8caf387579f1ff0e7e9c3c8e532a2025d8016b70a45c24a546f0b21acf38d16b27eae6466e22396097090291184a7719beb4a55beb89275c6893e01f2075d3b73e165c39335d34a5aa7b280386e30a6df9ba917e1dc6774e2edaa0c87e8f5fcf89306a6fdbcf8cf52cf25f5df473fe350325d510421546765acd00b34ef53e56b01445deea042282e7d6ce20c8f967204c26bda9f2596fa378dc611091ab6db9e1e8d4e9b5c1cc4c4d6ee2ad82b32d08f8cb5a9dd9b03f7aa754f2738ddf2dc0c3318974ff3810765917c251c74ce3d7132c26b5f2ede12a6f62f2e8ddecd5e0d02f99f2ed8ac15641c586d68e093fbe80cefd6a7dbdac6d43e261160807eb82fc2aea870a22b25148d256a083325a5b97bcf0187f748b6c0a1691867344efdd53809fb9edea57669c33780a4aa9e65149937817d3d845d9fccae1876575d5383d06adeacd0f3371209a30e1a9c98446174b0b98560652d0643f120bdabd5484435871b42ad0ce36aa8330c7edd26e64e89eb84e0c72a2c6e49fb24088ae2bdaf7ef07af9bfe381dd6a9ed430a553de1bad4dcefd5239b389090925a69e44e25800d9fccda11ff4e1e4d3049386397f1145c3595ab5115255bc1c1eabb379a37504eda27b1a103b88ae8f174e1d182e3dfbb0b8317d05d6e08c191661b04537421fd84057a9ff5a6eceb68c5bf1f0e356df6e93d936bb6bdccb42127cba43e7615d522242df13f08e5fa162a641430c1431a7d7181dec65202fb618a690c2bf3361d7dc689d5e4a97a550a9b17c8a5ada8f32db3f774e9ed047c02eb7d1ba7add29fa07ab90f290e77bd91ee9b5208b1fb19a37f29dd1a492fa32156a7d43146a336fe6144d19228f975c54ab304565269124e069e864873c0eef23f2e7b012e84ad0c71d76e1b23b8b9a0a66edcd59f4b203a9773ce26baee206254b49efb10cc48bad814b2e299bd478fd4bd8b1ae2c8bd99070b259a9e204e42fc5f65f9e25cb4e4a1a3b67872314fcaeede2abbbc6978660c3e685f6dccb53160d1f7517bbda54177495c23fcf45cdd66363a70a84f2699e239b5071c9e6cb19069f3e0be9f4390c8028ae9960851e34ea18ff88d36ee826c0a4db4e33e94f0ec6651a728a1a2b0c15b30a1783ad4b1d224d87264779a817d107d40c75b77c25addd7b7d6a8b73b2d551f125daed95786920c4130d2061178604f9604a0e2f1c6cdbf3066fd28bf276ee0aee379bc049bc8eba361f4052bd2a698da312c991015c0fbc43ea1d2e72426279fc5181851a15a2f4883018ab01ff8745625f388f05f5fa9abc5d87a710a1227322626115b60f781f4ddd91e205c1cca582a5e37e005396703375846be4f36fdb76c277dc1a2ff1f183cbafc6db485a562f4d08262a207844a3d12261fa0ac479abca76f417df42b037e611b1b6acfda94d5dacc620c3edf5744db24bcc41ef1722dc0e620f8a35c50585a7cecfc97f05bfec21f919420e62a9c4f28ea9585cc056aee08ed8891d077a9647d9c0b5c3141f8c517f13b05bf0a18b99111d2d6e7b4892e78fab35d882e4e153060f0c44cb946d20ad0897a34d2a24d3800b54acd68fdd797aa362560dcede6d12909948bd6f4726a20142eec9c6b78d224b2c24885490bfb492217c6809e0628164579d2c2c16a90f28aa5393ad44c45d4e1500fccdcc684023d7cac4e2cca889333f048cd9a29de018e958d00553c77c74ab50d974df5f654233fb923e809ef6ceabe6a860386603003cc376e90b8bee74f2477343a5ae923aea4ffe99a91b9d9289ddcc3ca316b026b3d369aca474b7941588fc6e9cb062528b10f13b90dd55afd64f7b0ab79163163ce02aed379af25740ac5e37c5628c0b868b7ccfed0ae521c964846f0287d3006952539b2dffaf891bd01fe98a1685e71536d7f33ae85775d11545eb379e0916be616206968605e5033267f6f79cc651c2ce71a790ae5cef19fea7604e479c0793f82db1f8e85bec40d8c6a2dbc9bf76d02a616aced611ae1a7a3756d87dab2855ca585d0048e1e4222ed9d6fa24e3e13677256fbb9959b965727c192696a11474a7f6a6b6c8efb649b1f601c76576f36996ec7a20eee84208232c20e8502903d4e303e4ad7139c654b7e5d2aa262d75672cbb4f653e62ed8e4d28835f7d6d0efb3f39c40558d9cbf19f250681a5c8a59143fec80d6a69d8a265835d6562ef248fa4ac508bd60c9283f6e731baa786828d0f7a635e1d14a448383c8b0243570df4a42799afe03143c227e3fcf0b1393bdf8bacbd26f1041d5e3112c84755942fac77981fe16f048cd882243a8787b09bdc38847a5a9cc9aaf4d30544181ff014dca8b2892c00a933333df6d8ef79041483f2d8c6416897ae7897ca1da85e8f0a493be4520595cd0dd7d32c87999e703704ba0ac7d8b444dba807746123100e2cf7573843a0a755eebad6045d2970a0ef8c9adddff093e79731d5e506f1c43318fb25144ff5fb63041574e89216ebe0ac75d7dcffc35d095691723493c94dcc11d4480bf3fe7b76ba53cae5b409c002f2d1bb5eab08ac993054ec297543798700fe3e2877a4a0cce53599a66eb4f1fef5cafc774277f0e694ebd7f8748fb5140735282e5e0b9bb35b8aeb098775a33820c9b8decad3ad6ce36f79c347dcc2c60a5442d2eab4368827acae1f0ccd52f0475fab95ac57c3c9d7c2649d355756140d5a1e8c6eab8b67a5c169cb899230c4be1dc702323f2b07ee1fcf5657361e250ccbe93bb403abd857eee4335e454e8485a3b055c908c957dca3f9a288299729216103089910386fb994285602ce12b04be1819a2c80394b2410767d9aabdb591e4c4dcd08d1d5bc1bcb532496ff1fc968ac3ff59bc7266d8ecbb67f34b681331685a99b781c9752dfe83d145bd4f3c8ec634f028e850e246aa81f1d03aef40d000000000000000000000000000000000000000000000000000000000000010cf90109b853f851a0bf32b9037b600aae3ecd3dd1838bc9f18ae1661f615cf3d70bc270b6c31f55fb80808080808080a0a2381991afea644ece5cba0d8d69f838f7b123d2e0057a54509e0c61e8b293028080808080808080b8b2f8b030b8adf8ab8301edbf808303d09094000077770000000000000000000000000000000180b844a0ca2d080000000000000000000000000000000000000000000000000000000000320266d6b1b655f66cf8f99d35432492f8fbedfa97a2a48f0efaae65de6738e2594aa5830518dca079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798a05f3b41e975b46e86d5365943cfe25ae960fc2c7c1bb4eb0025eac5eb0bc6639c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ebf901e8b853f851a0529f2d89256fc038782a4d70b40bf127de906cbe211e7acaa3e928e0fd5cf11d80808080808080a0b4f4d0be01c65da5308bab41d52d8a7c93a1693c170c44d1f619b8364d40e3428080808080808080b90190f9018d30b90189f901860183039445b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000001000000000000000000000000000000000000000000800000000000000000000000000000000000200000000000000000000000000000000000000001000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000f87cf87a940000777700000000000000000000000000000001f842a058313b60ec6c5bfc381e52f0de3ede0faac3cdffea26f7d6bcc3d09b61018691a00000000000000000000000000000000000000000000000000000000000320266a0d6b1b655f66cf8f99d35432492f8fbedfa97a2a48f0efaae65de6738e2594aa500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adf8ab8301edbf808303d09094000077770000000000000000000000000000000180b844a0ca2d080000000000000000000000000000000000000000000000000000000000320266d6b1b655f66cf8f99d35432492f8fbedfa97a2a48f0efaae65de6738e2594aa5830518dca079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798a05f3b41e975b46e86d5365943cfe25ae960fc2c7c1bb4eb0025eac5eb0bc6639c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000189f901860183039445b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000001000000000000000000000000000000000000000000800000000000000000000000000000000000200000000000000000000000000000000000000001000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000f87cf87a940000777700000000000000000000000000000001f842a058313b60ec6c5bfc381e52f0de3ede0faac3cdffea26f7d6bcc3d09b61018691a00000000000000000000000000000000000000000000000000000000000320266a0d6b1b655f66cf8f99d35432492f8fbedfa97a2a48f0efaae65de6738e2594aa50000000000000000000000000000000000000000000000c080a0ae5e67673b90f2d6802e8dba26aadb2e8b81e059d1611afd1908e743e3c0b75da004886b0ac3a810519aa2395bffdd94fbcfe4a2de989ec95d1aea0fcd09afd931b9235302f9234f83aa36a7830137d664748315f42594ac9251ee97ed8bef31706354310c6b020c35d87b80b922e48ed7b3be000000000000000000000000000000000000000000000000000000000001edc10000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000001fe000000000000000000000000000000000000000000000000000000000000020c00000000000000000000000000000000000000000000000000000000000001f60000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000002200000000000000000000000009d69394bd71906a235f9113cc04321f573958d3e00000000000000000000000000000000000000000000000000000000000005200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001edc10000000000000000000000000000000000000000000000000000000000320267dbfbf2c535ffc52117d4cc616b8d97bd07cdd8585ab67d9095c067e9de6d674400000000000000000000000000007777000000000000000000000000000000010012f20d5ba20a09e185d452c999c129d712b83c75480e2e029fc895986d361a781b2045b8b5226f9c1fd712d8b1a5f1faca84f5fcee87a7d1dd2b57f55617df000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000004f9456000000000000000000000000000000000000000000000000000000006436f8e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d65822107fcfd520000000000000000000000000000000000000000000000000000000000000000bbe20eedcc0216c615d3a0550a5507bdb2f9912eba7b608300486e871a4e42491dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934700000000000000000000000000007777000000000000000000000000000000014852ab81d236f35c396d4836a6f82239f5672a4b6136ab9ebdd8669a9f9e831b87a26944e5c04f16b79426135ac11b155922c14178bf3d1ecbb1fb12ccc8119a22df5003de2d5956c745f9e825a8f0ca1bb1e265d4d431781b00765e0fe37280000000000004a00000000000800000020400004002001000000000000000010000000002800000000000100009000000000000a000000050000010004020000000000000000412000008002900000000000000000000000000000000820000000000000002000000400000000000080000000000000800000000001000040c0400000000000000010000000001400000000081000001800800008280000000001200002000000000000008440000000000001000000000004000000000000200200040028000000000000000000200000000000000000010000000020200290004100000000000000902080400010000001000000008000000000020000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001edc100000000000000000000000000000000000000000000000000000000005364e600000000000000000000000000000000000000000000000000000000004456ed000000000000000000000000000000000000000000000000000000006436f8e400000000000000000000000000000000000000000000000000000000000002e0781b2045b8b5226f9c1fd712d8b1a5f1faca84f5fcee87a7d1dd2b57f55617df0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000017e000000000000000000000000000000000000000000000000000000000000016202bf20ff78727f38ef16e03bfb3d4895f35cc626f97ede7cc99f48aeff8661fe32015ea8d62ec7a79e01cd398e85867bafdcf55cb6a7121b6fef097f5f5656a5d11ddf336b6879926ea2ae425e91c748a553c9a496cbe2ab556a91689f75ee2b01ad3c43aa774b50a9d8411a9f65be42d6cde781db1a1949a1e886f868917997b21ad05b7c1eb0d208d17426c52831c6347a8db75b12bfeb2970c4dc6666e4eba0492d2ec318089b11ee7ec6087ab6a3df335770526cc0c1679b764d847b4ec1e303d400c12e690aa26a3771e5676e7ac95e2dc7a1b33be698f077c598f880d4203defa26ad36b84573e923af347475c7c7671be245e9859ca1db3c047faeee4b1c0e81d8a92915c2b94ff300e18f77f70ffec15631161e0bc3cdc9143c43422c208187652c1ec83c5d282e10587216eaf56689e5fe236f72c13eb9574afabc622a739cefbbe11aaa4e2e3d4c5415818914fe554a07be374f565d9bcebc0134940e8921b87bd4f6b42a6432e6e176be5ec82bb8eb6bdb7e4acc1f1e99725bd3ab2e3fa52e02c2741dfe6eddf5a3846dfd57f6a72e834faa048cb007826a293d9e163d47f9ea635871b25afcc3561dfce77b3a2604b3c8de90aa24916f41aed62d2e0c0d18f9c259bf614f1321c5b7cf7b5bd73cec408dd85f046bf36302e20f3603b7832071796022e893386de4e3b170135a591b1a44117240ba85876dba586b1f31c13d11b94f892bb9f96bd2931b66ffa5e22b104c549e7c0d5010e4e70e271d48c0bd6e4be68c920ea77af85d12eb155d9b25703eabbd0ede1909565a55f12f7e30e74b0329222f6067cad3b4324a80f570506985d729f7780955333f40e615f065023fb607d975d7a2b9f234137e72260d8f6b586baecf42819f8328dfb3304441f2c9e97d1fab9a3625073ac3d2bff6ba2f8d659cbc6f66e8d9afde1ef229ff39bac1ecd65eddc4953e2726a72daefa76f00d58e11c9a9ba3448fbe0d3a03db78d70ed9c574ddc45de5c73efdf3113ee70a4b42cea9884f85c1b995516912800abeb70f3022d5de6d9f49469161a36a6a309099ca43e388908635ed4ae825a14b7cf5213454a1f345497008ed417e5d33ef84c4934368b36f27606072192a1b43396f89647f0541dd25f55b42c5295d3ab2a22355664608b8dfec3c9d76045b27d8c2bdba7f376a44826bbf4044aed0d57068489fd32a2bf52f8613aa150185aafe655d2b86bf8867a6f7728c4133fb95776545b19767a0d7144f60f5ef038eac390d1cac6f9882211d7302137efc82b93b8f9c55db629f47a2c61931c21d01d5ad967c9dc6c1abfd496a74df2ac4714cfb027bc4d8c0153543ca663ded2af64f7396ed3b2ebd1976386814e94b7f7fcc3a19a4dd876288b905c381bc8f008de145083d6404890a863e1af1dd897aeef2516b20df50befb6c708c9728a22cb31d80b0e953aa71230d2462bb0668dd8701e11bc5240d85184f9298e2c5a3257b5dcc3e138df8b7d4162d6253fb5c21a65e952600c8764c613c6f43d22c861d4380cd688c286e9ffad6bb8582421fcab96b075769cf48b3160f056dfac4041b08287533a769bed0f08fdee9a16c5c8f414eb35830793c7b64341fef79dbc529a7b99f85d4e2e88b64954be967c5ee6386f9131b80b454ce70209f78f2101d0ca71da273735bcbcdc5ea5d3d54b607820b9bc852abb1b733cb7bb5018276d30c4c0a7f9ffcd318499a2041043494b82456ca8ac6f07678a8b770329b7c00f31e70e97ce48bc796570be27577e8986ee4c7fa51da44bdecfddfcf18686cbddc02ca206d9132d451ab55cce8069f631412ad2ae02b1a8245d31c0a65854d07370259f632fe253b2412c5a785148248d660d7cb6bef5240749d6ac4a4ac59384b27e7019c6cae15ef7c82e5a952f4da079b6205f9e16f3d3c84e94b490530c5b602d4bf5e9d34f2a785cdb7f7755d6d467a9d88071bbdf8c79195730db7d0b7872cbdcdabab02bd4b8487b726c5ce6492344ae7e900a21893e7b840b46380ba99278ce95322dc23daa97995d1149d425952913428c8ef8659dd2cc2895f12b08e0532a254fd5674fcac1b0992472ef75337d8d77f6fef3720d4b7b17302478c7d2e3b8dec7af4c681aba5e25d8aa3f4382b0082066c3f7a0b4e42c4637df90d9a1e2f3fd1cffa7e0d5577f5da89353521ed02cb1c39eb5746cef10ceb74c3fdba13199b42516ebfe29af40da64ad81b46b7bf04bf25994255c7a51f6839848810025bb52fe7500cf1ef628a07747894e3b73d53e6b2997d0654f1ffd0c070455400fd7e9d670984ac807a0f8131977ed1806fd3c0927c34b7b4dabf011d31e86b1b7932b70e7b068a2656173d241e8f20bb6be3a3a3767111aa6f459f84be961c2337f6e03ed3cc6c847a3683894288b471504cbdc43a78f856801a10a87c77322e36e0ca426ec67ad3a2a3b79bc5cb81928a79a67a0fb46bb967cbab73fd36022f92d920204de61717dde6a85b7bcf57584c11ce54ac92998f856bf042a01c5020d266b1ccea774955484405f58ad161251d879a87c43d5dbaecd976ac5d04dd2586d70031a86b0dcade14028f36a04508494c7a20e98b3b21f7765e7b3ef68f10960709e63eea35a26ff47424e18df8cc271ff3049262c855d6a131695a395f2ba2f1b039012ac8a2abdf6d9f6b0c432f0ae78b9bccb99f89759434477257ce1f44cc61e95b9c9843ec8efb17c640fc4c837ec125fb25323d3f0644615d21721607fee4d68e2dc9bd29f5b13fafe39b0710d0365dccda35e3c937aed1b6949b2a0a7523011eb706357b85e174376ea7cadbd01ed0dd1bc6a8e5a5a11bc6131f0661dd6365b13c6e2de50b98cba1cde58a921d19936c711424eb625b7c35cba01a0f7dfa8d6f86a2a02425ab48e2c28f8f2f61adbb744c221b9c4f35b16c749c227bcee1202e87537c7441f421c855ce87d858a679f09dcf814bfa1f26f7d9ce18f723d2f84d4b25ec60adbb6367e92270836d03c71ed43413767342a4fb8d6801b8755bf65e7947ed4459ad6486fc1cca1f1cc89df3d307f01d8ac68aa1d08d18aa35a46bf245589c599eddc6337e764c36426f7b7f5d2afde0a76fd3aa536d1a165f9f23cfc65866f574f2289aa5be056dd32c72a204ba8328dd9b0b4643790463484d31623127c09c6cec446a9ac9a53cb6841ca2a097ceef88e537e209880ffdcfd5033bc3f5a885c271e41ee332366345fa867780beb3c1d5eaa496ea09160db3fa7477a2fff436ecee95aa2d51ff42ca9d4fcf021b6e501410fd41098a1a8f6021636ece98c27bd74740b7280d3a5e13d9850fcf7f2118c4c91572ba5826fcc4b0837d0b394f6683cba38fa35a5e2bd242041533bd25939cc873d1f5852a2f57cb172eb17c2e3c351240a0b2b334978b90ac18041b09aead26649b1c1c019e41731e77c6b2211d7da94630507bad027561dc625b7e84094378e599a57b09eb32c2a67cf5f2f0bf9250e6da07b165f97dca10517e9f3fe3561d02ec83a722b544bd6e25ef27d9825d13651443c4d984d7e5d0fd70c2a7f983b3ae8c698d27a2a0bf2d35655f477adc99c56f48773922831746f8af58de941a020986ad7c23fb7d31c2f17f305174db26b40447e64c66216dce98e7a8316dd91dee468e602206a4d1d18fa7827f733037fa87dfc9c74c9df0960867087c776382b94db9420a19e5338e17e8a68cb7621f0b56984610bedd3d9b77dc5447cdb129ecc33596079cf206e93904368cae07f0d449e2095f8abd95f26603d2db047647babc8342200be0095aa5489fd18cd00a52f59b70ff04c4b1e572db76d08bad419abbabb00b9e485e3f017807c12b427b5e0e648cf7b16065e313c1c073ce354a5fc6812c02b8d4b6aa1168c575dad9875087fe9f61702309febfb99b895387cc1104c35e123b713019b5e51c320fc2521cdb5cfca20f617773fd46d3872128b87df6f66a21fb3fa16711245ab65eef629c5e6073efaff5b707657f4442f2eb2637fa71000f14fc691a71aacf902c0c1a1a5d7d8d351b8b3cad57acd0a9e47a1abdcaf2b70aed8b7370a6bb2bb4f3d679c4f9793e4b256deefaef1e6dbcdbb648b917e34822d833d2ac1614aebcf360d328d9271f27c52c93de4a9455ce6cd8d2140ebf6b21c9b172cf47556efc5dff9afb913e328a708292bfb65c96d668f4d0b3a9a21b222039156cba9980d6bf11efbd8dd893378e5dc1b323c57d8f702076c22d125d1489bab2553c5521631c35f7b5236007ce8f37012cace78d6eb39718904b5dc31ddcb6f4f175e52bcf6c6008f6f5a572925600194b9af7ae074dbf85119e3afd141b2ff2652a58f043e97f11b77997a9da1c96c18b5254a107f24e997a3ea61c2069b9d04d49bd1bcd2495b19bc71848f28bfb4f0346b682a1b474e040b056e60a32b5e8aa532103101cb45ca41c6a690c8688523b8566d507f29eb44fe2d2490e81f4343ca61c8783b83e40e3ce66532f186e9d09bd2667cf974a763072a910121aa5e86e151d92a868508b680f795bc30b4502769f41e3afef5f321be9ce2f1cff3eb3308d65aa0ed780cc889f605f35eb5e02ba772d08db2579f8561c61fa09a8e23ea1416fb95ca0c7e139ddd16f04b0c872499e44cb5a03868d6c5fa1300c19a96b8586b8f33bd760c6350713696b7d3236acb0eb35bde2e6378e9ef9b117b02290ead7824d42452e332f6ec95a7f871da9ebdf6ad02c959a1a36ba33ff0089a4f5217b7bfa5379a507b1e994fb7b8fef489f1f2cf6fdedf0e530635ef31faaa1a37457c445836376dc5cdefc7770fbbad8c326955655efe4ecde89bd2f1dc62a2551a45206fd7d42605aa1c0fc80476b741bd7df1f0f2db0fc387614240e78427bb3a8cbbaf9bb112da06ea6942335f88c65d42d17816136509ec39b51079b5eb2a8cd15c3d1fbc56dd72c3499c101e2fc9126e8f194c6c8006faef30917c5e535439c6b0d78be52a4d17a3a25d0878649b668db027eecbbafcfac7a612138c77d1511f9cc5e763eaddbad6d9d8770705ef7b4d062b4c6dc72f30d1d272dca8700ae03a4c6d2cc6a0a03f9bfb2615b2b294515ca80827ec9cbaa7746112530f5e70f236a641c05bbc8647dd130f02db3561f9dfaa1d687235bccb0498202af478a6070dfa49df99785a61eb5fe5f18777569c18b08d2042ae8639abbc225b832a2fbcd95ff43a3fee4fb2962983af8304ef995716110a7ad35c538697c109c01c427ca6cefef3a842fcf74b1c49a3f2da88b85fdb1d05e20cd567538942fa2f0ffbb5d2ff73d60d562d9a0a6894bec3d85a709b43e42ab64e2306cb96919e078b899f3155af56390d06ddc662afe8d2c91fc091e2c5cbbfab3fdb3f49423a5a5f7741f2d70c6736adc66e7c2caa89c6bbc678bb4b445a8a63d120867f01f164dc87adc853633ca7bd4b9d585c2a637d1469da612b5210476fc8d66f90029bdbf7fa5eddc8335cd23deb4bb47e1582e64a03dd021292d34435419af80af178cdfab0fb9374fa0fade48108cd3a571b814231784ac37c9f6071fc6ac0bb018595c9d8afbfcd6f31832b2581f7f7ce7c45d22817aab8ac6df0e0995e12dbd1595c3377b707b816c96ceb1893b9e7c747a577bb7540b89eb3ff7cac878a7a121a37b38fcd3248abfd24b50e25948dcaeff8c1c7ab8b745a93adb87cd54fca223dd940ef4d7eca9dd69243c74ea128ed624e52c7a2257f3950d0c7409d665d912495f8a8a2cf2482c1d51cd7793d3d31f32ffc24374d8606daa2a423931d97019ba2fd3ba773645b7fd01cf75e8201dd29f694a72136b585d940bff8867654223c28d0603d85fe4472d93ee30e35f46e27b8f40f9a9ad03992d9ff23305fc062c7d95971baae1ab074df88d41e09ec9752efff012c482e0cf9aea2b78cc26db146a278d584575ed615f5d168e6df7a832322da093f0aea706cee594207427d3005fd910843f3dc54b14f8b187e3b495b7474792743fc2e43f62bbc7fd50a76513f1fa4073b15a42d1e78a708134238f2521c749d086deeef512823b514aa64122b365efd51e11415de40826971c234d571c3e2a0507226c6ccc540e43a9aa32244b29784ac824c20d3d1b72dc7262f61cce4eefbe9a4ea4cb1061e4a71925aa13f31d6ce80bb7c56bf47b91cf107ab17168dd4fb60614757d7c7f4ebe0320692235fb502621ed9b15b9b3fa23aa1bf266a2a2c3f2386b52625e42e0cd85c37319e3266185419bcf6dea997e52ec8fca5887a68530002fcc5b3619e88d4dc9a918cc36bac2416ffa9b9734ac4e67a93a800f36d7aba4ecfed8d65f62cf6ad13d184a8c6406e3ba17b8aee6af0721ed091e1d225d044629a4ef5153c294a3e87e243e03bdcf6eaf7ee56d9d969a1f054d5774a7e2c363b160386b909c89717aa7015385f4ab8b6c97805c12c37d981ca945134cb1306d39a4d136b42c36d8aacd2c37575a11b17fa50ede8072d667f64bb55e3b54aff2c3c61782e442e088db7c1ce62287477132bef00c17e9992dd42f35b5e098eb97724fc4e697d75812635203abe8f96000d9553012be065980fb16d6d1c0c80457585c6eb699b0e8a6e36c1cd518dd1ffc517afcb9114a4ff629d06cd2f0be1495c4ee09243e96529e6c3a228c923ca2a703930ea94f7a5803645324ba9ea1a08e6c3241fe57a80bd24f780566342561189baed15e85ba9257b701d651754ff534e51279961ff379974e34010d80773b169a140e0ee7c5e2c0312c9dee46fb7b309710d448a43805c7eab513e84e346411b7145f77ff4ced7b32eb641528f78d88af0fe88e0840e9c16f2210e18c1da605bb04a4c963441c06fa839f722b0c67345168bc0fbb1c826f20472c7551a1327eae9eddbc24e63814fb81320cbc6f03488d64587f3e5f53c03db02cb15412e622f9ec9944643d4b5530b0cd4d577489d8ee499ecf2b74fb72423412aca8530fe53c3fc584ed8e39f900843ac73e36fb113c343cc197cd689a09e12f29203c1dfe839630f6932f3a29de81ba787f6044e70dff8981b71fe82f8a4d01f45770a53b090026a003b3e639eca0e6a1e5bdd0aad456e89d83012ea1f53e1a5fe848b33528f7195a7b0c36d4315f1b96b62d5603e87a13e12a97ec335e3922d4339d9575cb26d5691da78a738aa5c84aecc22a93033a6912f84360d13e2e23b0185bdc2cd331bd26ababcc91894935db5c7e1800b8a10db884a7614ceea91f38bbf623c5e7e7238eef06cd9fc9e43507c56e8d6212b7d03ef2db0dfceb040c0b206e1b7eee6ae564b15e4c02e9c3e4179d78bc68a9fbc2166cb8458342f218dc631705602b2ef1c6716dbc08f30810c9e2ab3ac7a03e300e9c21cd2a0240025ed5eda13e6daa246241669acfae65302dbca5c579d3b5c3a4c16a976209e22845337f9ca033329f849f3ccebc69ff01b301d99dbe9e79058fade67bf881c70283f41eaca130d1423e733ccd520f26ebbe8d304cbb8fa2f4bf67e2e041e5e90e840d5510d33a9f700219fbead699901ea3b3f8aa3d5ff0c028ceee5b5e711c29e7740bc98f4b78f15f2aa1e01449f1f15e68023861f540d2ae0541273c641914ea0e6abadbb2f11618bb678c8b7abff1f6d4e9f789706cdbd8dcc1acd4bbd506e42e928d134366d3f32d8caa4b86736bb065b1a3f89354835b7ba5ae1e53cc1bd9f5dfa3e0d49c0a0a8d32670c382712e30f8f4cb8fc980785fb6012df752e02c923d3f56f5764a41629646f9fd7641c8365f0917f85a64d0ba36179e2c2b3045d7b3c6ccfdb60cd5c365c43d88e231465c6616f7d2cab0db88cd79268e5ba0cecb98875958ee3827af7842e35d9cc89c3776e5640f2433a6afccf0e6fff9321e31802746639bf2bf77f375dd6799baa184b48815f24d3fca5d534dfe61d1306d15e97d3a320457ddd2239cc52fb31dbf98709cf090ae59afabbda6da75f4e1373a28bcadc2405e0a7f6dbf9a3e26511fc600a496b4623593213283a1fd33f000000000000000000000000000000000000000000000000000000000000010cf90109b853f851a04dd5a916917c46969db2e2093e73972daa52d5582e183eb0bd08362e7aca1dc280808080808080a03605d0d2c4765be29883abb71f1c4b162f9d6786835ccabb068a243ff819909f8080808080808080b8b2f8b030b8adf8ab8301edc0808303d09094000077770000000000000000000000000000000180b844a0ca2d080000000000000000000000000000000000000000000000000000000000320267dbfbf2c535ffc52117d4cc616b8d97bd07cdd8585ab67d9095c067e9de6d6744830518dba079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798a05a4ba290d849b719839872aa1e6999ee672fff37d450956de85fe07c96f172d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ebf901e8b853f851a087eef6c6fab228bc280138441d870592a3910f042806b16f257faf5f1542f9a280808080808080a00ac60a3a5bafa4560edb7bd978a6b8980fa818c5edea7c010986328de4d9b4ba8080808080808080b90190f9018d30b90189f901860183039445b9010000000000000400000000000000000000040000000000000000000000000000000000000000000000000000000100000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000080000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000f87cf87a940000777700000000000000000000000000000001f842a058313b60ec6c5bfc381e52f0de3ede0faac3cdffea26f7d6bcc3d09b61018691a00000000000000000000000000000000000000000000000000000000000320267a0dbfbf2c535ffc52117d4cc616b8d97bd07cdd8585ab67d9095c067e9de6d674400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adf8ab8301edc0808303d09094000077770000000000000000000000000000000180b844a0ca2d080000000000000000000000000000000000000000000000000000000000320267dbfbf2c535ffc52117d4cc616b8d97bd07cdd8585ab67d9095c067e9de6d6744830518dba079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798a05a4ba290d849b719839872aa1e6999ee672fff37d450956de85fe07c96f172d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000189f901860183039445b9010000000000000400000000000000000000040000000000000000000000000000000000000000000000000000000100000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000080000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000f87cf87a940000777700000000000000000000000000000001f842a058313b60ec6c5bfc381e52f0de3ede0faac3cdffea26f7d6bcc3d09b61018691a00000000000000000000000000000000000000000000000000000000000320267a0dbfbf2c535ffc52117d4cc616b8d97bd07cdd8585ab67d9095c067e9de6d67440000000000000000000000000000000000000000000000c080a0d86a71e8e531bae3b2a2e70d98e516ccf31b6583d936ffa31c3772ac265db828a0420f5a8067c7eec5214117647da149eaa4e7c78a10d8ee6fa62001ee1b680f9fb9060002f905fc83aa36a7823d3f647482a9c494bac000000000000000000000000000000000000380b905930001536cb8da3dd105e94414690798c7f100000000057b78da8ccffb3bd38b03c0f12199bb964b426dd6b091efd7dc3ad1a9d321d1713b2ea1189d39280b4791c5c858729090c3b6182ac75951eef74b38191686b35c4669656ca9dc5a0ce7e9399f7efffc03afe7fd6e7485887f6264e97e9856a6978b65c5db3b4ce57cf4812abeba0de10d0d6ee5a2cbc9885a2163a58d1895524adbfd86d795eac74ec74d783b599861bf4b7b3e6daf70b3ae0e5740c88a4dc15b893f76fe074a718bcead52fb2a06d6e5f1cf3ca344ad05dcf5ca10bd9bc2809cd8ecd40a2dd0e03200dadd8f921f0e9953a7e6d8c7dc99e60cf6fe81465175e0cf99b702ac6a13706e64ac349a1119796eb0b6e7d5ae48ad74a5c997d679ef9c637c619587cb98ecf88e620dacdc57701500c74e087533f978831a78bf3857cb6044a8c66e41645cdee74ac7cdac69a8484083eb003827ccfd6b92c77b7097a15f38a419f6f0578f3568465e6fb639f1a8d6e52e9d17a0413100ca8d08b210a2e5adb2bead3dfaada14b2513113802f3996daccac89014dafd1368700300053ad7daeea2a4d4d9e8502aa44337c6ff91165a25de84fe5273b2e5b7f4dda3a0410900125e7778d5c2a59a2ca2ce36bacc9e95812ae1b69a478fc7ecf5ded14b68a80a010d6e03e07137d5de8082773f8a422390cd0a592d81e6e623a42bc69547e6b343e1d9a14e64ac3486116e29a8315486a2324d93d3e33a8344ffdbc2655b76dbf72077e43c13961a6a52f0565f2000881576c7a113e7aa6e9a6ed4679014533f8d1bf80ff44ae5599813e80d2c1f2fd0a03400864952137916724a4504bb118ccaf9236f217a1e43c97e471397a3f86672226dd0e02e00d4dcbfe4dd250a97d0c830b3d93213fd048fed38ea8378018c726be68728e22c687037000e3bb6d2858fba82db877c2e28fa1e2cca4ce57b6bdfdba7513dcd2649da93544083d06f85c8f4d21559e8e7651dcaa0c3aafc4a691fdfb27f2f39ea08ea62feff43cf0d80061500b0b00cb246f3641d83f5c934c477ca641a5c545da8aa0e4662c4c5f26ee70525a04125006cf268fbdcaddb151168bf24d3fa2e09f7445d859ff9e5ba2fe71e7ef8861ba61834a80280ebddf1bc99e8d00ae5d2a0893d64774d4cea1bad7146fc964526b6c4617cd70a68500d00f7e8131b976b9537ab4e2b9c9cf086fcfd82e235cf6c6eabbf8030cc3fd1e395071a840120bfbd7fd4a54397eca0c0f7adc1231dd539950f508f92e237e3aeb91468c38d4083ea0068a89abd38178e2e9f67559758419b6908d48d58967547c9edfe98ba016e050734a809807957936c079272b238748593ee3a73f5c7647d0ece20a5c208769c484474aa2f192b6dcc780a770c9b40b42348219a34a746cb495f3f1efb710a816ac142121461c6f7bf82fb00b0dec5bfbcaa2e32983075c84989e439154bfc7df1d0549680a6c1a4999c18aa010dee074028fcade2995b7daec4562449ccbced0caf7a660f49ac4ea07d485b22348948a0415d001ce8e16f70ca5813141f7f7544586da1364d2f77dd8fbb7cc937c6d46136f93d68f000009a72d59e5a9bdf1de5e60bbb17358bc65e8ff1566fabad6d6eb42ef2781f6d6d40837000bce21c64847942319b4ac1c92b2ee02fe2bfbf43b685908b92a0c3cd25f21641a0417d0084138599419cf73489312bda0d53e1fa748e1f7927380961470ec9fda73b36978c953661c8065aaafe09fb847fb54e35b3c68f771b6953941b2b4e619b486d81761ee187bf828700301cd34529763c60738c12e1ccce6ddff8b8338cda8fda245e5d8d5613d20734408306df96bd65c7b8d5c27299269dd9335ef7cb1f3357145983f365ec2f933686fc6d77d0a01100ca3a3773d3f0a52559ee691776b714fedc8c7b2cd672c7065c295693d0616d37408318007c18e9a9f6e4929e20d8efd4c2428065720ed1938af8e5348c14b373b0a845d1063468d2f96f000000ffff86f9aa5001c001a08f785a1c8e4c549c415dd948da80f86e3aaabc4e7a784604b6362208e0fb6b85a011d366d57b6ad95cda2eb6b618704859b4d433ad7557cad177eff6f6bae578cbc0f90200df8345de7e8203e494e276bc378a527a8792b353cdca5b5e53263dfb9e82168cdf8345de7f8203e594e276bc378a527a8792b353cdca5b5e53263dfb9e82168cdf8345de8082062294388ea662ef2c223ec0b047d41bf3c0f362142ad58212cadf8345de8182062394388ea662ef2c223ec0b047d41bf3c0f362142ad58212cadf8345de828201949425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b8212cadf8345de838201979425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b8212cadf8345de848201999425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b8212cadf8345de8582019a9425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b8212cadf8345de8682019b9425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b8212cadf8345de8782019e9425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b820f08df8345de888201a29425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b820f08df8345de898201a59425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b820f08df8345de8a8201a89425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b820f08df8345de8b8201a99425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b820f08df8345de8c8201aa9425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b820f08df8345de8d8201ac9425c4a76e7d118705e7ea2e9b7d8c59930d8acd3b820f08"
+}
+```
+
+
+
+
+
+### `debug_getRawHeader`
+
+Returns the [RLP encoding](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/) of the header of specified block.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _string_ - RLP-encoded block header or `error`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getRawHeader","params":["0x32026E"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_getRawHeader",
+ "params": ["0x32026E"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0xf90236a09f73691f6dabca4f0a99b05d0a701995506aa311dcaa9ce9833d6f4ca474c162a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a078103ea8c47231886481d72ec1afae6eeb06c3773ce24a91323d5c9eed69d4cca0008992da2531db404f07b0871dd620a94ba346963e1b1c6dc7b00748e8593a1ea0b6c3890d9604434fc52f722848c84d1770add20cd75bbc28cdedff42940dbb56b90100200800000400000002000e0000000401000000440100000000c0400600000002000801000000040480020840048000000000400000000000000020004220000011002000000000000204000800000010010002000002000000000040a000000000000400020000010885000000000808000000008800001004002010020300005000000010002110410402000000000000000890000008000000000000000000020040000002000000000000810400000040006000004000004080020000000000000022001000000000000840400000000220250000000000080402000420000418000000000000000400040000004080040010200000000000108020020000808332026e8401c9c380833e3c3c846436f93899d883010b05846765746888676f312e32302e32856c696e7578a0112d8f15793e7df7f8dcdb21c891cff78c0d1839cb5b6dcd06116cdbb99536ae88000000000000000008a0cdb97712af6685bb9650d21d609525913293c48adda7c45990926daada335c9b"
+}
+```
+
+
+
+
+
+### `debug_getRawReceipts`
+
+Returns the [RLP encoding](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/)
+of the transaction receipts of the specified block.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _object_ - array of RLP-encoded [transaction receipts](objects.md#transaction-receipt-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getRawReceipts","params":["0x32026E"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"debug_getRawReceipts","params":["0x32026E"],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ "0xf901a60182c70eb9010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000040000000001000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000100000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000002000000000100000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000020000000000000000f89df89b947753cfad258efbc52a9a1452e42ffbce9be486cbf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000828d0386c1122e565f07dd28c7d1340ed5b3315a000000000000000000000000021849e99c31e3113a489d7eb0fd4d8c0edbe47afa00000000000000000000000000000000000000000000000000000000029b92700",
+ "0xf901a70183018e1cb9010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000040000000001000000000000000000000000000000000000000000000000010000000000000000000000000000000008000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000002000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000020000000000000000f89df89b947753cfad258efbc52a9a1452e42ffbce9be486cbf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000828d0386c1122e565f07dd28c7d1340ed5b3315a000000000000000000000000069cda9d6cc6ce05982d0b4fdf9480f2991f39b5aa00000000000000000000000000000000000000000000000000000000029b92700"
+ ]
+}
+```
+
+
+
+
+
+### `debug_getRawTransaction`
+
+Returns the [RLP encoding](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/)
+of the specified transaction.
+
+#### Parameters
+
+`transaction`: _string_ - 32-byte transaction hash
+
+#### Returns
+
+`result`: _object_ - RLP-encoded [transaction object](objects.md#transaction-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getRawTransaction","params":["0x3a2fd1a5ea9ffee477f449be53a49398533d2c006a5815023920d1c397298df3"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"debug_getRawTransaction","params":["0x3a2fd1a5ea9ffee477f449be53a49398533d2c006a5815023920d1c397298df3"],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0xf8678084342770c182520894658bdf435d810c91414ec09147daa6db624063798203e880820a95a0af5fc351b9e457a31f37c84e5cd99dd3c5de60af3de33c6f4160177a2c786a60a0201da7a21046af55837330a2c52fc1543cd4d9ead00ddf178dd96935b607ff9b"
+}
+```
+
+
+
+
+
+### `debug_metrics`
+
+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
+
+None
+
+#### Returns
+
+`result`: _object_ - metrics object
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_metrics","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "debug_metrics", "params": [], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "jvm": {
+ "memory_bytes_init": {
+ "heap": 268435456,
+ "nonheap": 2555904
+ },
+ "threads_current": 41,
+ "memory_bytes_used": {
+ "heap": 696923976,
+ "nonheap": 63633456
+ },
+ "memory_pool_bytes_used": {
+ "PS Eden Space": 669119360,
+ "Code Cache": 19689024,
+ "Compressed Class Space": 4871144,
+ "PS Survivor Space": 2716320,
+ "PS Old Gen": 25088296,
+ "Metaspace": 39073288
+ },
+ ...
+ },
+ "process": {
+ "open_fds": 546,
+ "cpu_seconds_total": 67.148992,
+ "start_time_seconds": 1543897699.589,
+ "max_fds": 10240
+ },
+ "rpc": {
+ "request_time": {
+ "debug_metrics": {
+ "bucket": {
+ "+Inf": 2,
+ "0.01": 1,
+ "0.075": 2,
+ "0.75": 2,
+ "0.005": 1,
+ "0.025": 2,
+ "0.1": 2,
+ "1.0": 2,
+ "0.05": 2,
+ "10.0": 2,
+ "0.25": 2,
+ "0.5": 2,
+ "5.0": 2,
+ "2.5": 2,
+ "7.5": 2
+ },
+ "count": 2,
+ "sum": 0.015925392
+ }
+ }
+ },
+ "blockchain": {
+ "difficulty_total": 3533501,
+ "announcedBlock_ingest": {
+ "bucket": {
+ "+Inf": 0,
+ "0.01": 0,
+ "0.075": 0,
+ "0.75": 0,
+ "0.005": 0,
+ "0.025": 0,
+ "0.1": 0,
+ "1.0": 0,
+ "0.05": 0,
+ "10.0": 0,
+ "0.25": 0,
+ "0.5": 0,
+ "5.0": 0,
+ "2.5": 0,
+ "7.5": 0
+ },
+ "count": 0,
+ "sum": 0
+ },
+ "height": 1908793
+ },
+ "peers": {
+ "disconnected_total": {
+ "remote": {
+ "SUBPROTOCOL_TRIGGERED": 5
+ },
+ "local": {
+ "TCP_SUBSYSTEM_ERROR": 1,
+ "SUBPROTOCOL_TRIGGERED": 2,
+ "USELESS_PEER": 3
+ }
+ },
+ "peer_count_current": 2,
+ "connected_total": 10
+ }
+ }
+}
+```
+
+
+
+
+
+### `debug_replayBlock`
+
+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
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _string_ - `Success` or `error`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_replayBlock","params":["0x1"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "debug_replayBlock", "params": ["0x1"], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "Success"
+}
+```
+
+
+
+
+
+### `debug_resyncWorldState`
+
+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
+
+None
+
+#### Returns
+
+`result`: _string_ - `Success` or `error`
+
+
+
+
+
+```bash
+ curl -X POST --data '{"jsonrpc":"2.0","method":"debug_resyncWorldState","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "debug_resyncWorldState", "params": [], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "Success"
+}
+```
+
+
+
+
+
+### `debug_setHead`
+
+Sets the current head of the local chain to the block matching the specified block number.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _string_ - `Success` or `error`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_setHead","params":["0x1"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "debug_setHead", "params": ["0x1"], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "Success"
+}
+```
+
+
+
+
+
+### `debug_standardTraceBlockToFile`
+
+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`](#debug_standardtracebadblocktofile) to view the trace for an invalid block.
+
+#### Parameters
+
+- `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
+
+`result`: _string_ - location of the generated trace files
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_standardTraceBlockToFile","params":["0x2dc0b6c43144e314a86777b4bd4f987c0790a6a0b21560671d221ed81a23f2dc", {
+"txHash": "0x4ff04c4aec9517721179c8dd435f47fbbfc2ed26cd4926845ab687420d5580a6", "disableMemory": false}], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_standardTraceBlockToFile",
+ "params": [
+ "0x2dc0b6c43144e314a86777b4bd4f987c0790a6a0b21560671d221ed81a23f2dc",
+ {
+ "txHash": "0x4ff04c4aec9517721179c8dd435f47fbbfc2ed26cd4926845ab687420d5580a6",
+ "disableMemory": false
+ }
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ "/Users/me/mynode/goerli/data/traces/block_0x2dc0b6c4-4-0x4ff04c4a-1612820117332"
+ ]
+}
+```
+
+
+
+
+
+### `debug_standardTraceBadBlockToFile`
+
+Generates files containing the block trace of invalid blocks. A separate file is generated for each transaction in the block.
+
+Use [`debug_standardTraceBlockToFile`](#debug_standardtraceblocktofile) to view the trace for a valid block.
+
+#### Parameters
+
+`blockHash`: _string_ - block hash
+
+#### Returns
+
+`result`: _string_ - location of the generated trace files
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_standardTraceBadBlockToFile","params":["0x53741e9e94791466d117c5f9e41a2ed1de3f73d39920c621dfc2f294e7779baa"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_standardTraceBadBlockToFile",
+ "params": [
+ "0x53741e9e94791466d117c5f9e41a2ed1de3f73d39920c621dfc2f294e7779baa"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ "/Users/me/mynode/goerli/data/traces/block_0x53741e9e-0-0x407ec43d-1600951088172"
+ ]
+}
+```
+
+
+
+
+
+### `debug_storageRangeAt`
+
+[Remix](https://remix.ethereum.org/) 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
+
+- `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
+
+`result`: _object_ - [range object](objects.md#range-object).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_storageRangeAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c",0,"0x0e0d2c8f7794e82164f11798276a188147fbd415","0x0000000000000000000000000000000000000000000000000000000000000000",1], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_storageRangeAt",
+ "params": [
+ "0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c",
+ 0,
+ "0x0e0d2c8f7794e82164f11798276a188147fbd415",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ 1
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "storage": {
+ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563": {
+ "key": null,
+ "value": "0x0000000000000000000000000000000000000000000000000000000000000001"
+ }
+ },
+ "nextKey": "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"
+ }
+}
+```
+
+
+
+
+
+### `debug_traceTransaction`
+
+[Remix](https://remix.ethereum.org/) uses `debug_traceTransaction` to implement debugging. Use the _Debugger_ tab in Remix instead of calling `debug_traceTransaction` directly.
+
+Reruns the transaction with the same state as when the transaction executed.
+
+#### Parameters
+
+- `transactionHash`: _string_ - transaction 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
+
+`result`: _object_ - [trace object](objects.md#trace-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params":["0x2cc6c94c21685b7e0f8ddabf277a5ccf98db157c62619cde8baea696a74ed18e",{"disableStorage":true}],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_traceTransaction",
+ "params": [
+ "0x2cc6c94c21685b7e0f8ddabf277a5ccf98db157c62619cde8baea696a74ed18e",
+ { "disableStorage": true }
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "gas": 21000,
+ "failed": false,
+ "returnValue": "",
+ "structLogs": [
+ {
+ "pc": 0,
+ "op": "STOP",
+ "gas": 0,
+ "gasCost": 0,
+ "depth": 1,
+ "stack": [],
+ "memory": [],
+ "storage": null
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+### `debug_traceBlock`
+
+Returns full trace of all invoked opcodes of all transactions included in the block.
+
+#### Parameters
+
+- `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
+
+`result`: _object_ - [trace object](objects.md#trace-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlock","params":["0xf90277f90208a05a41d0e66b4120775176c09fcf39e7c0520517a13d2b57b18d33d342df038bfca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e6a7a1d47ff21b6321162aea7c6cb457d5476bcaa00e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169a04513310fcb9f6f616972a3b948dc5d547f280849a87ebb5af0191f98b87be598a0fe2bf2a941abf41d72637e5b91750332a30283efd40c424dc522b77e6f0ed8c4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860153886c1bbd82b44382520b8252088455c426598b657468706f6f6c2e6f7267a0b48c515a9dde8d346c3337ea520aa995a4738bb595495506125449c1149d6cf488ba4f8ecd18aab215f869f86780862d79883d2000825208945df9b87991262f6ba471f09758cde1c0fc1de734827a69801ca088ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0a045e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33ac0"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_traceBlock",
+ "params": [
+ "0xf90277f90208a05a41d0e66b4120775176c09fcf39e7c0520517a13d2b57b18d33d342df038bfca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e6a7a1d47ff21b6321162aea7c6cb457d5476bcaa00e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169a04513310fcb9f6f616972a3b948dc5d547f280849a87ebb5af0191f98b87be598a0fe2bf2a941abf41d72637e5b91750332a30283efd40c424dc522b77e6f0ed8c4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860153886c1bbd82b44382520b8252088455c426598b657468706f6f6c2e6f7267a0b48c515a9dde8d346c3337ea520aa995a4738bb595495506125449c1149d6cf488ba4f8ecd18aab215f869f86780862d79883d2000825208945df9b87991262f6ba471f09758cde1c0fc1de734827a69801ca088ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0a045e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33ac0"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "gas": 21000,
+ "failed": false,
+ "returnValue": "",
+ "structLogs": [
+ {
+ "pc": 0,
+ "op": "STOP",
+ "gas": 0,
+ "gasCost": 0,
+ "depth": 1,
+ "stack": [],
+ "memory": [],
+ "storage": null
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+### `debug_traceBlockByHash`
+
+Returns full trace of all invoked opcodes of all transactions included in the block.
+
+#### Parameters
+
+- `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
+
+`result`: _array_ of _objects_ - list of [trace objects](objects.md#trace-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByHash","params":["0xaceb3b2c9b25b0589230873921eb894b28722011b8df63977145517d754875a5"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_traceBlockByHash",
+ "params": [
+ "0xaceb3b2c9b25b0589230873921eb894b28722011b8df63977145517d754875a5"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "gas": 21000,
+ "failed": false,
+ "returnValue": "",
+ "structLogs": [
+ {
+ "pc": 0,
+ "op": "STOP",
+ "gas": 0,
+ "gasCost": 0,
+ "depth": 1,
+ "stack": [],
+ "memory": [],
+ "storage": {},
+ "reason": null
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+
+
+### `debug_traceBlockByNumber`
+
+Returns full trace of all invoked opcodes of all transactions included in the block.
+
+#### Parameters
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+ string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `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
+
+`result`: _array_ of _objects_ - list of [trace objects](objects.md#trace-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["0x7224",{"disableStorage":true}], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_traceBlockByNumber",
+ "params": ["0x7224", { "disableStorage": true }],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "gas": 21000,
+ "failed": false,
+ "returnValue": "",
+ "structLogs": [
+ {
+ "pc": 0,
+ "op": "STOP",
+ "gas": 0,
+ "gasCost": 0,
+ "depth": 1,
+ "stack": [],
+ "memory": [],
+ "storage": null,
+ "reason": null
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+
+### `debug_traceCall`
+
+Performs an [`eth_call`](#eth_call) within the execution environment of a given block, using the final state of its parent block as the base, and provides a detailed trace of the executed opcodes.
+
+#### Parameters
+
+- `call`: _object_ - [transaction call object](objects.md#transaction-call-object)
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of the
+ string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `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
+
+`result`: _array_ of _objects_ - list of [trace objects](objects.md#trace-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceCall","params":[{"from":"","to":"","gas":"0xfffff2","gasPrice":"0xef","value":"0x0","data":""},"latest",{"disableMemory":true,"disableStack":true,"disableStorage":true}], "id":1}' http://127.0.0.1:8545
+
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "debug_traceCall",
+ "params": [{"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73","0x0050000000000000000000000000000000000000", "0xfffff2","0xef","0x0","0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001"},"latest",{"disableMemory":true,"disableStack":true,"disableStorage":true}],
+ "id": 1
+}
+
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "gas": 21000,
+ "failed": false,
+ "returnValue": "",
+ "structLogs": [
+ {
+ "pc": 0,
+ "op": "STOP",
+ "gas": 0,
+ "gasCost": 0,
+ "depth": 1,
+ "stack": [],
+ "memory": [],
+ "storage": null,
+ "reason": null
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+
+
+## `ETH` methods
+
+The `ETH` API methods allow you to interact with the blockchain.
+
+:::note
+
+Methods with an equivalent [GraphQL](../../how-to/use-besu-api/graphql.md) 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`
+
+Returns a list of account addresses a client owns.
+
+:::note
+
+This method returns an empty object because Besu [doesn't support key management](../../how-to/send-transactions.md) inside the client.
+
+To provide access to your key store and and then sign transactions, use [Web3Signer](https://docs.web3signer.consensys.net/) with Besu.
+
+:::
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _array_ of _strings_ - list of 20-byte account addresses owned by the client
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_accounts", "params": [], "id": 53 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": []
+}
+```
+
+
+
+
+
+### `eth_blobBaseFee`
+
+Returns the base fee per blob gas in wei.
+
+:::info
+
+[Shard blob transactions](../../concepts/transactions/types.md#blob-transactions) enable scaling Ethereum by allowing blobs of
+data to be stored temporarily by consensus clients.
+
+:::
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - hexadecimal integer representing the base fee per blob gas.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blobBaseFee","params":[],"id":51}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{"jsonrpc":"2.0","method":"eth_blobBaseFee","params":[],"id":51}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 51,
+ "result": "0x3f5694c1f"
+}
+```
+
+
+
+### `eth_blockNumber`
+
+Returns the index corresponding to the block number of the current chain head.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - hexadecimal integer representing the index corresponding to the block number of the current chain head
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":51}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 51 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 51,
+ "result": "0x2377"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block{number}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block {
+ number
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "number": 16221
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_call`
+
+Invokes a contract function locally and does not change the state of the blockchain.
+
+You can interact with contracts using [`eth_sendRawTransaction`](#eth_sendrawtransaction) or `eth_call`.
+
+By default, the `eth_call` error response includes the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md).
+
+#### Parameters
+
+- `call`: _object_ - [transaction call object](objects.md#transaction-call-object)
+
+ :::note
+
+ The [`strict` parameter](objects.md#transaction-call-object) determines if the sender account balance is checked:
+ * If `strict:true`, the balance is checked and `eth_call` fails if the sender account has an insufficient balance to send the transaction with the specified gas parameters.
+ * If `strict:false`, the balance is not checked and `eth_call` can succeed even if the sender account has an insufficient balance.
+ * If `strict` is not specified, the balance is checked against the gas parameters if supplied.
+
+ If you do not want the sender account balance checked, send zero gas or specify `strict:false`.
+
+ :::
+
+- `blockNumber` or `blockHash`: _string_ - hexadecimal or decimal integer representing a block number,
+ block hash, or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as
+ described in [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+#### Returns
+
+`result`: _string_ - return value of the executed contract
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","value":"0x1"}, "latest"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_call",
+ "params": [
+ { "to": "0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13", "value": "0x1" },
+ "latest"
+ ],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block {number call (data : {from : \"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b\", to: \"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13\", data :\"0x12a7b914\"}){data status}}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block {
+ number
+ call(data: {from: "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", to: "0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13", data: "0x12a7b914"}) {
+ data
+ status
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "number": 17449,
+ "call": {
+ "data": "0x",
+ "status": 1
+ }
+ }
+ }
+}
+```
+
+
+
+
+
+:::info Example of a simulated contract creation
+
+The following example creates a simulated contract by not including the `to` parameter from the [transaction call object](objects.md#transaction-call-object) in the `call` parameter. Besu simulates the data to create the contract.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "data":"0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005057600080fd5b5061021e806100606000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd576146100ae575b600080fd5b61004e6100dc565b6040518082815260200191505060405180910390f35b61006c6100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610107565b005b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806101b76033913960400191505060405180910390fd5b806001819055505056fe546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572a265627a7a7231582007302f208a10686769509b529e1878bda1859883778d70dedd1844fe790c9bde64736f6c63430005100032","gas":"0x439cf","gasPrice":"0x0"},"latest"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd576146100ae575b600080fd5b61004e6100dc565b6040518082815260200191505060405180910390f35b61006c6100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610107565b005b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806101b76033913960400191505060405180910390fd5b806001819055505056fe546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572a265627a7a7231582007302f208a10686769509b529e1878bda1859883778d70dedd1844fe790c9bde64736f6c63430005100032"
+}
+```
+
+
+
+
+
+:::
+
+### `eth_chainId`
+
+Returns the [chain ID](../../concepts/network-and-chain-id.md).
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - chain ID in hexadecimal
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":51}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_chainId", "params": [], "id": 51 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 51,
+ "result": "0x7e2"
+}
+```
+
+
+
+
+
+### `eth_coinbase`
+
+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 Etherscan. For example:
+
+```bash title="Example"
+besu --miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" --rpc-http-enabled
+```
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - coinbase address
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_coinbase", "params": [], "id": 53 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
+}
+```
+
+
+
+
+
+### `eth_createAccessList`
+
+Creates an [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) access list that you can [include in a transaction](../../concepts/transactions/types.md#access_list-transactions).
+
+#### Parameters
+
+- `transaction`: _object_ - [transaction call object](objects.md#transaction-call-object)
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+ the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter).
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+#### Returns
+
+`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
+
+
+
+
+
+```bash
+curl -X POST --data '{"method":"eth_createAccessList","params":[{"from": "0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63", "data": "0x608060806080608155"}, "pending"],"id":1,"jsonrpc":"2.0"}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "method": "eth_createAccessList",
+ "params": [
+ {
+ "from": "0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63",
+ "data": "0x608060806080608155"
+ },
+ "pending"
+ ],
+ "id": 1,
+ "jsonrpc": "2.0"
+}
+```
+
+
+
+
+
+```json
+{
+ "accessList": [
+ {
+ "address": "0xa02457e5dfd32bda5fc7e1f1b008aa5979568150",
+ "storageKeys": [
+ "0x0000000000000000000000000000000000000000000000000000000000000081",
+ ]
+ }
+ ]
+ "gasUsed": "0x125f8"
+}
+```
+
+
+
+
+
+### `eth_estimateGas`
+
+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`](#eth_sendrawtransaction) to execute the transaction.
+
+By default, the `eth_estimateGas` error response includes the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md).
+
+#### Parameters
+
+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](objects.md#transaction-call-object)
+
+#### Returns
+
+`result`: _string_ - amount of gas used
+
+The following example returns an estimate of 21000 wei (`0x5208`) for the transaction.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"from":"0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73","to":"0x44Aa93095D6749A706051658B970b941c72c1D53","value":"0x1"}],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_estimateGas",
+ "params": [
+ {
+ "from": "0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73",
+ "to": "0x44Aa93095D6749A706051658B970b941c72c1D53",
+ "value": "0x1"
+ }
+ ],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x5208"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block{estimateGas (data: {from :\"0x6295ee1b4f6dd65047762f924ecd367c17eabf8f\", to :\"0x8888f1f195afa192cfee860698584c030f4c9db1\"})}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block {
+ estimateGas(data: {from: "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", to: "0x8888f1f195afa192cfee860698584c030f4c9db1"})
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "estimateGas": 21000
+ }
+ }
+}
+```
+
+
+
+
+
+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.
+
+
+
+
+
+```bash
+curl -X POST \
+http://127.0.0.1:8545 \
+-H 'Content-Type: application/json' \
+-d '{
+ "jsonrpc": "2.0",
+ "method": "eth_estimateGas",
+ "params": [{
+ "from": "0x8bad598904ec5d93d07e204a366d084a80c7694e",
+ "data": "0x608060405234801561001057600080fd5b5060e38061001f6000396000f3fe6080604052600436106043576000357c0100000000000000000000000000000000000000000000000000000000900480633fa4f24514604857806355241077146070575b600080fd5b348015605357600080fd5b50605a60a7565b6040518082815260200191505060405180910390f35b348015607b57600080fd5b5060a560048036036020811015609057600080fd5b810190808035906020019092919050505060ad565b005b60005481565b806000819055505056fea165627a7a7230582020d7ad478b98b85ca751c924ef66bcebbbd8072b93031073ef35270a4c42f0080029"
+ }],
+ "id": 1
+}'
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x1bacb"
+}
+```
+
+
+
+
+
+### `eth_feeHistory`
+
+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.
+
+As of [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), this method tracks transaction blob gas fees as well.
+
+#### Parameters
+
+- `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_ - hexadecimal or decimal integer representing the highest number block of
+ the requested range, or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or
+ `safe`, as described in [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter).
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `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
+
+`result`: _object_ - [Fee history results object](objects.md#fee-history-results-object).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_feeHistory","params": ["0x5", "latest", [20,30]],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_feeHistory",
+ "params": ["0x5", "latest", [20, 30]],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "oldestBlock": "0x10b52f",
+ "baseFeePerGas": [
+ "0x3fa63a3f",
+ "0x37f999ee",
+ "0x3e36f20a",
+ "0x4099f79a",
+ "0x430d532d",
+ "0x46fcd4a4"
+ ],
+ "baseFeePerBlobGas": [
+ "0x7b7609c19",
+ "0x6dbe41789",
+ "0x7223341d4",
+ "0x6574a002c",
+ "0x7223341d4",
+ "0x6574a002c"
+ ],
+ "gasUsedRatio": [
+ 0.017712333333333333,
+ 0.9458865666666667,
+ 0.6534561,
+ 0.6517375666666667,
+ 0.7347769666666667
+ ],
+ "blobGasUsedRatio": [
+ 0.0,
+ 0.6666666666666666,
+ 0.0,
+ 1.0,
+ 0.0
+ ],
+ "reward": [
+ [
+ "0x3b9aca00",
+ "0x59682f00"
+ ],
+ [
+ "0x3a13012",
+ "0x3a13012"
+ ],
+ [
+ "0xf4240",
+ "0xf4240"
+ ],
+ [
+ "0xf4240",
+ "0xf4240"
+ ],
+ [
+ "0xf4240",
+ "0xf4240"
+ ]
+ ]
+ }
+}
+```
+
+
+
+
+
+### `eth_gasPrice`
+
+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`](../cli/options.md#min-gas-price) is returned. The value returned is restricted to values between [`--min-gas-price`](../cli/options.md#min-gas-price) and [`--api-gas-price-max`](../cli/options.md#api-gas-price-max). By default, 1000 Wei and 500GWei.
+
+Use the [`--api-gas-price-blocks`](../cli/options.md#api-gas-price-blocks), [`--api-gas-price-percentile`](../cli/options.md#api-gas-price-percentile) , and [`--api-gas-price-max`](../cli/options.md#api-gas-price-max) command line options to configure the `eth_gasPrice` default values.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - percentile gas unit price for the most recent blocks, in Wei, as a hexadecimal value
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id": 53 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x3e8"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{gasPrice}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ gasPrice
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "gasPrice": "0x3e8"
+ }
+}
+```
+
+
+
+
+
+### `eth_getBalance`
+
+Returns the account balance of the specified address.
+
+#### Parameters
+
+- `address`: _string_ - 20-byte account address from which to retrieve the balance
+
+- `blockNumber` or `blockHash`: _string_ - hexadecimal or decimal integer representing a block
+ number, block hash, or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or
+ `safe`, as described in [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+#### Returns
+
+`result`: _string_ - current balance, in Wei, as a hexadecimal value
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "latest"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getBalance",
+ "params": ["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "latest"],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x1cfe56f3795885980000"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ account ( address: \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\") { balance } }"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") {
+ balance
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "account": {
+ "balance": "0x1ce96a1ffe7620d00000"
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getBlockByHash`
+
+Returns information about the block matching the specified block hash.
+
+#### Parameters
+
+- `hash`: _string_ - 32-byte hash of a block
+
+- `verbose`: _boolean_ - if `true`, returns the full [transaction objects](objects.md#transaction-object); if `false`, returns the transaction hashes
+
+#### Returns
+
+`result`: _object_ - [block object](objects.md#block-object), or `null` when there is no block
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c", false],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getBlockByHash",
+ "params": [
+ "0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c",
+ false
+ ],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": {
+ "number": "0x68b3",
+ "hash": "0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c",
+ "mixHash": "0x24900fb3da77674a861c428429dce0762707ecb6052325bbd9b3c64e74b5af9d",
+ "parentHash": "0x1f68ac259155e2f38211ddad0f0a15394d55417b185a93923e2abe71bb7a4d6d",
+ "nonce": "0x378da40ff335b070",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "logsBloom": "0x00000000000000100000004080000000000500000000000000020000100000000800001000000004000001000000000000000800040010000020100000000400000010000000000000000040000000000000040000000000000000000000000000000400002400000000000000000000000000000004000004000000000000840000000800000080010004000000001000000800000000000000000000000000000000000800000000000040000000020000000000000000000800000400000000000000000000000600000400000000002000000000000000000000004000000000000000100000000000000000000000000000000000040000900010000000",
+ "transactionsRoot": "0x4d0c8e91e16bdff538c03211c5c73632ed054d00a7e210c0eb25146c20048126",
+ "stateRoot": "0x91309efa7e42c1f137f31fe9edbe88ae087e6620d0d59031324da3e2f4f93233",
+ "receiptsRoot": "0x68461ab700003503a305083630a8fb8d14927238f0bc8b6b3d246c0c64f21f4a",
+ "miner": "0xb42b6c4a95406c78ff892d270ad20b22642e102d",
+ "difficulty": "0x66e619a",
+ "totalDifficulty": "0x1e875d746ae",
+ "extraData": "0xd583010502846765746885676f312e37856c696e7578",
+ "size": "0x334",
+ "gasLimit": "0x47e7c4",
+ "gasUsed": "0x37993",
+ "timestamp": "0x5835c54d",
+ "uncles": [],
+ "transactions": [
+ "0xa0807e117a8dd124ab949f460f08c36c72b710188f01609595223b325e58e0fc",
+ "0xeae6d797af50cb62a596ec3939114d63967c374fa57de9bc0f4e2b576ed6639d"
+ ],
+ "baseFeePerGas": "0x7"
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block (hash : \"0xb0efed1fc9326fee967cb2d845d4ebe57c5350a0670c8e86f8052dea6f219f92\") {number transactions{hash} timestamp difficulty totalDifficulty gasUsed gasLimit hash nonce ommerCount logsBloom mixHash ommerHash extraData stateRoot receiptsRoot transactionCount transactionsRoot}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(hash: "0xb0efed1fc9326fee967cb2d845d4ebe57c5350a0670c8e86f8052dea6f219f92") {
+ number
+ transactions {
+ hash
+ }
+ timestamp
+ difficulty
+ totalDifficulty
+ gasUsed
+ gasLimit
+ hash
+ nonce
+ ommerCount
+ logsBloom
+ mixHash
+ ommerHash
+ extraData
+ stateRoot
+ receiptsRoot
+ transactionCount
+ transactionsRoot
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "number": 17607,
+ "transactions": [],
+ "timestamp": "0x5cdbdfb5",
+ "difficulty": "0x1",
+ "totalDifficulty": "0x44c8",
+ "gasUsed": 0,
+ "gasLimit": 4700000,
+ "hash": "0xb0efed1fc9326fee967cb2d845d4ebe57c5350a0670c8e86f8052dea6f219f92",
+ "nonce": "0x0000000000000000",
+ "ommerCount": 0,
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
+ "ommerHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "extraData": "0xf882a00000000000000000000000000000000000000000000000000000000000000000d5949811ebc35d7b06b3fa8dc5809a1f9c52751e1deb808400000000f843b841fae6d25da0b91e3e88669d0a765c98479d86d53e9ea1f3fb6b36d7ff22fa622a3da0c49c20e5562c774e90acae8ad487936f6b6019cd8a782db684693cba1e9800",
+ "stateRoot": "0xa7086c266aed46cd3bc45579178f8acb36d9d147de575a3ecbf8c7e6f1c737fc",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "transactionCount": 0,
+ "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "baseFeePerGas": "0x7"
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getBlockByNumber`
+
+Returns information about the block matching the specified block number.
+
+#### Parameters
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+ the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter).
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `verbose`: _boolean_ - if `true`, returns the full [transaction objects](objects.md#transaction-object); if `false`, returns only the hashes of the transactions.
+
+#### Returns
+
+`result`: _object_ - [block object](objects.md#block-object), or `null` when there is no block.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x68B3", true],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getBlockByNumber",
+ "params": ["0x68B3", true],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "number": "0x68b3",
+ "hash": "0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c",
+ "mixHash": "0x24900fb3da77674a861c428429dce0762707ecb6052325bbd9b3c64e74b5af9d",
+ "parentHash": "0x1f68ac259155e2f38211ddad0f0a15394d55417b185a93923e2abe71bb7a4d6d",
+ "nonce": "0x378da40ff335b070",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "logsBloom": "0x00000000000000100000004080000000000500000000000000020000100000000800001000000004000001000000000000000800040010000020100000000400000010000000000000000040000000000000040000000000000000000000000000000400002400000000000000000000000000000004000004000000000000840000000800000080010004000000001000000800000000000000000000000000000000000800000000000040000000020000000000000000000800000400000000000000000000000600000400000000002000000000000000000000004000000000000000100000000000000000000000000000000000040000900010000000",
+ "transactionsRoot": "0x4d0c8e91e16bdff538c03211c5c73632ed054d00a7e210c0eb25146c20048126",
+ "stateRoot": "0x91309efa7e42c1f137f31fe9edbe88ae087e6620d0d59031324da3e2f4f93233",
+ "receiptsRoot": "0x68461ab700003503a305083630a8fb8d14927238f0bc8b6b3d246c0c64f21f4a",
+ "miner": "0xb42b6c4a95406c78ff892d270ad20b22642e102d",
+ "difficulty": "0x66e619a",
+ "totalDifficulty": "0x1e875d746ae",
+ "extraData": "0xd583010502846765746885676f312e37856c696e7578",
+ "size": "0x334",
+ "gasLimit": "0x47e7c4",
+ "gasUsed": "0x37993",
+ "timestamp": "0x5835c54d",
+ "uncles": [],
+ "transactions": [],
+ "baseFeePerGas": "0x7"
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block (number : 100) {transactions{hash} timestamp difficulty totalDifficulty gasUsed gasLimit hash nonce ommerCount logsBloom mixHash ommerHash extraData stateRoot receiptsRoot transactionCount transactionsRoot ommers{hash} ommerAt(index : 1){hash} miner{address} account(address: \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\"){balance} parent{hash} }}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(number: 100) {
+ transactions {
+ hash
+ }
+ timestamp
+ difficulty
+ totalDifficulty
+ gasUsed
+ gasLimit
+ hash
+ nonce
+ ommerCount
+ logsBloom
+ mixHash
+ ommerHash
+ extraData
+ stateRoot
+ receiptsRoot
+ transactionCount
+ transactionsRoot
+ ommers {
+ hash
+ }
+ ommerAt(index: 1) {
+ hash
+ }
+ miner {
+ address
+ }
+ account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") {
+ balance
+ }
+ parent {
+ hash
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "transactions": [],
+ "timestamp": "0x5cd10933",
+ "difficulty": "0x1",
+ "totalDifficulty": "0x65",
+ "gasUsed": 0,
+ "gasLimit": 4700000,
+ "hash": "0x63b3ea2bc37fec8f82680eb823652da6af8acebb4f6c4d0ff659c55be473c8b0",
+ "nonce": "0x0000000000000000",
+ "ommerCount": 0,
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
+ "ommerHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "extraData": "0xf882a00000000000000000000000000000000000000000000000000000000000000000d5949811ebc35d7b06b3fa8dc5809a1f9c52751e1deb808400000000f843b8414d877d8d0ced37ea138fab55a978f3740367a24a31731322ecdc3368f11e0d4966c9ce17ae59a76fb94eb436e8a386868f6bd6b0a5678e58daf49f5dd940558b00",
+ "stateRoot": "0xd650578a04b39f50cc979155f4510ec28c2c0a7c1e5fdbf84609bc7b1c430f48",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "transactionCount": 0,
+ "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "ommers": [],
+ "ommerAt": null,
+ "miner": {
+ "address": "0x9811ebc35d7b06b3fa8dc5809a1f9c52751e1deb"
+ },
+ "account": {
+ "balance": "0xad0f47f269cbf31ac"
+ },
+ "parent": {
+ "hash": "0x7bca25e1fa5e395fd6029eb496a70b6b5495843976bf9e49b993c723ded29d9e"
+ },
+ "baseFeePerGas": "0x7"
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getBlockReceipts`
+
+Returns all transaction receipts for a given block. Transaction receipts provide a way to track the success or failure of a transaction (`1` if successful and `0` if failed), as well as the amount of
+gas used and any event logs that might have been produced by a smart contract during the transaction.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter).
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _object_ - [block object](objects.md#block-object), or `null` when there is no block.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockReceipts","params":["latest"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0", "method": "eth_getBlockReceipts", "params": ["0x6f55"], "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "blockHash": "0x19514ce955c65e4dd2cd41f435a75a46a08535b8fc16bc660f8092b32590b182",
+ "blockNumber": "0x6f55",
+ "contractAddress": null,
+ "cumulativeGasUsed": "0x18c36",
+ "from": "0x22896bfc68814bfd855b1a167255ee497006e730",
+ "gasUsed": "0x18c36",
+ "effectiveGasPrice": "0x9502f907",
+ "logs": [
+ {
+ "address": "0xfd584430cafa2f451b4e2ebcf3986a21fff04350",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x4be29e0e4eb91f98f709d98803cba271592782e293b84a625e025cbb40197ba8",
+ "0x000000000000000000000000835281a2563db4ebf1b626172e085dc406bfc7d2",
+ "0x00000000000000000000000022896bfc68814bfd855b1a167255ee497006e730"
+ ],
+ "data": "0x",
+ "blockNumber": "0x6f55",
+ "transactionHash": "0x4a481e4649da999d92db0585c36cba94c18a33747e95dc235330e6c737c6f975",
+ "transactionIndex": "0x0",
+ "blockHash": "0x19514ce955c65e4dd2cd41f435a75a46a08535b8fc16bc660f8092b32590b182",
+ "logIndex": "0x0",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000080020000000000000200010000000000000000000001000000800000000000000000000000000000000000000000000000000000100100000000000000000000008000000000000000000000000000000002000000000000000000000",
+ "status": "0x1",
+ "to": "0xfd584430cafa2f451b4e2ebcf3986a21fff04350",
+ "transactionHash": "0x4a481e4649da999d92db0585c36cba94c18a33747e95dc235330e6c737c6f975",
+ "transactionIndex": "0x0",
+ "type": "0x0"
+ },
+ {
+ "blockHash": "0x19514ce955c65e4dd2cd41f435a75a46a08535b8fc16bc660f8092b32590b182",
+ "blockNumber": "0x6f55",
+ "contractAddress": null,
+ "cumulativeGasUsed": "0x1de3e",
+ "from": "0x712e3a792c974b3e3dbe41229ad4290791c75a82",
+ "gasUsed": "0x5208",
+ "effectiveGasPrice": "0x9502f907",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "status": "0x1",
+ "to": "0xd42e2b1c14d02f1df5369a9827cb8e6f3f75f338",
+ "transactionHash": "0xefb83b4e3f1c317e8da0f8e2fbb2fe964f34ee184466032aeecac79f20eacaf6",
+ "transactionIndex": "0x1",
+ "type": "0x2"
+ }
+ ]
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block (hash: \"0x4d746a3381673a5180744a56e78cded4696b77317866c2253566e0fa16967e1d\") {transactions{block{hash logsBloom} hash createdContract{address} cumulativeGasUsed gas gasUsed logs{topics} from{address} to{address} index}}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block (hash: "0x4d746a3381673a5180744a56e78cded4696b77317866c2253566e0fa16967e1d") {
+ transactions {
+ block {
+ hash
+ logsBloom
+ }
+ hash
+ createdContract {
+ address
+ }
+ cumulativeGasUsed
+ gas
+ gasUsed
+ logs{
+ topics
+ }
+ from{
+ address
+ }
+ to {
+ address
+ }
+ index
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data" : {
+ "block" : {
+ "transactions" : [ {
+ "block" : {
+ "hash" : "0x4d746a3381673a5180744a56e78cded4696b77317866c2253566e0fa16967e1d",
+ "logsBloom" : "0x2e0a8080520608000e38181e0c9081e813a00c184a010d1900c9602240428dc6480004444098428b945010802454104002827420426591a200224016802841900031bd4440828ec9b113081880027c01cc47105c1885d556216200880026160810050028422a4b0c4bc8087372860851000802c8d901158504a482100d488040119c08045e500824402054a0d91cc433188909020a06ac841914a2a082c104a1260460014b8b001b28030202518c040008266038a880026208041d082503589054581223c188004396804801280c00020c492816060a421831c8820ac04460303a9e48128238e0098f319030083808150c4914b8840000206715481500690000"
+ },
+ "hash" : "0x7afe779fd0c6d4a1b6f330e679a5cf94095eaa57d2ce0c0ef991dfb2b405374f",
+ "createdContract" : null,
+ "cumulativeGasUsed" : "0x5208",
+ "gas" : "0x61a8",
+ "gasUsed" : "0x5208",
+ "logs" : [ ],
+ "from" : {
+ "address" : "0x66f962241b8ff853849c85a63a0ce20bae4f68d5"
+ },
+ "to" : {
+ "address" : "0x6be8356826a9fc7b2d911fcc1de6342ae5f5b9a3"
+ },
+ "index" : "0x0"
+ }, {
+ "block" : {
+ "hash" : "0x4d746a3381673a5180744a56e78cded4696b77317866c2253566e0fa16967e1d",
+ "logsBloom" : "0x2e0a8080520608000e38181e0c9081e813a00c184a010d1900c9602240428dc6480004444098428b945010802454104002827420426591a200224016802841900031bd4440828ec9b113081880027c01cc47105c1885d556216200880026160810050028422a4b0c4bc8087372860851000802c8d901158504a482100d488040119c08045e500824402054a0d91cc433188909020a06ac841914a2a082c104a1260460014b8b001b28030202518c040008266038a880026208041d082503589054581223c188004396804801280c00020c492816060a421831c8820ac04460303a9e48128238e0098f319030083808150c4914b8840000206715481500690000"
+ },
+ "hash" : "0x412f04ba27c1c096dadb2d8af54ee61034c3d4679fdd025a634e95fa2238713c",
+ "createdContract" : null,
+ "cumulativeGasUsed" : "0xbcdb2",
+ "gas" : "0xbdfe0",
+ "gasUsed" : "0xb7baa",
+ "logs" : [ {
+ "topics" : [ "0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b", "0x00000000000000000000000000000000000000000000000000000000000e4d3a" ]
+ } ],
+ "from" : {
+ "address" : "0xe253f7a6533c62755f470b33fa5bcd659a5db3cd"
+ },
+ "to" : {
+ "address" : "0x95ff8d3ce9dcb7455beb7845143bea84fe5c4f6f"
+ },
+ "index" : "0x1"
+ } ]
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getBlockTransactionCountByHash`
+
+Returns the number of transactions in the block matching the specified block hash.
+
+#### Parameters
+
+`hash`: _string_ - 32-byte block hash
+
+#### Returns
+
+`result`: _number_ - integer representing the number of transactions in the specified block, or `null` if no matching block hash is found
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getBlockTransactionCountByHash",
+ "params": [
+ "0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"
+ ],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": null
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(hash:\"0xe455c14f757b0b9b67774baad1be1c180a4c1657df52259dbb685bf375408097\"){transactionCount}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(hash: "0xe455c14f757b0b9b67774baad1be1c180a4c1657df52259dbb685bf375408097") {
+ transactionCount
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "transactionCount": 1
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getBlockTransactionCountByNumber`
+
+Returns the number of transactions in a block matching the specified block number.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter).
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _string_ - integer representing the number of transactions in the specified block, or `null` if no matching block number is found
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":51}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getBlockTransactionCountByNumber",
+ "params": ["0xe8"],
+ "id": 51
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 51,
+ "result": "0x8"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(number:232){transactionCount}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(number: 232) {
+ transactionCount
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "transactionCount": 1
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getCode`
+
+Returns the code of the smart contract at the specified address. Besu stores compiled smart contract code as a hexadecimal value.
+
+#### Parameters
+
+- `address`: _string_ - 20-byte contract address
+
+- `blockNumber` or `blockHash`: _string_ - hexadecimal or decimal integer representing a block number,
+ block hash, or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as
+ described in [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+#### Returns
+
+`result`: _data_ - code stored at the specified address
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa50a51c09a5c451c52bb714527e1974b686d8e77", "latest"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getCode",
+ "params": ["0xa50a51c09a5c451c52bb714527e1974b686d8e77", "latest"],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x60806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633fa4f2458114604d57806355241077146071575b600080fd5b348015605857600080fd5b50605f6088565b60408051918252519081900360200190f35b348015607c57600080fd5b506086600435608e565b005b60005481565b60008190556040805182815290517f199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca0727879181900360200190a1505600a165627a7a723058209d8929142720a69bde2ab3bfa2da6217674b984899b62753979743c0470a2ea70029"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{"query": "{account(address: \"0xa50a51c09a5c451c52bb714527e1974b686d8e77\"){ code }}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ account(address: "0xa50a51c09a5c451c52bb714527e1974b686d8e77") {
+ code
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "account": {
+ "code": "0x60806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633fa4f2458114604d57806355241077146071575b600080fd5b348015605857600080fd5b50605f6088565b60408051918252519081900360200190f35b348015607c57600080fd5b506086600435608e565b005b60005481565b60008190556040805182815290517f199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca0727879181900360200190a1505600a165627a7a723058209d8929142720a69bde2ab3bfa2da6217674b984899b62753979743c0470a2ea70029"
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getFilterChanges`
+
+Polls the specified filter and returns an array of changes that have occurred since the last poll.
+
+#### Parameters
+
+`filterId`: _string_ - filter ID
+
+#### Returns
+
+`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](objects.md#log-object).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0xf8bf5598d9e04fbe84523d42640b9b0e"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getFilterChanges",
+ "params": ["0xf8bf5598d9e04fbe84523d42640b9b0e"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json title="Example result from a filter created with eth_newBlockFilter"
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ "0xda2bfe44bf85394f0d6aa702b5af89ae50ae22c0928c18b8903d9269abe17e0b",
+ "0x88cd3a37306db1306f01f7a0e5b25a9df52719ad2f87b0f88ee0e6753ed4a812",
+ "0x4d4c731fe129ff32b425e6060d433d3fde278b565bbd1fd624d5a804a34f8786"
+ ]
+}
+```
+
+```json title="Example result from a filter created with eth_newPendingTransactionFilter"
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ "0x1e977049b6db09362da09491bee3949d9362080ce3f4fc19721196d508580d46",
+ "0xa3abc4b9a4e497fd58dc59cdff52e9bb5609136bcd499e760798aa92802769be"
+ ]
+}
+```
+
+```json title="Example result from a filter created with eth_newFilter"
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x233",
+ "blockHash": "0xfc139f5e2edee9e9c888d8df9a2d2226133a9bd87c88ccbd9c930d3d4c9f9ef5",
+ "transactionHash": "0x66e7a140c8fa27fe98fde923defea7562c3ca2d6bb89798aabec65782c08f63d",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000004",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3"
+ ]
+ },
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0x238",
+ "blockHash": "0x98b0ec0f9fea0018a644959accbe69cd046a8582e89402e1ab0ada91cad644ed",
+ "transactionHash": "0xdb17aa1c2ce609132f599155d384c0bc5334c988a6c368056d7e167e23eee058",
+ "transactionIndex": "0x0",
+ "address": "0x42699a7612a82f1d9c36148af9c77354759b210b",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000007",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3"
+ ]
+ }
+ ]
+}
+```
+
+
+
+
+
+### `eth_getFilterLogs`
+
+Returns an array of [logs](../../concepts/events-and-logs.md) for the specified filter.
+
+Leave the [`--auto-log-bloom-caching-enabled`](../cli/options.md#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
+
+`filterId`: _string_ - filter ID
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [log objects](objects.md#log-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x5ace5de3985749b6a1b2b0d3f3e1fb69"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getFilterLogs",
+ "params": ["0x5ace5de3985749b6a1b2b0d3f3e1fb69"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0xb3",
+ "blockHash": "0xe7cd776bfee2fad031d9cc1c463ef947654a031750b56fed3d5732bee9c61998",
+ "transactionHash": "0xff36c03c0fba8ac4204e4b975a6632c862a3f08aa01b004f570cc59679ed4689",
+ "transactionIndex": "0x0",
+ "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000003",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3"
+ ]
+ },
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0xb6",
+ "blockHash": "0x3f4cf35e7ed2667b0ef458cf9e0acd00269a4bc394bb78ee07733d7d7dc87afc",
+ "transactionHash": "0x117a31d0dbcd3e2b9180c40aca476586a648bc400aa2f6039afdd0feab474399",
+ "transactionIndex": "0x0",
+ "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000005",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3"
+ ]
+ }
+ ]
+}
+```
+
+
+
+
+
+### `eth_getLogs`
+
+Returns an array of [logs](../../concepts/events-and-logs.md) matching a specified filter object.
+
+Leave the [`--auto-log-bloom-caching-enabled`](../cli/options.md#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`](../cli/options.md#rpc-max-logs-range) option (or leaving it at its default value of 1000).
+
+:::
+
+#### Parameters
+
+`filterOptions`: _object_ - [filter options object](objects.md#filter-options-object)
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [log objects](objects.md#log-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"fromBlock":"earliest", "toBlock":"latest", "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8", "topics":[]}], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getLogs",
+ "params": [
+ {
+ "fromBlock": "earliest",
+ "toBlock": "latest",
+ "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8",
+ "topics": []
+ }
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0xb3",
+ "blockHash": "0xe7cd776bfee2fad031d9cc1c463ef947654a031750b56fed3d5732bee9c61998",
+ "transactionHash": "0xff36c03c0fba8ac4204e4b975a6632c862a3f08aa01b004f570cc59679ed4689",
+ "transactionIndex": "0x0",
+ "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000003",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3"
+ ]
+ },
+ {
+ "logIndex": "0x0",
+ "removed": false,
+ "blockNumber": "0xb6",
+ "blockHash": "0x3f4cf35e7ed2667b0ef458cf9e0acd00269a4bc394bb78ee07733d7d7dc87afc",
+ "transactionHash": "0x117a31d0dbcd3e2b9180c40aca476586a648bc400aa2f6039afdd0feab474399",
+ "transactionIndex": "0x0",
+ "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000005",
+ "topics": [
+ "0x04474795f5b996ff80cb47c148d4c5ccdbe09ef27551820caa9c2f8ed149cce3"
+ ]
+ }
+ ]
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{"query": "{logs(filter:{fromBlock: 1486000, toBlock: 1486010, addresses: [\"0x7ef66b77759e12caf3ddb3e4aff524e577c59d8d\"], topics: [[\"0x8a22ee899102a366ac8ad0495127319cb1ff2403cfae855f83a89cda1266674d\"]]}) {index topics data account{address} transaction{hash} }}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ logs(filter: {fromBlock: 1486000, toBlock: 1486010, addresses: ["0x7ef66b77759e12caf3ddb3e4aff524e577c59d8d"], topics: [["0x8a22ee899102a366ac8ad0495127319cb1ff2403cfae855f83a89cda1266674d"]]}) {
+ index
+ topics
+ data
+ account {
+ address
+ }
+ transaction {
+ hash
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "logs": [
+ {
+ "index": 0,
+ "topics": [
+ "0x8a22ee899102a366ac8ad0495127319cb1ff2403cfae855f83a89cda1266674d",
+ "0x0000000000000000000000000000000000000000000000000000000000000004",
+ "0x0000000000000000000000000000000000000000000000000000000000508918"
+ ],
+ "data": "0xa5a04999ec29a8bd19ce32b859280ef9dbb464d846be06f64a1b1012ec08ab03",
+ "account": {
+ "address": "0x7ef66b77759e12caf3ddb3e4aff524e577c59d8d"
+ },
+ "transaction": {
+ "hash": "0x36a2186344c6a32760e7700fdf3685936220876c51ff39d071eb48c17f7e802f"
+ }
+ },
+ {
+ "index": 0,
+ "topics": [
+ "0x8a22ee899102a366ac8ad0495127319cb1ff2403cfae855f83a89cda1266674d",
+ "0x0000000000000000000000000000000000000000000000000000000000000003",
+ "0x0000000000000000000000000000000000000000000000000000000000648c72"
+ ],
+ "data": "0x0ee96b660ad82c8010c90760a03edfbb40b4af5e3634a8c214e4ac7fa1f61492",
+ "account": {
+ "address": "0x7ef66b77759e12caf3ddb3e4aff524e577c59d8d"
+ },
+ "transaction": {
+ "hash": "0x9e2cc9e84a9e78839d6f4b591dfd98cc7a454a8ee3cd6ccd0a18e662e22d3818"
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+### `eth_getMinerDataByBlockHash`
+
+Returns miner data for the specified block.
+
+#### Parameters
+
+`hash`: _string_ - 32-byte block hash
+
+#### Returns
+
+`result`: _object_ - [miner data object](objects.md#miner-data-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockHash","params": ["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7"],"id": 1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getMinerDataByBlockHash",
+ "params": [
+ "0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "netBlockReward": "0x47c6f3739f3da800",
+ "staticBlockReward": "0x4563918244f40000",
+ "transactionFee": "0x38456548220800",
+ "uncleInclusionReward": "0x22b1c8c1227a000",
+ "uncleRewards": [
+ {
+ "hash": "0x2422d43b4f72e19faf4368949a804494f67559405046b39c6d45b1bd53044974",
+ "coinbase": "0x0c062b329265c965deef1eede55183b3acb8f611"
+ }
+ ],
+ "coinbase": "0xb42b6c4a95406c78ff892d270ad20b22642e102d",
+ "extraData": "0xd583010502846765746885676f312e37856c696e7578",
+ "difficulty": "0x7348c20",
+ "totalDifficulty": "0xa57bcfdd96"
+ }
+}
+```
+
+
+
+
+
+### `eth_getMinerDataByBlockNumber`
+
+Returns miner data for the specified block.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter).
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _object_ - [miner data object](objects.md#miner-data-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockNumber","params": ["0x7689D2"],"id": 1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getMinerDataByBlockNumber",
+ "params": ["0x7689D2"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "netBlockReward": "0x47c6f3739f3da800",
+ "staticBlockReward": "0x4563918244f40000",
+ "transactionFee": "0x38456548220800",
+ "uncleInclusionReward": "0x22b1c8c1227a000",
+ "uncleRewards": [
+ {
+ "hash": "0x2422d43b4f72e19faf4368949a804494f67559405046b39c6d45b1bd53044974",
+ "coinbase": "0x0c062b329265c965deef1eede55183b3acb8f611"
+ }
+ ],
+ "coinbase": "0xb42b6c4a95406c78ff892d270ad20b22642e102d",
+ "extraData": "0xd583010502846765746885676f312e37856c696e7578",
+ "difficulty": "0x7348c20",
+ "totalDifficulty": "0xa57bcfdd96"
+ }
+}
+```
+
+
+
+
+
+### `eth_getProof`
+
+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
+
+- `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_ - hexadecimal or decimal integer representing a block
+ number, block hash, or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or
+ `safe`, as described in [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+#### Returns
+
+`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`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getProof","params": [
+"0a8156e7ee392d885d10eaa86afd0e323afdcd95", ["0x0000000000000000000000000000000000000000000000000000000000000347"], "latest"],"id": 1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getProof",
+ "params": [
+ "0a8156e7ee392d885d10eaa86afd0e323afdcd95",
+ ["0x0000000000000000000000000000000000000000000000000000000000000347"],
+ "latest"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "accountProof": [
+ "0xf90211a0...608d898380",
+ "0xf90211a0...ec33f19580",
+ "0xf901d1a0...9e55584480",
+ "0xf8718080...18e5777142"
+ ],
+ "address": "0x0a8156e7ee392d885d10eaa86afd0e323afdcd95",
+ "balance": "0x0",
+ "codeHash": "0x2b6975dcaf69f9bb9a3b30bb6a37b305ce440250bf0dd2f23338cb18e5777142",
+ "nonce": "0x5f",
+ "storageHash": "0x917688de43091589aa58c1dfd315105bc9de4478b9ba7471616a4d8a43d46203",
+ "storageProof": [
+ {
+ "key": "0x0000000000000000000000000000000000000000000000000000000000000347",
+ "value": "0x0",
+ "proof": [
+ "0xf90211a0...5176779280",
+ "0xf901f1a0...c208d86580",
+ "0xf8d180a0...1ce6808080"
+ ]
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+### `eth_getStorageAt`
+
+Returns the value of a storage position at a specified address.
+
+#### Parameters
+
+- `address`: _string_ - 20-byte storage address
+
+- `index`: _string_ - integer index of the storage position
+
+- `blockNumber` or `blockHash`: _string_ - hexadecimal or decimal integer representing a block
+ number, block hash, or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or
+ `safe`, as described in [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+#### Returns
+
+`result` : _string_ - value at the specified storage position
+
+Calculating the correct position depends on the storage you want to retrieve.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getStorageAt","params": ["0xâ€3B3F3E‬","0x0","latest"],"id": 53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getStorageAt",
+ "params": ["0xâ€3B3F3E‬", "0x0", "latest"],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x0000000000000000000000000000000000000000000000000000000000000000"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{account(address: \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\") {storage(slot: \"0x04\")}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") {
+ storage(slot: "0x04")
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "account": {
+ "storage": "0x0000000000000000000000000000000000000000000000000000000000000000"
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getTransactionByBlockHashAndIndex`
+
+Returns transaction information for the specified block hash and transaction index position.
+
+#### Parameters
+
+- `block`: _string_ - 32-byte hash of a block
+
+- `index`: _string_ - integer representing the transaction index position
+
+#### Returns
+
+`result`: _object_ - [transaction object](objects.md#transaction-object), or `null` when there is no transaction
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7", "0x2"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getTransactionByBlockHashAndIndex",
+ "params": [
+ "0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7",
+ "0x2"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "blockHash": "0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7",
+ "blockNumber": "0x1442e",
+ "chainId": 2018,
+ "from": "0x70c9217d814985faef62b124420f8dfbddd96433",
+ "gas": "0x3d090",
+ "gasPrice": "0x57148a6be",
+ "hash": "0xfc766a71c406950d4a4955a340a092626c35083c64c7be907060368a5e6811d6",
+ "input": "0x51a34eb8000000000000000000000000000000000000000000000029b9e659e41b780000",
+ "nonce": "0x2cb2",
+ "to": "0xcfdc98ec7f01dab1b67b36373524ce0208dc3953",
+ "transactionIndex": "0x2",
+ "value": "0x0",
+ "v": "0x2a",
+ "r": "0xa2d2b1021e1428740a7c67af3c05fe3160481889b25b921108ac0ac2c3d5d40a",
+ "s": "0x63186d2aaefe188748bfb4b46fb9493cbc2b53cf36169e8501a5bc0ed941b484"
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{"query": "{ block(hash: \"0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69\") { transactionAt(index: 0) {block{hash} hash } } }"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(hash: "0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69") {
+ transactionAt(index: 0) {
+ block {
+ hash
+ }
+ hash
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "transactionAt": {
+ "block": {
+ "hash": "0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69"
+ },
+ "hash": "0x5f5366af89e8777d5ae62a1af94a0876bdccbc22417bed0aff361eefa3e37f86"
+ }
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getTransactionByBlockNumberAndIndex`
+
+Returns transaction information for the specified block number and transaction index position.
+
+#### Parameters
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+ the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `index`: _string_ - transaction index position
+
+#### Returns
+
+`result`: _object_ - [transaction object](objects.md#transaction-object), or `null` when there is no transaction
+
+This request returns the third transaction in the 82990 block on the Ropsten testnet. You can also view this [block](https://ropsten.etherscan.io/txs?block=82990) and [transaction] on Etherscan.
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["82990", "0x2"], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getTransactionByBlockNumberAndIndex",
+ "params": ["82990", "0x2"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "blockHash": "0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7",
+ "blockNumber": "0x1442e",
+ "chainId": 2018,
+ "from": "0x70c9217d814985faef62b124420f8dfbddd96433",
+ "gas": "0x3d090",
+ "gasPrice": "0x57148a6be",
+ "hash": "0xfc766a71c406950d4a4955a340a092626c35083c64c7be907060368a5e6811d6",
+ "input": "0x51a34eb8000000000000000000000000000000000000000000000029b9e659e41b780000",
+ "nonce": "0x2cb2",
+ "to": "0xcfdc98ec7f01dab1b67b36373524ce0208dc3953",
+ "transactionIndex": "0x2",
+ "value": "0x0",
+ "v": "0x2a",
+ "r": "0xa2d2b1021e1428740a7c67af3c05fe3160481889b25b921108ac0ac2c3d5d40a",
+ "s": "0x63186d2aaefe188748bfb4b46fb9493cbc2b53cf36169e8501a5bc0ed941b484"
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{"query": "{block(number:20303) {transactionAt(index: 0) {block{hash} hash}}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(number: 20303) {
+ transactionAt(index: 0) {
+ block {
+ hash
+ }
+ hash
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "transactionAt": {
+ "block": {
+ "hash": "0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69"
+ },
+ "hash": "0x5f5366af89e8777d5ae62a1af94a0876bdccbc22417bed0aff361eefa3e37f86"
+ }
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getTransactionByHash`
+
+Returns transaction information for the specified transaction hash.
+
+#### Parameters
+
+`transaction`: _string_ - 32-byte transaction hash
+
+#### Returns
+
+`result`: _object_ - [transaction object](objects.md#transaction-object), or `null` when there is no transaction
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getTransactionByHash",
+ "params": [
+ "0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44"
+ ],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": {
+ "blockHash": "0x510efccf44a192e6e34bcb439a1947e24b86244280762cbb006858c237093fda",
+ "blockNumber": "0x422",
+ "chainId": 2018,
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0x5208",
+ "gasPrice": "0x3b9aca00",
+ "hash": "0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44",
+ "input": "0x",
+ "nonce": "0x1",
+ "to": "0x627306090abab3a6e1400e9345bc60c78a8bef57",
+ "transactionIndex": "0x0",
+ "value": "0x4e1003b28d9280000",
+ "v": "0xfe7",
+ "r": "0x84caf09aefbd5e539295acc67217563438a4efb224879b6855f56857fa2037d3",
+ "s": "0x5e863be3829812c81439f0ae9d8ecb832b531d651fb234c848d1bf45e62be8b9"
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{"query": "{transaction(hash : \"0x03d80b9ca0a71435399a268609d6d7896f7155d2147cc22b780672bcb59b170d\") { block{hash} gas gasPrice hash nonce value from {address} to {address} status}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ transaction(hash: "0x03d80b9ca0a71435399a268609d6d7896f7155d2147cc22b780672bcb59b170d") {
+ block {
+ hash
+ }
+ gas
+ gasPrice
+ hash
+ nonce
+ value
+ from {
+ address
+ }
+ to {
+ address
+ }
+ status
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "transaction": {
+ "block": {
+ "hash": "0xb1ef35744bade6980c3a933024b2557a8c724a19e5fdd2116bac712aa5e57198"
+ },
+ "gas": 21000,
+ "gasPrice": "0x2540be400",
+ "hash": "0x03d80b9ca0a71435399a268609d6d7896f7155d2147cc22b780672bcb59b170d",
+ "nonce": 6,
+ "value": "0x8ac7230489e80000",
+ "from": {
+ "address": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
+ },
+ "to": {
+ "address": "0x9d8f8572f345e1ae53db1dfa4a7fce49b467bd7f"
+ },
+ "status": 1
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getTransactionCount`
+
+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
+
+- `address`: _string_ - 20-byte account address
+
+- `blockNumber` or `blockHash`: _string_ - hexadecimal or decimal integer representing a block number, block hash, or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+#### Returns
+
+`result`: _string_ - integer representing the number of transactions sent from the specified address
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xc94770007dda54cF92009BFF0dE90c06F603a09f","latest"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getTransactionCount",
+ "params": ["0xc94770007dda54cF92009BFF0dE90c06F603a09f", "latest"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x1"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ account (address:\"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\"){transactionCount}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") {
+ transactionCount
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "account": {
+ "transactionCount": 5
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getTransactionReceipt`
+
+Returns the receipt of a transaction by transaction hash. Receipts for pending transactions are not available.
+
+If you enabled [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md), the receipt includes available revert reasons in the response.
+
+#### Parameters
+
+`transaction`: _string_ - 32-byte hash of a transaction
+
+#### Returns
+
+`result`: _object_ - [transaction receipt object](objects.md#transaction-receipt-object), or `null` when there is no receipt
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x504ce587a65bdbdb6414a0c6c16d86a04dd79bfcc4f2950eec9634b30ce5370f"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getTransactionReceipt",
+ "params": [
+ "0x504ce587a65bdbdb6414a0c6c16d86a04dd79bfcc4f2950eec9634b30ce5370f"
+ ],
+ "id": 53
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "blockHash": "0xe7212a92cfb9b06addc80dec2a0dfae9ea94fd344efeb157c41e12994fcad60a",
+ "blockNumber": "0x50",
+ "contractAddress": null,
+ "cumulativeGasUsed": "0x5208",
+ "from": "0x627306090abab3a6e1400e9345bc60c78a8bef57",
+ "gasUsed": "0x5208",
+ "effectiveGasPrice": "0x1",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "status": "0x1",
+ "to": "0xf17f52151ebef6c7334fad080c5704d77216b732",
+ "transactionHash": "0xc00e97af59c6f88de163306935f7682af1a34c67245e414537d02e422815efc3",
+ "transactionIndex": "0x0"
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{"query": "{transaction(hash: \"0x5f5366af89e8777d5ae62a1af94a0876bdccbc22417bed0aff361eefa3e37f86\") {block{hash logsBloom} hash createdContract{address} cumulativeGasUsed gas gasUsed logs{topics} from{address} to{address} index}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ transaction(hash: "0x5f5366af89e8777d5ae62a1af94a0876bdccbc22417bed0aff361eefa3e37f86") {
+ block {
+ hash
+ logsBloom
+ }
+ hash
+ createdContract {
+ address
+ }
+ cumulativeGasUsed
+ gas
+ gasUsed
+ logs {
+ topics
+ }
+ from {
+ address
+ }
+ to {
+ address
+ }
+ index
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "transaction": {
+ "block": {
+ "hash": "0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ },
+ "hash": "0x5f5366af89e8777d5ae62a1af94a0876bdccbc22417bed0aff361eefa3e37f86",
+ "createdContract": null,
+ "cumulativeGasUsed": 21000,
+ "gas": 21000,
+ "gasUsed": 21000,
+ "effectiveGasPrice": "0x1",
+ "logs": [],
+ "from": {
+ "address": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
+ },
+ "to": {
+ "address": "0x9d8f8572f345e1ae53db1dfa4a7fce49b467bd7f"
+ },
+ "index": 0
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getUncleByBlockHashAndIndex`
+
+Returns uncle specified by block hash and index.
+
+#### Parameters
+
+- `block`: _string_ - 32-byte block hash
+
+- `uncleIndex`: _string_ - index of the uncle
+
+#### Returns
+
+`result`: _object_ - [block object](objects.md#block-object)
+
+:::note
+
+Uncles don't contain individual transactions.
+
+:::
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7", "0x0"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getUncleByBlockHashAndIndex",
+ "params": [
+ "0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7",
+ "0x0"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "difficulty": "0x76b123df93230",
+ "extraData": "0x50505945206e616e6f706f6f6c2e6f7267",
+ "gasLimit": "0x7a121d",
+ "gasUsed": "0x7a0175",
+ "hash": "0xc20189c0b1a4a23116ab3b177e929137f6e826f17fc4c2e880e7258c620e9817",
+ "logsBloom": "0x890086c024487ca422be846a201a10e41bc2882902312116c1119609482031e9c000e2a708004a10281024028020c505727a12570c4810121c59024490b040894406a1c23c37a0094810921da3923600c71c03044b40924280038d07ab91964a008084264a01641380798840805a284cce201a8026045451002500113a00de441001320805ca2840037000111640d090442c11116d2112948084240242340400236ce81502063401dcc214b9105194d050884721c1208800b20501a4201400276004142f118e60808284506979a86e050820101c170c185e2310005205a82a2100382422104182090184800c02489e033440218142140045801c024cc1818485",
+ "miner": "0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5",
+ "mixHash": "0xf557cc827e058862aa3ea1bd6088fb8766f70c0eac4117c56cf85b7911f82a14",
+ "nonce": "0xd320b48904347cdd",
+ "number": "0x768964",
+ "parentHash": "0x98d752708b3677df8f439c4529f999b94663d5494dbfc08909656db3c90f6255",
+ "receiptsRoot": "0x0f838f0ceb73368e7fc8d713a7761e5be31e3b4beafe1a6875a7f275f82da45b",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "size": "0x21a",
+ "stateRoot": "0xa0c7d4fca79810c89c517eff8dadb9c6d6f4bcc27c2edfb301301e1cf7dec642",
+ "timestamp": "0x5cdcbba6",
+ "totalDifficulty": "0x229ad33cabd4c40d23d",
+ "transactionsRoot": "0x866e38e91d01ef0387b8e07ccf35cd910224271ccf2b7477b8c8439e8b70f365",
+ "uncles": []
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(hash:\"0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7\"){ ommerAt(index: 0) {difficulty extraData gasLimit gasUsed hash logsBloom mixHash nonce number receiptsRoot stateRoot timestamp totalDifficulty transactionsRoot}}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(hash: "0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7") {
+ ommerAt(index: 0) {
+ difficulty
+ extraData
+ gasLimit
+ gasUsed
+ hash
+ logsBloom
+ mixHash
+ nonce
+ number
+ receiptsRoot
+ stateRoot
+ timestamp
+ totalDifficulty
+ transactionsRoot
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "difficulty": "0x1",
+ "extraData": "0xf882a00000000000000000000000000000000000000000000000000000000000000000d5949811ebc35d7b06b3fa8dc5809a1f9c52751e1deb808400000000f843b8418e98ef756acdae1e510b1df4b507b7af04eb3802db7fa0f3e73e7d0721b3645e76f4eb3d0dbf0de75620c4405bd5a663247cdd9616482c883053856d857f884a01",
+ "gasLimit": 4700000,
+ "gasUsed": 0,
+ "hash": "0x0efe67972b982eb6be5df84e5238eb07475f86afa8a7de708f6a13ac0ff60d6c",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
+ "nonce": "0x0000000000000000",
+ "number": 200,
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot": "0xd650578a04b39f50cc979155f4510ec28c2c0a7c1e5fdbf84609bc7b1c430f48",
+ "timestamp": "0x5cd109fb",
+ "totalDifficulty": "0xc9",
+ "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getUncleByBlockNumberAndIndex`
+
+Returns uncle specified by block number and index.
+
+#### Parameters
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+ the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `uncleIndex`: _string_ - index of the uncle
+
+#### Returns
+
+`result`: _object_ - [block object](objects.md#block-object)
+
+:::note
+
+Uncles do not contain individual transactions.
+
+:::
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x7689D2", "0x0"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getUncleByBlockNumberAndIndex",
+ "params": ["0x7689D2", "0x0"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "difficulty": "0x77daec467bf93",
+ "extraData": "0x50505945206e616e6f706f6f6c2e6f7267",
+ "gasLimit": "0x7a121d",
+ "gasUsed": "0x7a0f7b",
+ "hash": "0x42d83ae9c0743f4b1f9c61ff7ea8b164c1bab3627decd49233760680be006ecf",
+ "logsBloom": "0x888200800000340120220008640200500408006100038400100581c000080240080a0014e8002010080004088040004022402a000c18010001400100002a041141a0610a0052900600041018c0002a0003090020404c00206010010513d00020005380124e08050480710000000108401012b0901c1424006000083a10a8c1040100a0440081050210124400040044304070004001100000012600806008061d0320800000b40042160600002480000000800000c0002100200940801c000820800048024904710000400640490026000a44300309000286088010c2300060003011380006400200812009144042204810209020410a84000410520c08802941",
+ "miner": "0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5",
+ "mixHash": "0xf977fcdb52868be410b75ef2becc35cc312f13ab0a6ce400ecd9d445f66fa3f2",
+ "nonce": "0x628b28403bf1e3d3",
+ "number": "0x7689d0",
+ "parentHash": "0xb32cfdfbf4adb05d30f02fcc6fe039cc6666402142954051c1a1cb9cc91aa11e",
+ "receiptsRoot": "0x9c7c8361d1a24ea2841432234c81974a9920d3eba2b2b1c496b5f925a95cb4ac",
+ "sha3Uncles": "0x7d972aa1b182b7e93f1db043f03fbdbfac6874fe7e67e162141bcc0aefa6336b",
+ "size": "0x21a",
+ "stateRoot": "0x74e97b77813146344d75acb5a52a006cc6dfaca678a10fb8a484a8443e919272",
+ "timestamp": "0x5cdcc0a7",
+ "totalDifficulty": "0x229b0583b4bd2698ca0",
+ "transactionsRoot": "0x1d21626afddf05e5866de66ca3fcd98f1caf5357eba0cc6ec675606e116a891b",
+ "uncles": []
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(number:2587){ ommerAt(index: 0) {difficulty extraData gasLimit gasUsed hash logsBloom mixHash nonce number receiptsRoot stateRoot timestamp totalDifficulty transactionsRoot}}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(number: 2587) {
+ ommerAt(index: 0) {
+ difficulty
+ extraData
+ gasLimit
+ gasUsed
+ hash
+ logsBloom
+ mixHash
+ nonce
+ number
+ receiptsRoot
+ stateRoot
+ timestamp
+ totalDifficulty
+ transactionsRoot
+ }
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "ommerAt": null
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getUncleCountByBlockHash`
+
+Returns the number of uncles in a block from a block matching the given block hash.
+
+#### Parameters
+
+`block`: _string_ - 32-byte block hash
+
+#### Returns
+
+`result`: _string_ - integer representing the number of uncles in the specified block
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getUncleCountByBlockHash",
+ "params": [
+ "0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": 0x0
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(hash:\"0x65c08d792e4192b9ece6b6f2390da7da464208b22d88490be8add9373917b426\"){ommerCount}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(hash: "0x65c08d792e4192b9ece6b6f2390da7da464208b22d88490be8add9373917b426") {
+ ommerCount
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "ommerCount": 2
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getUncleCountByBlockNumber`
+
+Returns the number of uncles in a block matching the specified block number.
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _string_ - integer representing the number of uncles in the specified block
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_getUncleCountByBlockNumber",
+ "params": ["0xe8"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x1"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(number:\"0x59fd\"){ommerCount}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ block(number: "0x59fd") {
+ ommerCount
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "block": {
+ "ommerCount": 0
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_getWork`
+
+Returns the hash of the current block, the seed hash, and the required target boundary condition.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`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
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_getWork", "params": [], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ "0xce5e32ca59cb86799a1879e90150b2c3b882852173e59865e9e79abb67a9d636",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x00a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3d70a3",
+ "0x42"
+ ]
+}
+```
+
+
+
+
+
+### `eth_hashrate`
+
+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
+
+None
+
+#### Returns
+
+`result`: _string_ - number of hashes per second
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x12b"
+}
+```
+
+
+
+
+
+### `eth_mining`
+
+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
+
+None
+
+#### Returns
+
+`result`: _boolean_ - indicates if the client is actively mining new blocks
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_mining", "params": [], "id": 53 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": true
+}
+```
+
+
+
+
+
+### `eth_newBlockFilter`
+
+Creates a filter to retrieve new block hashes. To poll for new blocks, use [`eth_getFilterChanges`](#eth_getfilterchanges).
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - filter ID
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_newBlockFilter", "params": [], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x9d78b6780f844228b96ecc65a320a825"
+}
+```
+
+
+
+
+
+### `eth_newFilter`
+
+Creates a [log filter](../../concepts/events-and-logs.md). To poll for logs associated with the created filter, use [`eth_getFilterChanges`](#eth_getfilterchanges). To get all logs associated with the filter, use [`eth_getFilterLogs`](#eth_getfilterlogs).
+
+#### Parameters
+
+`filterOptions`: _object_ - [filter options object](objects.md#filter-options-object)
+
+:::note
+
+`fromBlock` and `toBlock` in the filter options object default to `latest`.
+
+:::
+
+#### Returns
+
+`result`: _string_ - filter ID
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"fromBlock":"earliest", "toBlock":"latest", "topics":[]}],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_newFilter",
+ "params": [{ "fromBlock": "earliest", "toBlock": "latest", "topics": [] }],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x1ddf0c00989044e9b41cc0ae40272df3"
+}
+```
+
+
+
+
+
+### `eth_newPendingTransactionFilter`
+
+Creates a filter to retrieve new pending transactions hashes. To poll for new pending transactions, use [`eth_getFilterChanges`](#eth_getfilterchanges).
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - filter ID
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_newPendingTransactionFilter",
+ "params": [],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x443d6a77c4964707a8554c92f7e4debd"
+}
+```
+
+
+
+
+
+### `eth_protocolVersion`
+
+Returns current Ethereum protocol version.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - Ethereum protocol version
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_protocolVersion", "params": [], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x3f"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{protocolVersion}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ protocolVersion
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "protocolVersion": 63
+ }
+}
+```
+
+
+
+
+
+### `eth_sendRawTransaction`
+
+Sends a [signed transaction](../../how-to/send-transactions.md). 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/options.md#rpc-tx-feecap) CLI option.
+
+You can interact with contracts using `eth_sendRawTransaction` or [`eth_call`](#eth_call).
+
+To avoid exposing your private key, create signed transactions offline and send the signed transaction data using `eth_sendRawTransaction`.
+
+:::info
+
+Besu doesn't implement [`eth_sendTransaction`](../../how-to/send-transactions.md).
+
+[Web3Signer](https://docs.web3signer.consensys.net/) provides transaction signing and implements [`eth_sendTransaction`](https://docs.web3signer.consensys.net/reference/api/json-rpc#eth_sendtransaction).
+
+:::
+
+#### Parameters
+
+`transaction`: _string_ - signed transaction serialized to hexadecimal format
+
+:::note
+
+[Creating and sending transactions](../../how-to/send-transactions.md) includes examples of creating signed transactions using the [web3.js](https://github.com/ethereum/web3.js/) library.
+
+:::
+
+#### Returns
+
+`result`: _string_ - 32-byte transaction hash
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_sendRawTransaction",
+ "params": [
+ "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "id": 1,
+ "jsonrpc": "2.0",
+ "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "mutation {sendRawTransaction(data: \"0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833\")}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+mutation {
+ sendRawTransaction(data: "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833")
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "sendRawTransaction": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
+ }
+}
+```
+
+
+
+
+
+### `eth_submitHashrate`
+
+Submits the mining hashrate. This is used by mining software such as [Ethminer](https://github.com/ethereum-mining/ethminer).
+
+#### Parameters
+
+- `hashrate`: _string_ - 32-byte hexadecimal string representation of the hashrate
+
+- `id`: _string_ - 32-byte random hexadecimal ID identifying the client
+
+#### Returns
+
+`result`: _boolean_ - indicates if submission is successful
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_submitHashrate",
+ "params": [
+ "0x0000000000000000000000000000000000000000000000000000000000500000",
+ "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+### `eth_submitWork`
+
+Submits a proof of work (Ethash) solution. This is used by mining software such as [Ethminer](https://github.com/ethereum-mining/ethminer).
+
+#### Parameters
+
+- `nonce`: _string_ - retrieved 8-byte nonce
+
+- `header`: _string_ - 32-byte hash of the block header (PoW-hash)
+
+- `digest`: _string_ - 32-bytes mix digest
+
+#### Returns
+
+`result`: _boolean_ - indicates if the provided solution is valid
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73}
+```
+
+
+
+
+
+```json
+{
+ "id": 1,
+ "jsonrpc": "2.0",
+ "result": true
+}
+```
+
+
+
+
+
+### `eth_syncing`
+
+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
+
+None
+
+#### Returns
+
+`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`](#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.)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":51}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "eth_syncing", "params": [], "id": 51 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 51,
+ "result": {
+ "startingBlock": "0x0",
+ "currentBlock": "0x1518",
+ "highestBlock": "0x9567a3",
+ "pulledStates": "0x203ca",
+ "knownStates": "0x200636"
+ }
+}
+```
+
+
+
+
+
+```bash
+curl -X POST -H "Content-Type: application/json" --data '{ "query": "{syncing{startingBlock currentBlock highestBlock pulledStates knownStates}}"}' http://localhost:8547/graphql
+```
+
+
+
+
+
+```text
+{
+ syncing {
+ startingBlock
+ currentBlock
+ highestBlock
+ pulledStates
+ knownStates
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "syncing": {
+ "startingBlock": 0,
+ "currentBlock": 5400,
+ "highestBlock": 9791395,
+ "pullStates": 132042,
+ "knownStates": 2098742
+ }
+ }
+}
+```
+
+
+
+
+
+### `eth_uninstallFilter`
+
+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`](#eth_getfilterchanges) or [`eth_getFilterLogs`](#eth_getfilterlogs) for 10 minutes.
+
+#### Parameters
+
+`filterId`: _string_ - filter ID
+
+#### Returns
+
+`result`: _boolean_ - indicates if the filter is successfully uninstalled
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0x70355a0b574b437eaa19fe95adfedc0a"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "eth_uninstallFilter",
+ "params": ["0x70355a0b574b437eaa19fe95adfedc0a"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+## `MINER` methods
+
+The `MINER` API methods allow you to control:
+
+* The node’s mining operation.
+* Settings related to block creation.
+
+
+:::note
+
+The `MINER` API methods are not enabled by default for JSON-RPC. To enable the `MINER` API methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options.
+
+:::
+
+### `miner_changeTargetGasLimit`
+
+Updates the target gas limit set using the [`--target-gas-limit`](../cli/options.md#target-gas-limit) command line option.
+
+#### Parameters
+
+`gasPrice`: _number_ - target gas price in Wei
+
+#### Returns
+
+`result`: _string_ - `Success` or `error`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"miner_changeTargetGasLimit","params":[800000], "id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "miner_changeTargetGasLimit",
+ "params": [800000],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "Success"
+}
+```
+
+
+
+
+
+### `miner_getMinPriorityFee`
+
+Gets the minimum priority fee per gas (in Wei) offered by a transaction to be included in a block. The initial value is set using the [`--min-priority-fee`](../cli/options.md#min-priority-fee) command line option, or is set to `0` if the command line option is not specified.
+Use [`miner_setMinPriorityFee`](#minersetminpriorityfee) to change the current value of the fee.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - Minimum priority fee per gas (in Wei) as a hexadecimal string
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"miner_getMinPriorityFee","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "miner_getMinPriorityFee",
+ "params": [],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "0x1"
+}
+```
+
+
+
+
+### `miner_setCoinbase`
+
+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
+
+`coinbase`: _string_ - Account address you pay mining rewards to
+
+#### Returns
+
+`result`: _boolean_ - `true` when address is set
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"miner_setCoinbase","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "miner_setCoinbase",
+ "params": ["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+### `miner_setMinPriorityFee`
+
+Sets the minimum priority fee per gas (in Wei) offered by a transaction to be included in a block. The initial value is set using the [`--min-priority-fee`](../cli/options.md#min-priority-fee) command line option, or is set to `0` if the command line option is not specified.
+Use [`miner_getMinPriorityFee`](#minergetminpriorityfee) to get the current value of the fee.
+
+#### Parameters
+
+`minPriorityFeePerGas`: _string_ - Minimum priority fee per gas in hexadecimal.
+
+#### Returns
+
+`result`: _boolean_ - `true` when fee is set
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"miner_setMinPriorityFee","params":["0x0a"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "miner_setMinPriorityFee",
+ "params": ["0x0a"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+### `miner_start`
+
+Starts the mining process. To start mining, you must first specify a miner coinbase using the [`--miner-coinbase`](../cli/options.md#miner-coinbase) command line option or using [`miner_setCoinbase`](#miner_setcoinbase).
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _boolean_ - `true` if mining starts, or if the node is already mining
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "miner_start", "params": [], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+### `miner_stop`
+
+Stops the mining process on the client.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _boolean_ - `true` if mining stops, or if the node is not mining
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"miner_stop","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "miner_stop", "params": [], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+
+
+
+
+## `NET` methods
+
+The `NET` API methods provide network-related information.
+
+### `net_enode`
+
+Returns the [enode URL](../../concepts/node-keys.md#enode-url).
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - [enode URL](../../concepts/node-keys.md#enode-url) of the node
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_enode","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"net_enode","params":[],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "enode://6a63160d0ccef5e4986d270937c6c8d60a9a4d3b25471cda960900d037c61988ea14da67f69dbfb3497c465d0de1f001bb95598f74b68a39a5156a608c42fa1b@127.0.0.1:30303"
+}
+```
+
+
+
+
+
+### `net_listening`
+
+Whether the client is actively listening for network connections.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _boolean_ - indicates if the client is actively listening for network connections
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"net_listening","params":[],"id":53}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": true
+}
+```
+
+
+
+
+
+### `net_peerCount`
+
+Returns the number of peers currently connected to the client.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - number of connected peers in hexadecimal
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "net_peerCount", "params": [], "id": 53 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x5"
+}
+```
+
+
+
+
+
+### `net_services`
+
+Returns enabled services (for example, `jsonrpc`) and the host and port for each service.
+
+:::note
+
+The [`--nat-method`](../cli/options.md#nat-method) setting affects the JSON-RPC and P2P host and port values, but not the metrics host and port values.
+
+:::
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _object_ - enabled services
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_services","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"net_services","params":[],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "jsonrpc": {
+ "host": "127.0.0.1",
+ "port": "8545"
+ },
+ "p2p": {
+ "host": "127.0.0.1",
+ "port": "30303"
+ },
+ "metrics": {
+ "host": "127.0.0.1",
+ "port": "9545"
+ }
+ }
+}
+```
+
+
+
+
+
+### `net_version`
+
+Returns the [network ID](../../concepts/network-and-chain-id.md).
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - current network ID
+
+| Network ID | Chain | Network | Description |
+| ---------- | ----- | ------- | ----------------------------- |
+| `1` | ETH | Mainnet | Main Ethereum network |
+| `5` | ETH | Goerli | PoS test network |
+| `11155111` | ETH | Sepolia | PoS test network |
+| `2018` | ETH | Dev | PoW development network |
+| `1` | ETC | Classic | Main Ethereum Classic network |
+| `7` | ETC | Mordor | PoW test network |
+
+:::note
+
+For almost all networks, network ID and chain ID are the same.
+
+The only networks in the table above with different network and chain IDs are Classic with a chain ID of `61` and Mordor with a chain ID of `63`.
+
+:::
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "net_version", "params": [], "id": 53 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 51,
+ "result": "1"
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "5"
+}
+```
+
+
+
+
+
+## `PLUGINS` methods
+
+The `PLUGINS` API methods provide plugin-related functionality.
+
+:::note
+
+The `PLUGINS` API methods are not enabled by default for JSON-RPC. To enable the `PLUGINS` API methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options.
+
+:::
+
+### `plugins_reloadPluginConfig`
+
+Reloads specified plugin configuration.
+
+#### Parameters
+
+`plugin`: _string_ - plugin
+
+#### Returns
+
+`result`: _string_ - `Success`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"plugins_reloadPluginConfig","params":["tech.pegasys.plus.plugin.kafka.KafkaPlugin"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "plugins_reloadPluginConfig",
+ "params": ["tech.pegasys.plus.plugin.kafka.KafkaPlugin"],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": "Success"
+}
+```
+
+
+
+
+
+## `TRACE` methods
+
+The `TRACE` API is a more concise alternative to the [`DEBUG` API](#debug-methods).
+
+:::note
+
+The `TRACE` API methods are not enabled by default for JSON-RPC. To enable the `TRACE` API methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options.
+
+:::
+
+### `trace_block`
+
+Provides transaction processing of [type `trace`](../trace-types.md#trace) for the specified block.
+
+:::info note
+Your node must be an [archive node](../../get-started/connect/sync-node.md#run-an-archive-node), or
+the requested block must be within the number of
+[blocks retained](../cli/options.md#bonsai-historical-block-limit) when using
+[Bonsai](../../concepts/data-storage-formats.md#bonsai-tries) (by default, 512 from the head of the chain).
+:::
+
+#### Parameters
+
+`blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+[block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+:::note
+`pending` returns the same value as `latest`.
+:::
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in transaction execution order; if revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), the returned list items include the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"trace_block","params":["0x6"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "trace_block", "params": ["0x6"], "id": 1 }
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": [
+ {
+ "action": {
+ "callType": "call",
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0xffad82",
+ "input": "0x0000000000000000000000000000000000000999",
+ "to": "0x0020000000000000000000000000000000000000",
+ "value": "0x0"
+ },
+ "blockHash": "0x71512d31e18f828cef069a87bc2c7514a8ca334f9ee72625efdf5cc2d43768dd",
+ "blockNumber": 6,
+ "result": {
+ "gasUsed": "0x7536",
+ "output": "0x"
+ },
+ "subtraces": 1,
+ "traceAddress": [],
+ "transactionHash": "0x91eeabc671e2dd2b1c8ddebb46ba59e8cb3e7d189f80bcc868a9787728c6e59e",
+ "transactionPosition": 0,
+ "type": "call"
+ },
+ {
+ "action": {
+ "address": "0x0020000000000000000000000000000000000000",
+ "balance": "0x300",
+ "refundAddress": "0x0000000000000999000000000000000000000000"
+ },
+ "blockHash": "0x71512d31e18f828cef069a87bc2c7514a8ca334f9ee72625efdf5cc2d43768dd",
+ "blockNumber": 6,
+ "result": null,
+ "subtraces": 0,
+ "traceAddress": [0],
+ "transactionHash": "0x91eeabc671e2dd2b1c8ddebb46ba59e8cb3e7d189f80bcc868a9787728c6e59e",
+ "transactionPosition": 0,
+ "type": "suicide"
+ },
+ {
+ "action": {
+ "author": "0x0000000000000000000000000000000000000000",
+ "rewardType": "block",
+ "value": "0x1bc16d674ec80000"
+ },
+ "blockHash": "0x71512d31e18f828cef069a87bc2c7514a8ca334f9ee72625efdf5cc2d43768dd",
+ "blockNumber": 6,
+ "result": null,
+ "subtraces": 0,
+ "traceAddress": [],
+ "transactionHash": null,
+ "transactionPosition": null,
+ "type": "reward"
+ }
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+### `trace_call`
+
+Executes the given call and returns a number of possible traces for it.
+
+:::info note
+When using [Bonsai](../../concepts/data-storage-formats.md#bonsai-tries), the requested block must
+be within the number of [blocks retained](../cli/options.md#bonsai-historical-block-limit) (by
+default, 512 from the head of the chain).
+:::
+
+#### Parameters
+
+- `call`: _object_ - [transaction call object](objects.md#transaction-call-object)
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+ the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `options`: _array_ of _strings_ - list of tracing options; tracing options are [`trace`, `vmTrace`, and `stateDiff`](../trace-types.md). Specify any combination of the three options including none of them.
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in transaction execution order
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"trace_call","params":[{"from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73","to":"0x0010000000000000000000000000000000000000","gas":"0xfffff2","gasPrice":"0xef","value":"0x0","data":"0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002","nonce":"0x0"},["trace"],"latest"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "trace_call",
+ "params": [
+ {
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "to": "0x0010000000000000000000000000000000000000",
+ "gas": "0xfffff2",
+ "gasPrice": "0xef",
+ "value": "0x0",
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002",
+ "nonce": "0x0"
+ },
+ ["trace"],
+ "latest"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": {
+ "output" : "0x",
+ "stateDiff" : null,
+ "trace" : [ {
+ "action" : {
+ "callType" : "call",
+ "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas" : "0xffabba",
+ "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002",
+ "to" : "0x0010000000000000000000000000000000000000",
+ "value" : "0x0"
+ },
+ "result" : {
+ "gasUsed" : "0x9c58",
+ "output" : "0x"
+ },
+ "subtraces" : 0,
+ "traceAddress" : [ ],
+ "type" : "call"
+ } ],
+ "vmTrace" : null
+ },
+"id" : 2
+},
+```
+
+
+
+
+
+### `trace_callMany`
+
+Performs multiple call traces on top of the same block. You can trace dependent transactions.
+
+:::info note
+When using [Bonsai](../../concepts/data-storage-formats.md#bonsai-tries), the requested block must
+be within the number of [blocks retained](../cli/options.md#bonsai-historical-block-limit) (by
+default, 512 from the head of the chain).
+:::
+
+#### Parameters
+
+- `options`: _array_ of _strings_ - list of tracing options; tracing options are [`trace`, `vmTrace`, and `stateDiff`](../trace-types.md). Specify any combination of the three options including none of them.
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+ the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in transaction execution order
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"trace_callMany","params":[[[{"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1","to":"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","value":"0x186a0"},["trace"]],[{"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1","to":"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","value":"0x186a0"},["trace"]]],"latest"],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+
+```json
+{"jsonrpc":"2.0","method":"trace_callMany","params":[[[{"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1","to":"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","value":"0x186a0"},["trace"]],[{"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1","to":"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","value":"0x186a0"},["trace"]]],"latest"],"latest"],"id":1}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": [
+ {
+ "output" : "0x",
+ "stateDiff" : null,
+ "trace" : [ {
+ "action" : {
+ "callType" : "call",
+ "from" : "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
+ "gas" : "0x1dcd12f8",
+ "input" : "0x",
+ "to" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "value" : "0x186a0"
+ },
+ "result" : {
+ "gasUsed" : "0x0",
+ "output" : "0x"
+ },
+ "subtraces" : 0,
+ "traceAddress" : [ ],
+ "type" : "call"
+ } ],
+ "vmTrace" : null
+ },
+ {
+ "output" : "0x",
+ "stateDiff" : null,
+ "trace" : [ {
+ "action" : {
+ "callType" : "call",
+ "from" : "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
+ "gas" : "0x1dcd12f8",
+ "input" : "0x",
+ "to" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "value" : "0x186a0"
+ },
+ "result" : {
+ "gasUsed" : "0x0",
+ "output" : "0x"
+ },
+ "subtraces" : 0,
+ "traceAddress" : [ ],
+ "type" : "call"
+ } ],
+ "vmTrace" : null
+ },
+ ],
+"id" : 1
+},
+```
+
+
+
+
+
+### `trace_filter`
+
+Returns traces matching the specified filter. The maximum number of blocks you can supply to `trace_filter` is 1000 by default. You can adjust this limit using the [`--rpc-max-trace-filter-range`](../cli/options.md#rpc-max-trace-filter-range) option.
+
+:::info note
+Your node must be an [archive node](../../get-started/connect/sync-node.md#run-an-archive-node), or
+the requested blocks must be within the number of
+[blocks retained](../cli/options.md#bonsai-historical-block-limit) when using
+[Bonsai](../../concepts/data-storage-formats.md#bonsai-tries) (by default, 512 from the head of the chain).
+:::
+
+#### Parameters
+
+`traceFilterOptions`: _object_ - [trace filter options object](objects.md#trace-filter-options-object)
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in transaction execution order
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"trace_filter","params":[{"fromBlock":"0x1","toBlock":"0x21","after":2,"count":2,"fromAddress":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"]}],"id":415}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "trace_filter",
+ "params": [
+ {
+ "fromBlock": "0x1",
+ "toBlock": "0x21",
+ "after": 2,
+ "count": 2,
+ "fromAddress": ["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"]
+ }
+ ],
+ "id": 415
+}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": [
+ {
+ "action": {
+ "callType": "call",
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0xffad82",
+ "input": "0x0000000000000000000000000000000000000999",
+ "to": "0x0020000000000000000000000000000000000000",
+ "value": "0x0"
+ },
+ "blockHash": "0xcd5d9c7acdcbd3fb4b24a39e05a38e32235751bb0c9e4f1aa16dc598a2c2a9e4",
+ "blockNumber": 6,
+ "result": {
+ "gasUsed": "0x7536",
+ "output": "0x"
+ },
+ "subtraces": 1,
+ "traceAddress": [],
+ "transactionHash": "0x91eeabc671e2dd2b1c8ddebb46ba59e8cb3e7d189f80bcc868a9787728c6e59e",
+ "transactionPosition": 0,
+ "type": "call"
+ },
+ {
+ "action": {
+ "callType": "call",
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0xffad52",
+ "input": "0xf000000000000000000000000000000000000000000000000000000000000001",
+ "to": "0x0030000000000000000000000000000000000000",
+ "value": "0x0"
+ },
+ "blockHash": "0xeed85fe57db751442c826cfe4fdf43b10a5c2bc8b6fd3a8ccced48eb3fb35885",
+ "blockNumber": 7,
+ "result": {
+ "gasUsed": "0x1b",
+ "output": "0xf000000000000000000000000000000000000000000000000000000000000002"
+ },
+ "subtraces": 0,
+ "traceAddress": [],
+ "transactionHash": "0x47f4d445ea1812cb1ddd3464ab23d2bfc6ed408a8a9db1c497f94e8e06e85286",
+ "transactionPosition": 0,
+ "type": "call"
+ }
+ ],
+ "id": 415
+}
+```
+
+
+
+
+### `trace_get`
+
+Returns a trace at the given position.
+
+:::info note
+Your node must be an [archive node](../../get-started/connect/sync-node.md#run-an-archive-node), or
+the requested transaction must be contained in a block within the number of
+[blocks retained](../cli/options.md#bonsai-historical-block-limit) when using
+[Bonsai](../../concepts/data-storage-formats.md#bonsai-tries) (by default, 512 from the head of the chain).
+:::
+
+#### Parameters
+
+- `transaction`: _string_ - transaction hash
+
+- `indexPositions`: _array_ - Index positions of the traces
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in the order called by the transaction
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"trace_get","params":["0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",["0x0"]],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "trace_get",
+ "params": [
+ "0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",
+ ["0x0"]
+ ],
+ "id": 1
+}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": {
+ "action" : {
+ "callType" : "call",
+ "from" : "0x1c39ba39e4735cb65978d4db400ddd70a72dc750",
+ "gas" : "0x13e99",
+ "input" : "0x16c72721",
+ "to" : "0x2bd2326c993dfaef84f696526064ff22eba5b362",
+ "value" : "0x0"
+ },
+ "blockHash" : "0x7eb25504e4c202cf3d62fd585d3e238f592c780cca82dacb2ed3cb5b38883add"
+ "blockNumber": 3068185,
+ "result": {
+ "gasUsed": "0x183",
+ "output" : "0x0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ "subtraces" : 0,
+ "traceAddress" : [
+ 0
+ ],
+ "transactionHash": "0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",
+ "transactionPosition": 2,
+ "type" : "call"
+ },
+"id" : 1
+},
+```
+
+
+
+
+### `trace_rawTransaction`
+
+Traces a call to `eth_sendRawTransaction` without making the call, returning the traces.
+
+:::info note
+When using [Bonsai](../../concepts/data-storage-formats.md#bonsai-tries), the requested transaction
+must be contained in a block within the number of
+[blocks retained](../cli/options.md#bonsai-historical-block-limit) (by default, 512 from the head of
+the chain).
+:::
+
+#### Parameters
+
+- `data` - _string_ - Raw transaction data
+
+- `options`: _array_ of _strings_ - list of tracing options; tracing options are [`trace`, `vmTrace`, and `stateDiff`](../trace-types.md). Specify any combination of the three options including none of them.
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in the order called by the transaction
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"trace_rawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",["trace"]],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "trace_rawTransaction",
+ "params": [
+ "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
+ ["trace"]
+ ],
+ "id": 1
+}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": {
+ "output" : "0x"
+ "stateDiff": null,
+ "from" : "0x1c39ba39e4735cb65978d4db400ddd70a72dc750",
+ "trace": [{
+ "action": { ... },
+ "result": {
+ "gasUsed": "0x0",
+ "output": "0x"
+ }
+ "subtraces": 0,
+ "traceAddress": [],
+ "type": "call"
+ }],
+ "vmTrace": null
+ },
+"id" : 1
+},
+```
+
+
+
+
+### `trace_replayBlockTransactions`
+
+Provides transaction processing tracing per block.
+
+:::info note
+When using [Bonsai](../../concepts/data-storage-formats.md#bonsai-tries), the requested block must
+be within the number of [blocks retained](../cli/options.md#bonsai-historical-block-limit) (by
+default, 512 from the head of the chain).
+:::
+
+#### Parameters
+
+- `blockNumber`: _string_ - hexadecimal or decimal integer representing a block number, or one of
+ the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe`, as described in
+ [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter)
+
+ :::note
+ `pending` returns the same value as `latest`.
+ :::
+
+- `options`: _array_ of _strings_ - list of tracing options; tracing options are [`trace`, `vmTrace`, and `stateDiff`](../trace-types.md). Specify any combination of the three options including none of them.
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [transaction trace objects](objects.md#transaction-trace-object) containing one object per transaction, in transaction execution order; if revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), the [`trace`](../trace-types.md#trace) list items in the returned transaction trace object include the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc": "2.0", "method": "trace_replayBlockTransactions","params": ["0x12",["trace","vmTrace","stateDiff"]],"id": 1}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "trace_replayBlockTransactions",
+ "params": ["0x12", ["trace", "vmTrace", "stateDiff"]],
+ "id": 1
+}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result":[
+ {
+ "output":"0x",
+ "vmTrace":{
+ "code":"0x7f3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b3016000527f14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905601052600851",
+ "ops":[
+ {
+ "cost":3,
+ "ex":{
+ "mem":null,
+ "push":[
+ "0x8"
+ ],
+ "store":null,
+ "used":16756175
+ },
+ "pc":72,
+ "sub":null
+ },
+ ...
+ ]
+ },
+ "trace":[
+ {
+ "action":{
+ "callType":"call",
+ "from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas":"0xffadea",
+ "input":"0x",
+ "to":"0x0100000000000000000000000000000000000000",
+ "value":"0x0"
+ },
+ "result":{
+ "gasUsed":"0x1e",
+ "output":"0x"
+ },
+ "subtraces":0,
+ "traceAddress":[
+ ],
+ "type":"call"
+ }
+ ],
+ "stateDiff":{
+ "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73":{
+ "balance":{
+ "*":{
+ "from":"0xffffffffffffffffffffffffffffffffc3e12a20b",
+ "to":"0xffffffffffffffffffffffffffffffffc3dc5f091"
+ }
+ },
+ "code":"=",
+ "nonce":{
+ "*":{
+ "from":"0x14",
+ "to":"0x15"
+ }
+ },
+ "storage":{
+ }
+ }
+ },
+ "transactionHash":"0x2a5079cc535c429f668f13a7fb9a28bdba6831b5462bd04f781777b332a8fcbd",
+ },
+ {...}
+ ]
+}
+```
+
+
+
+
+### `trace_transaction`
+
+Provides transaction processing of [type `trace`](../trace-types.md#trace) for the specified transaction.
+
+:::info note
+Your node must be an [archive node](../../get-started/connect/sync-node.md#run-an-archive-node), or
+the requested transaction must be contained in a block within the number of
+[blocks retained](../cli/options.md#bonsai-historical-block-limit) when using
+[Bonsai](../../concepts/data-storage-formats.md#bonsai-tries) (by default, 512 from the head of the chain).
+:::
+
+#### Parameters
+
+`transaction`: _string_ - transaction hash
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in the order called by the transaction; if revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), the returned list items include the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md).
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc": "2.0", "method": "trace_transaction","params": ["0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7"],"id": 1}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "trace_transaction",
+ "params": [
+ "0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7"
+ ],
+ "id": 1
+}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": [
+ {
+ "action": {
+ "creationMethod": "create",
+ "from": "0x627306090abab3a6e1400e9345bc60c78a8bef57",
+ "gas": "0xff2e26",
+ "init": "0x60006000600060006000732c2b9c9a4a25e24b174f26114e8926a9f2128fe45af2600060006000600060007300a00000000000000000000000000000000000005af2",
+ "value": "0x0"
+ },
+ "blockHash": "0x7e9a993adc6f043c0a9b6a385e6ed3fa370586c55823251b8fa7033cf89d414e",
+ "blockNumber": 19,
+ "result": {
+ "address": "0x30753e4a8aad7f8597332e813735def5dd395028",
+ "code": "0x",
+ "gasUsed": "0x1c39"
+ },
+ "subtraces": 2,
+ "traceAddress": [],
+ "transactionHash": "0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7",
+ "transactionPosition": 3,
+ "type": "create"
+ },
+ {
+ "action": {
+ "callType": "callcode",
+ "from": "0x30753e4a8aad7f8597332e813735def5dd395028",
+ "gas": "0xfb2ea9",
+ "input": "0x",
+ "to": "0x2c2b9c9a4a25e24b174f26114e8926a9f2128fe4",
+ "value": "0x0"
+ },
+ "blockHash": "0x7e9a993adc6f043c0a9b6a385e6ed3fa370586c55823251b8fa7033cf89d414e",
+ "blockNumber": 19,
+ "result": {
+ "gasUsed": "0x138e",
+ "output": "0x"
+ },
+ "subtraces": 1,
+ "traceAddress": [0],
+ "transactionHash": "0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7",
+ "transactionPosition": 3,
+ "type": "call"
+ },
+ {
+ "action": {
+ "address": "0x30753e4a8aad7f8597332e813735def5dd395028",
+ "balance": "0x0",
+ "refundAddress": "0x0000000000000000000000000000000000000000"
+ },
+ "blockHash": "0x7e9a993adc6f043c0a9b6a385e6ed3fa370586c55823251b8fa7033cf89d414e",
+ "blockNumber": 19,
+ "result": null,
+ "subtraces": 0,
+ "traceAddress": [0, 0],
+ "transactionHash": "0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7",
+ "transactionPosition": 3,
+ "type": "suicide"
+ },
+ {
+ "action": {
+ "callType": "callcode",
+ "from": "0x30753e4a8aad7f8597332e813735def5dd395028",
+ "gas": "0xfb18a5",
+ "input": "0x",
+ "to": "0x00a0000000000000000000000000000000000000",
+ "value": "0x0"
+ },
+ "blockHash": "0x7e9a993adc6f043c0a9b6a385e6ed3fa370586c55823251b8fa7033cf89d414e",
+ "blockNumber": 19,
+ "result": {
+ "gasUsed": "0x30b",
+ "output": "0x"
+ },
+ "subtraces": 0,
+ "traceAddress": [1],
+ "transactionHash": "0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7",
+ "transactionPosition": 3,
+ "type": "call"
+ }
+ ],
+ "id": 1
+}
+```
+
+
+
+
+## `TXPOOL` methods
+
+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`](../cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options.
+
+:::
+
+### `txpool_besuPendingTransactions`
+
+Lists pending transactions that match the supplied filter conditions.
+
+#### Parameters
+
+- `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
+
+`result`: _array_ of _objects_ - list of objects with [details of the pending transaction](objects.md#pending-transaction-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuPendingTransactions","params":[2,{"from":{"eq":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"},"gas":{"lt":"0x5209"},"nonce":{"gt":"0x1"}}],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "txpool_besuPendingTransactions",
+ "params": [
+ 2,
+ {
+ "from": { "eq": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" },
+ "gas": { "lt": "0x5209" },
+ "nonce": { "gt": "0x1" }
+ }
+ ],
+ "id": 1
+}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas": "0x5208",
+ "gasPrice": "0xab5d04c00",
+ "hash": "0xb7b2f4306c1c228ec94043da73b582594007091a7dfe024b1f8d6d772284e54b",
+ "input": "0x",
+ "nonce": "0x2",
+ "to": "0xf8be4ebda7f62d79a665294ec1263bfdb59aabf2",
+ "value": "0x0",
+ "v": "0xfe8",
+ "r": "0x5beb711e652c6cf0a589d3cea904eefc4f45ce4372652288701d08cc4412086d",
+ "s": "0x3af14a56e63aa5fb7dcb444a89708363a9d2c1eba1f777c67690288415080ded"
+ }
+ ]
+}
+```
+
+
+
+
+### `txpool_besuStatistics`
+
+Lists statistics about the node transaction pool.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`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`](../cli/options.md#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
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuStatistics","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"txpool_besuStatistics","params":[],"id":1}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "maxSize": 4096,
+ "localCount": 1,
+ "remoteCount": 0
+ }
+}
+```
+
+
+
+
+### `txpool_besuTransactions`
+
+Lists transactions in the node transaction pool.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _array_ of _objects_ - list of transactions
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuTransactions","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "txpool_besuTransactions", "params": [], "id": 1 }
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": [
+ {
+ "hash": "0x8a66830098be4006a3f63a03b6e9b67aa721e04bd6b46d420b8f1937689fb4f1",
+ "isReceivedFromLocalSource": true,
+ "addedToPoolAt": "2019-03-21T01:35:50.911Z"
+ },
+ {
+ "hash": "0x41ee803c3987ceb5bcea0fad7a76a8106a2a6dd654409007d9931032ea54579b",
+ "isReceivedFromLocalSource": true,
+ "addedToPoolAt": "2019-03-21T01:36:00.374Z"
+ }
+ ]
+}
+```
+
+
+
+
+## `WEB3` methods
+
+The `WEB3` API methods provide functionality for the Ethereum ecosystem.
+
+### `web3_clientVersion`
+
+Returns the current client version.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _string_ - current client version
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{ "jsonrpc": "2.0", "method": "web3_clientVersion", "params": [], "id": 1 }
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "besu/"
+}
+```
+
+
+
+
+### `web3_sha3`
+
+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
+
+`data`: _string_ - data to convert to a SHA3 hash
+
+#### Returns
+
+`result`: _string_ - SHA3 result of the input data
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c00"],"id":53}' http://127.0.0.1:8545
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "web3_sha3",
+ "params": ["0x68656c6c6f20776f726c00"],
+ "id": 53
+}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 53,
+ "result": "0x5e39a0a66544c0668bde22d61c47a8710000ece931f13b84d3b2feb44ec96d3f"
+}
+```
+
+
+
+
+## Miscellaneous methods
+
+### `rpc_modules`
+
+Lists [enabled APIs](../../how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) and the version of each.
+
+#### Parameters
+
+None
+
+#### Returns
+
+`result`: _map_ of _strings_ to _strings_ - enabled APIs and their versions
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}' http://127.0.0.1:8545
+```
+
+
+
+
+```bash
+{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}
+```
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "web3": "1.0",
+ "eth": "1.0",
+ "net": "1.0"
+ }
+}
+```
+
+
+
+
+
+
+[schema]: https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/ethereum/api/src/main/resources/schema.graphqls
+[eth_sendRawTransaction or eth_call]: ../../how-to/send-transactions.md#eth_call-or-eth_sendrawtransaction
+[transaction]: https://ropsten.etherscan.io/tx/0xfc766a71c406950d4a4955a340a092626c35083c64c7be907060368a5e6811d6
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/api/objects.md b/versioned_docs/version-24.5.0/public-networks/reference/api/objects.md
new file mode 100644
index 00000000000..abcaa967329
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/api/objects.md
@@ -0,0 +1,270 @@
+---
+title: Objects
+description: Hyperledger Besu API objects reference
+tags:
+ - public networks
+ - private networks
+---
+
+# Besu API objects
+
+The following objects are parameters for or returned by Besu API methods.
+
+:::info
+
+This reference contains API objects that apply to both public and private networks. For private-network-specific API objects, see the [private network API object reference](../../../private-networks/reference/api/objects.md).
+
+:::
+
+## Block object
+
+Returned by [`eth_getBlockByHash`](index.md#eth_getblockbyhash) and [`eth_getBlockByNumber`](index.md#eth_getblockbynumber).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `number` | _Quantity_, Integer | Block number. `null` when block is pending. |
+| `hash` | _Data_, 32 bytes | Hash of the block. `null` when block is pending. |
+| `parentHash` | _Data_, 32 bytes | Hash of the parent block. |
+| `nonce` | _Data_, 8 bytes | Hash of the generated proof of work. `null` when block is pending. |
+| `sha3Uncles` | _Data_, 32 bytes | SHA3 of the uncle's data in the block. |
+| `logsBloom` | _Data_, 256 bytes | Bloom filter for the block logs. `null` when block is pending. |
+| `transactionsRoot` | _Data_, 32 bytes | Root of the transaction trie for the block. |
+| `stateRoot` | Data, 32 bytes | Root of the final state trie for the block. |
+| `receiptsRoot` | Data, 32 bytes | Root of the receipts trie for the block. |
+| `miner` | Data, 20 bytes | Address to pay mining rewards to. |
+| `difficulty` | Quantity, Integer | Difficulty for this block. |
+| `totalDifficulty` | Quantity, Integer | Total difficulty of the chain until this block. This value will always be `0` for an uncle block. |
+| `extraData` | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](../cli/options.md#miner-extra-data) command line option. Stores extra data when used with [Clique](../../../private-networks/how-to/configure/consensus/clique.md#genesis-file) and [IBFT](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file). |
+| `size` | Quantity, Integer | Size of block in bytes. |
+| `gasLimit` | Quantity | Maximum gas allowed in this block. |
+| `gasUsed` | Quantity | Total gas used by all transactions in this block. |
+| `timestamp` | Quantity | Unix timestamp (milliseconds) for block assembly. |
+| `transactions` | Array | Array of [transaction objects](#transaction-object), or 32 byte transaction hashes depending on the specified boolean parameter. |
+| `uncles` | Array | Array of uncle hashes. |
+| `baseFeePerGas` | Quantity | The block's [base fee per gas](../../concepts/transactions/types.md#eip1559-transactions). This field is empty for blocks created before [EIP-1559](https://github.com/ethereum/EIPs/blob/2d8a95e14e56de27c5465d93747b0006bd8ac47f/EIPS/eip-1559.md). |
+
+## Fee history results object
+
+Returned by [`eth_feeHistory`](index.md#eth_feehistory) for the requested block range. If blocks in the specified block range are not available, then only the fee history for available blocks is returned.
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `oldestBlock` | Quantity, Integer | Lowest number block of the returned range. |
+| `baseFeePerGas` | Array | Array of block base fees per gas, including an extra block value. The extra value is the next block after the newest block in the returned range. Returns zeroes for blocks created before [EIP-1559](https://github.com/ethereum/EIPs/blob/2d8a95e14e56de27c5465d93747b0006bd8ac47f/EIPS/eip-1559.md). |
+| `baseFeePerBlobGas` | Array | Array of base fees per blob gas. Returns zeroes for blocks created before [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844). |
+| `gasUsedRatio` | Array | Array of block gas used ratios. These are calculated as the ratio of `gasUsed` and `gasLimit`. |
+| `blobGasUsedRatio` | Array | Array of blob gas used ratios. These are calculated as the ratio of `blobGasUsed` and the max blob gas per block. |
+| `reward` | Array | Array of effective priority fee per gas data points from a single block. All zeroes are returned if the block is empty. |
+
+## Filter options object
+
+Parameter for [`eth_newFilter`](index.md#eth_newfilter), [`eth_getLogs`](index.md#eth_getlogs), and [`priv_getLogs`](../../../private-networks/reference/api/index.md#priv_getlogs). Used to [`filter logs`](../../how-to/use-besu-api/access-logs.md).
+
+| Key | Type | Required/Optional | Value |
+| --- | :-: | :-: | --- |
+| `fromBlock` | Quantity | Tag | Optional | Integer block number or `latest`, `pending`, `earliest`. See [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter). Default is `latest`. |
+| `toBlock` | Quantity | Tag | Optional | Integer block number or `latest`, `pending`, `earliest`. See [block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter). Default is `latest`. |
+| `address` | Data | Array | Optional | Contract address or array of addresses from which [logs](../../concepts/events-and-logs.md) originate. |
+| `topics` | Array of Data, 32 bytes each | Optional | Array of topics by which to [filter logs](../../concepts/events-and-logs.md#topic-filters). |
+
+[`eth_getLogs`](index.md#eth_getlogs) and [`priv_getLogs`](index.md#priv_getlogs) have an extra key.
+
+| Key | Type | Required/Optional | Value |
+| --- | :-: | :-: | --- |
+| `blockHash` | Data, 32 bytes | Optional. | Hash of block for which to return logs. If you specify `blockHash`, you cannot specify `fromBlock` and `toBlock`. |
+
+## Log object
+
+Returned by [`eth_getFilterChanges`](index.md#eth_getfilterchanges) and [`priv_getLogs`](../../../private-networks/reference/api/index.md#priv_getlogs). [`Transaction receipt objects`](#transaction-receipt-object) can contain an array of log objects.
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `removed` | Tag | `true` if log removed because of a chain reorganization. `false` if a valid log. |
+| `logIndex` | Quantity, Integer | Log index position in the block. `null` when log is pending. |
+| `transactionIndex` | Quantity, Integer | Index position of the starting transaction for the log. `null` when log is pending. |
+| `transactionHash` | Data, 32 bytes | Hash of the starting transaction for the log. `null` when log is pending. |
+| `blockHash` | Data, 32 bytes | Hash of the block that includes the log. `null` when log is pending. |
+| `blockNumber` | Quantity | Number of block that includes the log. `null` when log is pending. |
+| `address` | Data, 20 bytes | Address the log originated from. |
+| `data` | Data | Non-indexed arguments of the log. |
+| `topics` | Array of Data, 32 bytes each | [Event signature hash](../../concepts/events-and-logs.md#event-signature-hash) and 0 to 3 [indexed log arguments](../../concepts/events-and-logs.md#event-parameters). |
+
+## Miner data object
+
+Returned by [`eth_getMinerDataByBlockHash`](index.md#eth_getminerdatabyblockhash) and [`eth_getMinerDataByBlockNumber`](index.md#eth_getminerdatabyblocknumber).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `netBlockReward` | Quantity, Integer | The net block reward, in Wei, is `staticBlockReward + transactionFee + uncleInclusionReward`. |
+| `staticBlockReward` | Quantity, Integer | The static block reward, in Wei, is preset on a hard fork. |
+| `transactionFee` | Quantity, Integer | The transaction fee, in Wei, is `sum of upfront cost - refund amount for all transactions`. |
+| `uncleInclusionReward` | Quantity, Integer | The uncle inclusion reward, in Wei, is `static block reward * number of ommers/32`. |
+| `uncleRewards` | Map | Map of uncle block hashes and uncle miner coinbase addresses. |
+| `coinbase` | Data, 20 bytes | Coinbase address. |
+| `extraData` | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](../cli/options.md#miner-extra-data) command line option. |
+| `difficulty` | Quantity, Integer | Difficulty of this block. |
+| `totalDifficulty` | Quantity, Integer | Total difficulty of the chain until this block. |
+
+## Pending transaction object
+
+Returned by [`txpool_besuPendingTransactions`](index.md#txpool_besupendingtransactions).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `accessList` | Array | (Optional) List of addresses and storage keys the transaction plans to access. Used in [`ACCESS_LIST` transactions](../../concepts/transactions/types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). |
+| `from` | Data, 20 bytes | Address of the sender. |
+| `gas` | Quantity | Gas provided by the sender. |
+| `gasPrice` | Quantity | (Optional) Gas price, in Wei, provided by the sender. Not used only in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). |
+| `maxPriorityFeePerGas` | Quantity, Integer | (Optional) Maximum fee, in Wei, the sender is willing to pay per gas above the base fee. Used only in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). |
+| `maxFeePerGas` | Quantity, Integer | (Optional) Maximum total fee (base fee + priority fee), in Wei, the sender is willing to pay per gas. Used only in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). |
+| `hash` | Data, 32 bytes | Hash of the transaction. |
+| `input` | Data | Data sent with the transaction to create or invoke a contract. |
+| `nonce` | Quantity | Number of transactions made by the sender before this one. |
+| `to` | Data, 20 bytes | Address of the receiver. `null` if a contract creation transaction. |
+| `transactionType` | String | [Transaction type](../../concepts/transactions/types.md). |
+| `value` | Quantity | Value transferred, in Wei. |
+| `v` | Quantity | ECDSA Recovery ID. |
+| `r` | Data, 32 bytes | ECDSA signature r. |
+| `s` | Data, 32 bytes | ECDSA signature s. |
+
+## Range object
+
+Returned by [`debug_storageRangeAt`](index.md#debug_storagerangeat).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `storage` | Object | Key hash and value. Pre-image key is `null` if it falls outside the cache. |
+| `nextKey` | Hash | Hash of next key if further storage in range. Otherwise, not included. |
+
+### Structured log object
+
+Log information returned as part of the [Trace object](#trace-object).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `pc` | Integer | Current program counter. |
+| `op` | String | Current OpCode. |
+| `gas` | Integer | Gas remaining. |
+| `gasCost` | Integer | Cost in wei of each gas unit. |
+| `depth` | Integer | Execution depth. |
+| `exceptionalHaltReasons` | Array | One or more strings representing an error condition causing the EVM execution to terminate. These strings suggest that EVM execution terminated for reasons such as running out of gas or attempting to execute an unknown instruction. Generally a single exceptional halt reason returns but it's possible for more than one to occur at once. |
+| `stack` | Array of 32 byte arrays | EVM execution stack before executing current operation. |
+| `memory` | Array of 32 byte arrays | Memory space of the contract before executing current operation. |
+| `storage` | Object | Storage entries changed by the current transaction. |
+
+## Trace object
+
+Returned by [`debug_traceBlock`](index.md#debug_traceblock), [`debug_traceBlockByHash`](index.md#debug_traceblockbyhash), [`debug_traceBlockByNumber`](index.md#debug_traceblockbynumber), [`debug_traceTransaction`](index.md#debug_tracetransaction), and [`debug_traceCall`](index.md#debug_tracecall).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `gas` | Integer | Gas used by the transaction. |
+| `failed` | Boolean | True if transaction failed, otherwise, false. |
+| `returnValue` | String | Bytes returned from transaction execution (without a `0x` prefix). |
+| `structLogs` | Array | Array of structured log objects. |
+
+## Trace filter options object
+
+Parameter for [`trace_filter`](index.md#trace_filter). All parameters are optional.
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `fromBLock` | String | Tag | Trace starts at this block. |
+| `toBlock` | String | Tag | Trace stops at this block. |
+| `fromAddress` | String | Include only traces sent from this address. |
+| `toAddress` | String | Include only traces with this destination address. |
+| `after` | Quantity | The offset trace number. |
+| `count` | Integer | Number of traces to display in a batch. |
+
+## Transaction object
+
+Returned by [`eth_getTransactionByHash`](index.md#eth_gettransactionbyhash), [`eth_getTransactionByBlockHashAndIndex`](index.md#eth_gettransactionbyblockhashandindex), and [`eth_getTransactionByBlockNumberAndIndex`](index.md#eth_gettransactionbyblocknumberandindex).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `accessList` | Array | (Optional) List of addresses and storage keys the transaction plans to access. Used in [`ACCESS_LIST` transactions](../../concepts/transactions/types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). |
+| `blockHash` | Data, 32 bytes | Hash of the block containing this transaction. `null` when transaction is pending. |
+| `blockNumber` | Quantity | Block number of the block containing this transaction. `null` when transaction is pending. |
+| `chainId` | Quantity | [Chain ID](../../concepts/network-and-chain-id.md). |
+| `from` | Data, 20 bytes | Address of the sender. |
+| `gas` | Quantity | Gas provided by the sender. |
+| `gasPrice` | Quantity | (Optional) Gas price, in Wei, provided by the sender. Used only in non-[`EIP1559`](../../concepts/transactions/types.md#eip1559-transactions) transactions. |
+| `maxPriorityFeePerGas` | Quantity, Integer | (Optional) Maximum fee, in Wei, the sender is willing to pay per gas above the base fee. Used only in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). |
+| `maxFeePerGas` | Quantity, Integer | (Optional) Maximum total fee (base fee + priority fee), in Wei, the sender is willing to pay per gas. Used only in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). |
+| `hash` | Data, 32 bytes | Hash of the transaction. |
+| `input` | Data | Data sent with the transaction to create or invoke a contract. For [private transactions](../../../private-networks/concepts/privacy/index.md), it's a pointer to the transaction location in [Tessera](https://docs.tessera.consensys.net/). |
+| `nonce` | Quantity | Number of transactions made by the sender before this one. |
+| `to` | Data, 20 bytes | Address of the receiver. `null` if a contract creation transaction. |
+| `transactionIndex` | Quantity, Integer | Index position of the transaction in the block. `null` when transaction is pending. |
+| `transactionType` | String | [Transaction type](../../concepts/transactions/types.md). |
+| `value` | Quantity | Value transferred, in Wei. |
+| `v` | Quantity | ECDSA Recovery ID. |
+| `r` | Data, 32 bytes | ECDSA signature r. |
+| `s` | Data, 32 bytes | ECDSA signature s. |
+
+## Transaction call object
+
+Parameter for [`eth_call`](index.md#eth_call), [`eth_createAccessList`](index.md#eth_createaccesslist), and [`eth_estimateGas`](index.md#eth_estimategas).
+
+All transaction call object parameters are optional.
+
+| Key | Type | Value |
+|------------------------| :-: | --- |
+| `from` | Data, 20 bytes | Address of the sender. |
+| `to` | Data, 20 bytes | Address of the action receiver. |
+| `gas` | Quantity, Integer | Gas provided by the sender. `eth_call` consumes zero gas, but other executions might need this parameter. `eth_estimateGas` ignores this value. |
+| `gasPrice` | Quantity, Integer | Gas price, in Wei, provided by the sender. The default is `0`. Used only in non-[`EIP1559`](../../concepts/transactions/types.md#eip1559-transactions) transactions. |
+| `maxPriorityFeePerGas` | Quantity, Integer | Maximum fee, in Wei, the sender is willing to pay per gas above the base fee. Can be used only in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). If used, must specify `maxFeePerGas`. |
+| `maxFeePerGas` | Quantity, Integer | Maximum total fee (base fee + priority fee), in Wei, the sender is willing to pay per gas. Can be used only in [`EIP1559` transactions](../../concepts/transactions/types.md#eip1559-transactions). If used, must specify `maxPriorityFeePerGas`. |
+| `maxFeePerBlobGas` | Quantity, Integer | Maximum fee the sender is willing to pay per blob gas. Only used for blob transactions introduced in [EIP-4844]( https://eips.ethereum.org/EIPS/eip-4844). |
+| `value` | Quantity, Integer | Value transferred, in Wei. |
+| `data` | Data | Hash of the method signature and encoded parameters. For details, see [Ethereum Contract ABI](https://solidity.readthedocs.io/en/develop/abi-spec.html). Must be equal to `input` if both parameters are provided. |
+| `input` | Data | Hash of the method signature and encoded parameters. For details, see [Ethereum Contract ABI](https://solidity.readthedocs.io/en/develop/abi-spec.html). Must be equal to `data` if both parameters are provided. |
+| `accessList` | Array | List of addresses and storage keys that the transaction plans to access. Used only in non-[`FRONTIER`](../../concepts/transactions/types.md#frontier-transactions) transactions. |
+| `strict` | Tag | Determines if the sender account balance is checked. If `true`, the balance is checked. If `false`, the balance is not checked. If not specified, the balance is checked against the gas parameters if supplied.|
+| `blobVersionedHashes` | Array | List of references to blobs introduced in [EIP-4844]( https://eips.ethereum.org/EIPS/eip-4844). |
+
+## Transaction receipt object
+
+Returned by [`eth_getTransactionReceipt`](index.md#eth_gettransactionreceipt).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `blockHash` | Data, 32 bytes | Hash of block containing this transaction. |
+| `blockNumber` | Quantity | Block number of block containing this transaction. |
+| `contractAddress` | Data, 20 bytes | Contract address created, if contract creation transaction, otherwise, `null`. A failed contract creation transaction still produces a contract address value. |
+| `cumulativeGasUsed` | Quantity | Total amount of gas used by previous transactions in the block and this transaction. |
+| `effectiveGasPrice` | Quantity | The [actual value per gas deducted](../../concepts/transactions/types.md#eip1559-transactions) from the sender's account. |
+| `from` | Data, 20 bytes | Address of the sender. |
+| `gasUsed` | Quantity | Amount of gas used by this specific transaction. |
+| `logs` | Array | Array of [log objects](#log-object) generated by this transaction. |
+| `logsBloom` | Data, 256 bytes | Bloom filter for light clients to quickly retrieve related logs. |
+| `status` | Quantity | Either `0x0` (failure), `0x1` (success), or `0x2` (invalid). |
+| `to` | Data, 20 bytes | Address of the receiver, if sending ether, otherwise, null. |
+| `transactionHash` | Data, 32 bytes | Hash of the transaction. |
+| `transactionIndex` | Quantity, Integer | Index position of transaction in the block. |
+| `transactionType` | String | [Transaction type](../../concepts/transactions/types.md). |
+| `revertReason` | String | ABI-encoded string that displays the [reason for reverting the transaction](../../../private-networks/how-to/send-transactions/revert-reason.md). Only available if revert reason is [enabled](../cli/options.md#revert-reason-enabled). |
+| `type` | Quantity | Transaction type, `0x00` for legacy transactions, `0x01` for access list types, `0x02` for dynamic fees, and `0x03` for blob transactions. |
+
+:::note
+
+For pre-Byzantium transactions, the transaction receipt object includes the following instead of `status`:
+
+| Key | Type | Value |
+| ------ | :-----------------: | --------------------------- |
+| `root` | Data, 32 bytes | Post-transaction state root |
+
+:::
+
+## Transaction trace object
+
+Returned by [`trace_replayBlockTransactions`](index.md#trace_replayblocktransactions).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `output` | Boolean | Transaction result. 1 for success and 0 for failure. |
+| `stateDiff` | Object | [State changes in the requested block](../trace-types.md#statediff). |
+| `trace` | Array | [Ordered list of calls to other contracts](../trace-types.md#trace). |
+| `vmTrace` | Object | [Ordered list of EVM actions](../trace-types.md#vmtrace). |
+| `transactionHash` | Data, 32 bytes | Hash of the replayed transaction. |
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/cli/_category_.json b/versioned_docs/version-24.5.0/public-networks/reference/cli/_category_.json
new file mode 100644
index 00000000000..e94b0c9a474
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/cli/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Besu command line",
+ "position": 1
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/cli/options.md b/versioned_docs/version-24.5.0/public-networks/reference/cli/options.md
new file mode 100644
index 00000000000..2fdfb4c902e
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/cli/options.md
@@ -0,0 +1,5513 @@
+---
+title: Options
+description: Hyperledger Besu command line interface reference
+sidebar_position: 1
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Command line options
+
+This reference describes the syntax of the Hyperledger Besu command line interface (CLI) options.
+
+:::info
+
+This reference contains options that apply to both public and private networks. For private-network-specific options, see the [private network options reference](../../../private-networks/reference/cli/options.md).
+
+:::
+
+## Specify options
+
+You can specify Besu options:
+
+- On the command line.
+
+ ```bash
+ besu [OPTIONS] [SUBCOMMAND]
+ ```
+
+- As an environment variable. For each command line option, the equivalent environment variable is:
+
+ - Uppercase.
+ - `_` replaces `-`.
+ - Has a `BESU_` prefix.
+
+ For example, set `--miner-coinbase` using the `BESU_MINER_COINBASE` environment variable.
+
+- In a [configuration file](../../how-to/use-configuration-file/index.md).
+
+If you specify an option in more than one place, the order of priority is command line, environment variable, configuration file.
+
+If using Bash or Z shell, you can view option suggestions by entering `--` and pressing the Tab key twice.
+
+```bash
+besu --Tab+Tab
+```
+
+:::caution
+
+Characters such as smart quotes and long (em) hyphens don't work in Besu command line options. Ensure quotes aren't automatically converted to smart quotes, or double hyphens combined into em hyphens.
+
+:::
+
+## Options
+
+### `api-gas-price-blocks`
+
+
+
+
+
+```bash
+--api-gas-price-blocks=
+```
+
+
+
+
+
+```bash
+--api-gas-price-blocks=50
+```
+
+
+
+
+
+```bash
+BESU_API_GAS_PRICE_BLOCKS=50
+```
+
+
+
+
+
+```bash
+api-gas-price-blocks=50
+```
+
+
+
+
+
+Number of blocks back from the head block to examine for [`eth_gasPrice`](../api/index.md#eth_gasprice). The default is `100`.
+
+### `api-gas-price-max`
+
+
+
+
+
+```bash
+--api-gas-price-max=
+```
+
+
+
+
+
+```bash
+--api-gas-price-max=20000
+```
+
+
+
+
+
+```bash
+BESU_API_GAS_PRICE_MAX=20000
+```
+
+
+
+
+
+```bash
+api-gas-price-max=20000
+```
+
+
+
+
+
+Maximum gas price to return for [`eth_gasPrice`](../api/index.md#eth_gasprice), regardless of the percentile value measured. The default is `500000000000` (500 GWei).
+
+### `api-gas-price-percentile`
+
+
+
+
+
+```bash
+--api-gas-price-percentile=
+```
+
+
+
+
+
+```bash
+--api-gas-price-percentile=75
+```
+
+
+
+
+
+```bash
+BESU_API_GAS_PRICE_PERCENTILE=75
+```
+
+
+
+
+
+```bash
+api-gas-price-percentile=75
+```
+
+
+
+
+
+Percentile value to measure for [`eth_gasPrice`](../api/index.md#eth_gasprice). The default is `50.0`.
+
+For [`eth_gasPrice`](../api/index.md#eth_gasprice), to return the:
+
+- Highest gas price in [`--api-gas-price-blocks`](#api-gas-price-blocks), set to `100`.
+- Lowest gas price in [`--api-gas-price-blocks`](#api-gas-price-blocks), set to `0`.
+
+### `auto-log-bloom-caching-enabled`
+
+
+
+
+
+```bash
+--auto-log-bloom-caching-enabled[=]
+```
+
+
+
+
+
+```bash
+--auto-log-bloom-caching-enabled=false
+```
+
+
+
+
+
+```bash
+BESU_AUTO_LOG_BLOOM_CACHING_ENABLED=false
+```
+
+
+
+
+
+```bash
+auto-log-bloom-caching-enabled=false
+```
+
+
+
+
+
+Enables or disables automatic log bloom caching. APIs such as [`eth_getLogs`](../api/index.md#eth_getlogs) and [`eth_getFilterLogs`](../api/index.md#eth_getfilterlogs) use the cache for improved performance. The default is `true`.
+
+If automatic log bloom caching is enabled and a log bloom query reaches the end of the cache, Besu performs an uncached query for logs not yet written to the cache.
+
+Automatic log bloom caching has a small impact on performance. If you are not querying logs blooms for a large number of blocks, you might want to disable automatic log bloom caching.
+
+### `banned-node-ids`
+
+
+
+
+
+```bash
+--banned-node-ids=[,...]...
+```
+
+
+
+
+
+```bash
+--banned-node-ids=0xc35c3...d615f,0xf42c13...fc456
+```
+
+
+
+
+
+```bash
+BESU_BANNED_NODE_IDS=0xc35c3...d615f,0xf42c13...fc456
+```
+
+
+
+
+
+```bash
+banned-node-ids=["0xc35c3...d615f","0xf42c13...fc456"]
+```
+
+
+
+
+
+A list of node IDs with which this node will not peer. The node ID is the public key of the node. You can specify the banned node IDs with or without the `0x` prefix.
+
+:::tip
+
+The singular `--banned-node-id` and plural `--banned-node-ids` are available and are two names for the same option.
+
+:::
+
+### `block-txs-selection-max-time`
+
+
+
+
+
+```bash
+--block-txs-selection-max-time=
+```
+
+
+
+
+
+```bash
+--block-txs-selection-max-time=1700
+```
+
+
+
+
+
+```bash
+BESU_BLOCK_TXS_SELECTION_MAX_TIME=1700
+```
+
+
+
+
+
+```bash
+block-txs-selection-max-time=1700
+```
+
+
+
+
+
+The maximum time, in milliseconds, that can be spent selecting transactions to be included in a block.
+This value must be less than or equal to the default, `5000`.
+
+:::note
+This option only applies to proof-of-stake and proof-of-work networks.
+For proof-of-authority networks, see
+[`--poa-block-txs-selection-max-time`](../../../private-networks/reference/cli/options.md#poa-block-txs-selection-max-time).
+:::
+
+### `bonsai-historical-block-limit`
+
+
+
+
+
+```bash
+--bonsai-historical-block-limit=
+```
+
+
+
+
+
+```bash
+--bonsai-historical-block-limit=256
+```
+
+
+
+
+
+```bash
+BESU_BONSAI_HISTORICAL_BLOCK_LIMIT=256
+```
+
+
+
+
+
+```bash
+bonsai-historical-block-limit=256
+```
+
+
+
+
+
+When using [Bonsai Tries](../../concepts/data-storage-formats.md#bonsai-tries), the [maximum number of previous blocks](../../concepts/data-storage-formats.md#accessing-data) for which Bonsai can reconstruct a historical state. The default is 512.
+
+:::note
+
+If you plan on querying historical blocks or state using the [JSON-RPC API](../api/index.md), you might need to adjust the default value or your configured value to avoid errors.
+
+:::
+
+### `bootnodes`
+
+
+
+
+
+```bash
+--bootnodes[=[,...]...]
+```
+
+
+
+
+
+```bash
+--bootnodes=enode://c35c3...d615f@1.2.3.4:30303,enode://f42c13...fc456@1.2.3.5:30303
+```
+
+
+
+
+
+```bash
+BESU_BOOTNODES=enode://c35c3...d615f@1.2.3.4:30303,enode://f42c13...fc456@1.2.3.5:30303
+```
+
+
+
+
+
+```bash
+bootnodes=["enode://c35c3...d615f@1.2.3.4:30303","enode://f42c13...fc456@1.2.3.5:30303"]
+```
+
+
+
+
+
+A list of comma-separated [enode URLs](../../concepts/node-keys.md#enode-url) for [P2P discovery bootstrap](../../../private-networks/how-to/configure/bootnodes.md).
+
+When connecting to Mainnet or public testnets, the default is a predefined list of enode URLs.
+
+In private networks defined using [`--genesis-file`](#genesis-file) or when using [`--network=dev`](#network), the default is an empty list of bootnodes.
+
+### `color-enabled`
+
+
+
+
+
+```bash
+--color-enabled[=]
+```
+
+
+
+
+
+```bash
+--color-enabled=false
+```
+
+
+
+
+
+```bash
+BESU_COLOR_ENABLED=false
+```
+
+
+
+
+
+```bash
+color-enabled=false
+```
+
+
+
+
+
+Enables or disables color output to console. The default is `true`.
+
+### `compatibility-eth64-forkid-enabled`
+
+
+
+
+
+```bash
+--compatibility-eth64-forkid-enabled[=]
+```
+
+
+
+
+
+```bash
+--compatibility-eth64-forkid-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_COMPATIBILITY_ETH64_FORKID_ENABLED=true
+```
+
+
+
+
+
+```bash
+compatibility-eth64-forkid-enabled=true
+```
+
+
+
+
+
+Enables or disables the legacy Eth/64 fork ID. For any networks with nodes using Besu v1.4 or earlier and nodes using Besu v20.10.1 or later, either:
+
+- All nodes must be upgraded to v20.10.1 or later.
+- All nodes using v20.10.1 or later must have `--compatibility-eth64-forkid-enabled` set to `true`.
+
+The default is `false`.
+
+:::caution
+
+If networks have Besu nodes using v1.4 or earlier and other Besu nodes using v20.10.1 or later, the nodes on different versions cannot communicate unless `--compatibility-eth64-forkid-enabled` is set to `true`.
+
+:::
+
+### `config-file`
+
+
+
+
+
+```bash
+--config-file=
+```
+
+
+
+
+
+```bash
+--config-file=/home/me/me_node/config.toml
+```
+
+
+
+
+
+```bash
+BESU_CONFIG_FILE=/home/me/me_node/config.toml
+```
+
+
+
+
+
+The path to the [TOML configuration file](../../how-to/use-configuration-file/index.md). The default is `none`.
+
+### `data-path`
+
+
+
+
+
+```bash
+--data-path=
+```
+
+
+
+
+
+```bash
+--data-path=/home/me/me_node
+```
+
+
+
+
+
+```bash
+BESU_DATA_PATH=/home/me/me_node
+```
+
+
+
+
+
+```bash
+data-path="/home/me/me_node"
+```
+
+
+
+
+
+The path to the Besu data directory. The default is the directory you installed Besu in, or `/opt/besu/database` if using the [Besu Docker image](../../get-started/install/run-docker-image.md).
+
+### `data-storage-format`
+
+
+
+
+
+```bash
+--data-storage-format=
+```
+
+
+
+
+
+```bash
+--data-storage-format=FOREST
+```
+
+
+
+
+
+```bash
+BESU_DATA_STORAGE_FORMAT=FOREST
+```
+
+
+
+
+
+```bash
+data-storage-format="BONSAI"
+```
+
+
+
+
+
+The [data storage format](../../concepts/data-storage-formats.md) to use. Set to `BONSAI` for Bonsai Tries or `FOREST` for Forest of Tries. The default is `BONSAI`.
+
+### `discovery-dns-url`
+
+
+
+
+
+```bash
+--discovery-dns-url=
+```
+
+
+
+
+
+```bash
+BESU_DISCOVERY_DNS_URL=enrtree://AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7BVDQ5FDPRT2@nodes.example.org
+```
+
+
+
+
+
+```bash
+discovery-dns-url="enrtree://AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7BVDQ5FDPRT2@nodes.example.org"
+```
+
+
+
+
+
+The `enrtree` URL of the DNS node list for [node discovery via DNS](https://eips.ethereum.org/EIPS/eip-1459). The default is `null`.
+
+### `discovery-enabled`
+
+
+
+
+
+```bash
+--discovery-enabled[=]
+```
+
+
+
+
+
+```bash
+--discovery-enabled=false
+```
+
+
+
+
+
+```bash
+BESU_DISCOVERY_ENABLED=false
+```
+
+
+
+
+
+```bash
+discovery-enabled=false
+```
+
+
+
+
+
+Enables or disables P2P discovery. The default is `true`.
+
+:::note
+
+You can override the default DNS server if it's unreliable or doesn't serve TCP DNS requests, using the [early access option](#xhelp) `--Xp2p-dns-discovery-server=`.
+
+:::
+
+### `engine-host-allowlist`
+
+
+
+
+
+```bash
+--engine-host-allowlist=[,...]... or "*"
+```
+
+
+
+
+
+```bash
+--engine-host-allowlist=localhost,127.0.0.1
+```
+
+
+
+
+
+```bash
+BESU_ENGINE_HOST_ALLOWLIST=localhost,127.0.0.1
+```
+
+
+
+
+
+```bash
+engine-host-allowlist=["localhost","127.0.0.1"]
+```
+
+
+
+
+
+A comma-separated list of hostnames to allow for Engine API access (applies to both HTTP and WebSocket).
+
+:::tip
+
+To allow all hostnames, use `"*"`. We don't recommend allowing all hostnames in production environments.
+
+:::
+
+### `engine-jwt-disabled`
+
+
+
+
+
+```bash
+--engine-jwt-disabled[=]
+```
+
+
+
+
+
+```bash
+--engine-jwt-disabled=true
+```
+
+
+
+
+
+```bash
+BESU_ENGINE_JWT_DISABLED=true
+```
+
+
+
+
+
+```bash
+engine-jwt-disabled=true
+```
+
+
+
+
+
+Disables or enables [authentication](../../how-to/use-engine-api.md#authentication) for Engine APIs. The default is `false` (authentication is enabled by default).
+
+### `engine-jwt-secret`
+
+
+
+
+
+```bash
+--engine-jwt-secret=
+```
+
+
+
+
+
+```bash
+--engine-jwt-secret=jwt.hex
+```
+
+
+
+
+
+```bash
+BESU_ENGINE_JWT_SECRET="jwt.hex"
+```
+
+
+
+
+
+```bash
+engine-jwt-secret="jwt.hex"
+```
+
+
+
+
+
+Shared secret used to authenticate [consensus clients](../../concepts/the-merge.md) when using the Engine JSON-RPC API (both HTTP and WebSocket). Contents of file must be at least 32 hex-encoded bytes and not begin with `0x`. May be a relative or absolute path. See an [example of how to generate this](../../get-started/connect/mainnet.md#1-generate-the-shared-secret).
+
+### `engine-rpc-enabled`
+
+
+
+
+
+```bash
+--engine-rpc-enabled[=
+```
+
+
+
+
+
+```bash
+--engine-rpc-enabled
+```
+
+
+
+
+
+```bash
+BESU_ENGINE_RPC_ENABLED=true
+```
+
+
+
+
+
+```bash
+engine-rpc-enabled=true
+```
+
+
+
+
+
+Enables or disables the [Engine API](../engine-api/index.md). The default is `true`.
+
+### `engine-rpc-port`
+
+
+
+
+
+```bash
+--engine-rpc-port=
+```
+
+
+
+
+
+```bash
+--engine-rpc-port=8551
+```
+
+
+
+
+
+```bash
+BESU_ENGINE_RPC_PORT=8551
+```
+
+
+
+
+
+```bash
+engine-rpc-port="8551"
+```
+
+
+
+
+
+The listening port for the Engine API calls (`ENGINE`, `ETH`) for JSON-RPC over HTTP and WebSocket. The default is `8551`.
+
+### `ethstats`
+
+
+
+
+
+```bash
+--ethstats=<[ws://|wss://]nodename:secret@host:[port]>
+```
+
+
+
+
+
+```bash
+--ethstats=Dev-Node-1:secret@127.0.0.1:3001
+```
+
+
+
+
+
+```bash
+BESU_ETHSTATS=Dev-Node-1:secret@127.0.0.1:3001
+```
+
+
+
+
+
+```bash
+ethstats="Dev-Node-1:secret@127.0.0.1:3001"
+```
+
+
+
+
+
+Reporting URL of an [Ethstats](../../../private-networks/how-to/deploy/ethstats.md) server.
+If specified without a port, the default port is 443 for SSL connections and 80 for non-SSL connections.
+
+You can optionally specify `ws://` or `wss://` in the Ethstats URL.
+If you specify this scheme, the connection doesn't need to switch from SSL to non-SSL on each retry logic.
+
+### `ethstats-cacert-file`
+
+
+
+
+
+```bash
+--ethstats-cacert-file=
+```
+
+
+
+
+
+```bash
+--ethstats-cacert-file=./root.cert
+```
+
+
+
+
+
+```bash
+BESU_ETHSTATS_CACERT_FILE=./root.cert
+```
+
+
+
+
+
+```bash
+ethstats-cacert-file="./root.cert"
+```
+
+
+
+
+
+Path to the root certificate authority (CA) certificate file of the Ethstats server specified by [`--ethstats`](#ethstats). This option is useful in non-production environments.
+
+### `ethstats-contact`
+
+
+
+
+
+```bash
+--ethstats-contact=
+```
+
+
+
+
+
+```bash
+--ethstats-contact=contact@mail.com
+```
+
+
+
+
+
+```bash
+BESU_ETHSTATS_CONTACT=contact@mail.com
+```
+
+
+
+
+
+```bash
+ethstats-contact="contact@mail.com"
+```
+
+
+
+
+
+Contact email address to send to the Ethstats server specified by [`--ethstats`](#ethstats).
+
+### `genesis-file`
+
+
+
+
+
+```bash
+--genesis-file=
+```
+
+
+
+
+
+```bash
+--genesis-file=/home/me/me_node/customGenesisFile.json
+```
+
+
+
+
+
+```bash
+BESU_GENESIS_FILE=/home/me/me_node/customGenesisFile.json
+```
+
+
+
+
+
+```bash
+genesis-file="/home/me/me_node/customGenesisFile.json"
+```
+
+
+
+
+
+The path to the [genesis file](../../concepts/genesis-file.md).
+
+:::caution
+
+You can't use the [`--genesis-file`](#genesis-file) and [`--network`](#network) options at the same time.
+
+:::
+
+### `graphql-http-cors-origins`
+
+
+
+
+
+```bash
+--graphql-http-cors-origins=
+```
+
+
+
+
+
+```bash
+--graphql-http-cors-origins="http://medomain.com","https://meotherdomain.com"
+```
+
+
+
+
+
+```bash
+BESU_GRAPHQL_HTTP_CORS_ORIGINS="http://medomain.com","https://meotherdomain.com"
+```
+
+
+
+
+
+```bash
+graphql-http-cors-origins=["http://medomain.com","https://meotherdomain.com"]
+```
+
+
+
+
+
+A list of comma-separated origin domain URLs for CORS validation. The default is none.
+
+### `graphql-http-enabled`
+
+
+
+
+
+```bash
+--graphql-http-enabled[=]
+```
+
+
+
+
+
+```bash
+--graphql-http-enabled
+```
+
+
+
+
+
+```bash
+BESU_GRAPHQL_HTTP_ENABLED=true
+```
+
+
+
+
+
+```bash
+graphql-http-enabled=true
+```
+
+
+
+
+
+Enables or disables the GraphQL HTTP service. The default is `false`.
+
+The default GraphQL HTTP service endpoint is `http://127.0.0.1:8547/graphql` if set to `true`.
+
+### `graphql-http-host`
+
+
+
+
+
+```bash
+--graphql-http-host=
+```
+
+
+
+
+
+```bash
+# to listen on all interfaces
+--graphql-http-host=0.0.0.0
+```
+
+
+
+
+
+```bash
+# to listen on all interfaces
+BESU_GRAPHQL_HTTP_HOST=0.0.0.0
+```
+
+
+
+
+
+```bash
+graphql-http-host="0.0.0.0"
+```
+
+
+
+
+
+The host on which GraphQL HTTP listens. The default is `127.0.0.1`.
+
+To allow remote connections, set to `0.0.0.0`.
+
+### `graphql-http-port`
+
+
+
+
+
+```bash
+--graphql-http-port=
+```
+
+
+
+
+
+```bash
+# to listen on port 6175
+--graphql-http-port=6175
+```
+
+
+
+
+
+```bash
+# to listen on port 6175
+BESU_GRAPHQL_HTTP_PORT=6175
+```
+
+
+
+
+
+```bash
+graphql-http-port="6175"
+```
+
+
+
+
+
+The port (TCP) on which GraphQL HTTP listens. The default is `8547`. Ports must be [exposed appropriately](../../how-to/connect/configure-ports.md).
+
+### `help`
+
+
+
+
+
+```bash
+-h, --help
+```
+
+
+
+
+
+Show the help message and exit.
+
+### `host-allowlist`
+
+
+
+
+
+```bash
+--host-allowlist=[,...]... or "*"
+```
+
+
+
+
+
+```bash
+--host-allowlist=medomain.com,meotherdomain.com
+```
+
+
+
+
+
+```bash
+BESU_HOST_ALLOWLIST=medomain.com,meotherdomain.com
+```
+
+
+
+
+
+```bash
+host-allowlist=["medomain.com", "meotherdomain.com"]
+```
+
+
+
+
+
+A comma-separated list of hostnames to [access the JSON-RPC API](../../how-to/use-besu-api/index.md#host-allowlist) and [pull Besu metrics](../../how-to/monitor/metrics.md). By default, Besu accepts requests from `localhost` and `127.0.0.1`.
+
+:::info
+
+This isn't a permissioning feature. To restrict access to the API, we recommend using the [Besu authentication mechanism](../../how-to/use-besu-api/authenticate.md) with username and password authentication or JWT public key authentication.
+
+:::
+
+:::note
+
+If using [Prometheus](https://prometheus.io/) to pull metrics from a node, you must specify all the other nodes you want to pull metrics from in the list of allowed hostnames.
+
+:::
+
+:::tip
+
+To allow all hostnames, use `"*"`. We don't recommend allowing all hostnames for production environments.
+
+:::
+
+### `identity`
+
+
+
+
+
+```bash
+--identity=
+```
+
+
+
+
+
+```bash
+--identity=MyNode
+```
+
+
+
+
+
+```bash
+BESU_IDENTITY=MyNode
+```
+
+
+
+
+
+```bash
+identity="MyNode"
+```
+
+
+
+
+
+The name for the node. If specified, it's the second section of the client ID provided by some Ethereum network explorers. For example, in the client ID `besu/MyNode/v1.3.4/linux-x86_64/oracle_openjdk-java-11`, the node name is `MyNode`.
+
+If a name is not specified, the name section is not included in the client ID. For example, `besu/v1.3.4/linux-x86_64/oracle_openjdk-java-11`.
+
+### `json-pretty-print-enabled`
+
+
+
+
+
+```bash
+--json-pretty-print-enabled[=]
+```
+
+
+
+
+
+```bash
+--json-pretty-print-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_JSON_PRETTY_PRINT_ENABLED=true
+```
+
+
+
+
+
+```bash
+json-pretty-print-enabled=true
+```
+
+
+
+
+
+Enables or disables the pretty-print output for HTTP and WebSocket responses. The default is `false`.
+
+### `key-value-storage`
+
+
+
+
+
+```bash
+--key-value-storage=
+```
+
+
+
+
+
+```bash
+--key-value-storage=rocksdb
+```
+
+
+
+
+
+```bash
+BESU_KEY_VALUE_STORAGE=rocksdb
+```
+
+
+
+
+
+```bash
+key-value-storage="rocksdb"
+```
+
+
+
+
+
+The key-value storage to use. Use this option only if using a storage system provided with a plugin. The default is `rocksdb`.
+
+For development use only, the `memory` option provides ephemeral storage for sync testing and debugging.
+
+### `kzg-trusted-setup`
+
+
+
+
+
+```bash
+--kzg-trusted-setup=
+```
+
+
+
+
+
+```bash
+--kzg-trusted-setup=/etc/besu/kzg-trusted-setup.txt
+```
+
+
+
+
+
+```bash
+BESU_KZG_TRUSTED_SETUP=/etc/besu/kzg-trusted-setup.txt
+```
+
+
+
+
+
+```bash
+kzg-trusted-setup=/etc/besu/kzg-trusted-setup.txt
+```
+
+
+
+
+
+The path to the [C-KZG-4844](https://github.com/ethereum/c-kzg-4844) trusted setup file. Use this option to pass a custom setup file for custom networks or to override the default setup file for named networks.
+
+### `logging`
+
+
+
+
+
+```bash
+-l, --logging=
+```
+
+
+
+
+
+```bash
+--logging=DEBUG
+```
+
+
+
+
+
+```bash
+BESU_LOGGING=DEBUG
+```
+
+
+
+
+
+```bash
+logging="DEBUG"
+```
+
+
+
+
+
+Sets logging verbosity. Log levels are `OFF`, `FATAL`, `ERROR`, `WARN`, `INFO`, `DEBUG`, `TRACE`, `ALL`. The default is `INFO`.
+
+### `max-peers`
+
+
+
+
+
+```bash
+--max-peers=
+```
+
+
+
+
+
+```bash
+--max-peers=42
+```
+
+
+
+
+
+```bash
+BESU_MAX_PEERS=42
+```
+
+
+
+
+
+```bash
+max-peers=42
+```
+
+
+
+
+
+The maximum number of P2P connections you can establish. The default is 25.
+
+### `metrics-category`
+
+
+
+
+
+```bash
+--metrics-category=[,metrics-category...]...
+```
+
+
+
+
+
+```bash
+--metrics-category=BLOCKCHAIN,PEERS,PROCESS
+```
+
+
+
+
+
+```bash
+BESU_METRICS_CATEGORY=BLOCKCHAIN,PEERS,PROCESS
+```
+
+
+
+
+
+```bash
+metrics-category=["BLOCKCHAIN","PEERS","PROCESS"]
+```
+
+
+
+
+
+A comma-separated list of categories for which to track metrics. The defaults are `BLOCKCHAIN`, `ETHEREUM`, `EXECUTORS`, `JVM`, `NETWORK`, `PEERS`, `PERMISSIONING`, `PROCESS`, `PRUNER`, `RPC`, `STRATUM`, `SYNCHRONIZER`, and `TRANSACTION_POOL`.
+
+Other categories are `KVSTORE_ROCKSDB`, `KVSTORE_PRIVATE_ROCKSDB`, `KVSTORE_ROCKSDB_STATS`, and `KVSTORE_PRIVATE_ROCKSDB_STATS`.
+
+Categories containing `PRIVATE` track metrics when you enable [private transactions](../../../private-networks/concepts/privacy/index.md).
+
+### `metrics-enabled`
+
+
+
+
+
+```bash
+--metrics-enabled[=]
+```
+
+
+
+
+
+```bash
+--metrics-enabled
+```
+
+
+
+
+
+```bash
+BESU_METRICS_ENABLED=true
+```
+
+
+
+
+
+```bash
+metrics-enabled=true
+```
+
+
+
+
+
+Enables or disables the [metrics exporter](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). The default is `false`.
+
+You can't specify `--metrics-enabled` with [`--metrics-push-enabled`](#metrics-push-enabled). That is, you can enable either Prometheus polling or Prometheus push gateway support, but not both at once.
+
+### `metrics-host`
+
+
+
+
+
+```bash
+--metrics-host=
+```
+
+
+
+
+
+```bash
+--metrics-host=127.0.0.1
+```
+
+
+
+
+
+```bash
+BESU_METRICS_HOST=127.0.0.1
+```
+
+
+
+
+
+```bash
+metrics-host="127.0.0.1"
+```
+
+
+
+
+
+The host on which [Prometheus](https://prometheus.io/) accesses [Besu metrics](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). The metrics server respects the [`--host-allowlist` option](#host-allowlist).
+
+The default is `127.0.0.1`.
+
+### `metrics-port`
+
+
+
+
+
+```bash
+--metrics-port=
+```
+
+
+
+
+
+```bash
+--metrics-port=6174
+```
+
+
+
+
+
+```bash
+BESU_METRICS_PORT=6174
+```
+
+
+
+
+
+```bash
+metrics-port="6174"
+```
+
+
+
+
+
+The port (TCP) on which [Prometheus](https://prometheus.io/) accesses [Besu metrics](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). The default is `9545`. Ports must be [exposed appropriately](../../how-to/connect/configure-ports.md).
+
+### `metrics-protocol`
+
+
+
+
+
+```bash
+--metrics-protocol=
+```
+
+
+
+
+
+```bash
+--metrics-protocol=OPENTELEMETRY
+```
+
+
+
+
+
+```bash
+BESU_METRICS_PROTOCOL=OPENTELEMETRY
+```
+
+
+
+
+
+```bash
+metrics-protocol="OPENTELEMETRY"
+```
+
+
+
+
+
+Metrics protocol to use: `PROMETHEUS`, `OPENTELEMETRY`, or `NONE`. The default is `PROMETHEUS`.
+
+### `metrics-push-enabled`
+
+
+
+
+
+```bash
+--metrics-push-enabled[=]
+```
+
+
+
+
+
+```bash
+--metrics-push-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_METRICS_PUSH_ENABLED=true
+```
+
+
+
+
+
+```bash
+metrics-push-enabled=true
+```
+
+
+
+
+
+Enables or disables [push gateway integration].
+
+You can't specify `--metrics-push-enabled` with [`--metrics-enabled`](#metrics-enabled). That is, you can enable either Prometheus polling or Prometheus push gateway support, but not both at once.
+
+### `metrics-push-host`
+
+
+
+
+
+```bash
+--metrics-push-host=
+```
+
+
+
+
+
+```bash
+--metrics-push-host=127.0.0.1
+```
+
+
+
+
+
+```bash
+BESU_METRICS_PUSH_HOST=127.0.0.1
+```
+
+
+
+
+
+```bash
+metrics-push-host="127.0.0.1"
+```
+
+
+
+
+
+The host of the [Prometheus Push Gateway](https://github.com/prometheus/pushgateway). The default is `127.0.0.1`. The metrics server respects the [`--host-allowlist` option](#host-allowlist).
+
+:::note
+
+When pushing metrics, ensure you set `--metrics-push-host` to the machine on which the push gateway is. Generally, this is a different machine to the machine on which Besu is running.
+
+:::
+
+### `metrics-push-interval`
+
+
+
+
+
+```bash
+--metrics-push-interval=
+```
+
+
+
+
+
+```bash
+--metrics-push-interval=30
+```
+
+
+
+
+
+```bash
+BESU_METRICS_PUSH_INTERVAL=30
+```
+
+
+
+
+
+```bash
+metrics-push-interval=30
+```
+
+
+
+
+
+The interval, in seconds, to push metrics when in `push` mode. The default is 15.
+
+### `metrics-push-port`
+
+
+
+
+
+```bash
+--metrics-push-port=
+```
+
+
+
+
+
+```bash
+--metrics-push-port=6174
+```
+
+
+
+
+
+```bash
+BESU_METRICS_PUSH_PORT=6174
+```
+
+
+
+
+
+```bash
+metrics-push-port="6174"
+```
+
+
+
+
+
+The port (TCP) of the [Prometheus Push Gateway](https://github.com/prometheus/pushgateway). The default is `9001`. Ports must be [exposed appropriately](../../how-to/connect/configure-ports.md).
+
+### `metrics-push-prometheus-job`
+
+
+
+
+
+```bash
+--metrics-push-prometheus-job=
+```
+
+
+
+
+
+```bash
+--metrics-push-prometheus-job="my-custom-job"
+```
+
+
+
+
+
+```bash
+BESU_METRICS_PUSH_PROMETHEUS_JOB="my-custom-job"
+```
+
+
+
+
+
+```bash
+metrics-push-prometheus-job="my-custom-job"
+```
+
+
+
+
+
+The job name when in `push` mode. The default is `besu-client`.
+
+### `min-block-occupancy-ratio`
+
+
+
+
+
+```bash
+--min-block-occupancy-ratio=
+```
+
+
+
+
+
+```bash
+--min-block-occupancy-ratio=0.5
+```
+
+
+
+
+
+```bash
+BESU_MIN_BLOCK_OCCUPANCY_RATIO=0.5
+```
+
+
+
+
+
+```bash
+min-block-occupancy-ratio="0.5"
+```
+
+
+
+
+
+Minimum occupancy ratio for a mined block if the transaction pool is not empty. When filling a block during mining, the occupancy ratio indicates the threshold at which the node stops waiting for smaller transactions to fill the remaining space. The default is 0.8.
+
+:::note
+
+Besu ignores the `--min-block-occupancy-ratio` option for proof of stake networks (for example, Mainnet).
+
+:::
+
+### `miner-coinbase`
+
+
+
+
+
+```bash
+--miner-coinbase=
+```
+
+
+
+
+
+```bash
+--miner-coinbase=fe3b557e8fb62b89f4916b721be55ceb828dbd73
+```
+
+
+
+
+
+```bash
+BESU_MINER_COINBASE=fe3b557e8fb62b89f4916b721be55ceb828dbd73
+```
+
+
+
+
+
+```bash
+miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
+```
+
+
+
+
+
+The account you pay mining rewards to. You must specify a valid coinbase when you enable mining using the [`--miner-enabled`](#miner-enabled) option or the [`miner_start`](../api/index.md#miner_start) JSON-RPC API method.
+
+:::note
+
+Besu ignores this option in networks using [Clique](../../../private-networks/how-to/configure/consensus/clique.md), [IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md), or [QBFT](../../../private-networks/how-to/configure/consensus/qbft.md) consensus protocols.
+
+:::
+
+### `miner-enabled`
+
+
+
+
+
+```bash
+--miner-enabled[=]
+```
+
+
+
+
+
+```bash
+--miner-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_MINER_ENABLED=true
+```
+
+
+
+
+
+```bash
+miner-enabled=true
+```
+
+
+
+
+
+Enables or disables mining when you start the node. The default is `false`.
+
+### `miner-extra-data`
+
+
+
+
+
+```bash
+--miner-extra-data=
+```
+
+
+
+
+
+```bash
+--miner-extra-data=0x444F4E27542050414E4943202120484F444C2C20484F444C2C20484F444C2021
+```
+
+
+
+
+
+```bash
+BESU_MINER_EXTRA_DATA=0x444F4E27542050414E4943202120484F444C2C20484F444C2C20484F444C2021
+```
+
+
+
+
+
+```bash
+miner-extra-data="0x444F4E27542050414E4943202120484F444C2C20484F444C2C20484F444C2021"
+```
+
+
+
+
+
+A hex string representing the 32 bytes included in the extra data field of a mined block. The default is 0x.
+
+### `miner-stratum-enabled`
+
+
+
+
+
+```bash
+--miner-stratum-enabled
+```
+
+
+
+
+
+```bash
+BESU_MINER_STRATUM_ENABLED=true
+```
+
+
+
+
+
+```bash
+miner-stratum-enabled=true
+```
+
+
+
+
+
+Enables a node to perform stratum mining. The default is `false`.
+
+### `miner-stratum-host`
+
+
+
+
+
+```bash
+--miner-stratum-host=
+```
+
+
+
+
+
+```bash
+--miner-stratum-host=192.168.1.132
+```
+
+
+
+
+
+```bash
+BESU_MINER_STRATUM_HOST=192.168.1.132
+```
+
+
+
+
+
+```bash
+miner-stratum-host="192.168.1.132"
+```
+
+
+
+
+
+The host of the stratum mining service. The default is `0.0.0.0`.
+
+### `miner-stratum-port`
+
+
+
+
+
+```bash
+--miner-stratum-port=
+```
+
+
+
+
+
+```bash
+--miner-stratum-port=8010
+```
+
+
+
+
+
+```bash
+BESU_MINER_STRATUM_PORT=8010
+```
+
+
+
+
+
+```bash
+miner-stratum-port="8010"
+```
+
+
+
+
+
+The port of the stratum mining service. The default is `8008`. You must [expose ports appropriately](../../how-to/connect/configure-ports.md).
+
+### `min-gas-price`
+
+
+
+
+
+```bash
+--min-gas-price=
+```
+
+
+
+
+
+```bash
+--min-gas-price=1337
+```
+
+
+
+
+
+```bash
+BESU_MIN_GAS_PRICE=1337
+```
+
+
+
+
+
+```bash
+min-gas-price=1337
+```
+
+
+
+
+
+The minimum price a transaction offers to include it in a mined block. The minimum gas price is the lowest value [`eth_gasPrice`](../api/index.md#eth_gasprice) can return. The default is 1000 Wei.
+
+:::tip
+
+In a [free gas network](../../../private-networks/how-to/configure/free-gas.md), ensure the minimum gas price is set to zero for every node. Any node with a minimum gas price set higher than zero will silently drop transactions with a zero gas price. You can query a node's gas configuration using [`eth_gasPrice`](../api/index.md#eth_gasprice).
+
+:::
+
+### `min-priority-fee`
+
+
+
+
+
+```bash
+--min-priority-fee=
+```
+
+
+
+
+
+```bash
+--min-gas-price=7
+```
+
+
+
+
+
+```bash
+BESU_MIN_PRIORITY_FEE=7
+```
+
+
+
+
+
+```bash
+min-priority-fee=7
+```
+
+
+
+
+
+The minimum priority fee per gas (in Wei) offered by a transaction to be included in a block. The default is `0`.
+For a running node, use:
+* [`miner_getMinPriorityFee`](../api/index.md#minergetminpriorityfee) to get the value.
+* [`miner_setMinPriorityFee`](../api/index.md#minersetminpriorityfee) to change the value.
+
+### `nat-method`
+
+
+
+
+
+```bash
+--nat-method=UPNP
+```
+
+
+
+
+
+```bash
+nat-method="UPNP"
+```
+
+
+
+
+
+Specify the method for handling [NAT environments](../../how-to/connect/specify-nat.md). The options are:
+
+- [`UPNP`](../../how-to/connect/specify-nat.md#upnp)
+- [`UPNPP2PONLY`](../../how-to/connect/specify-nat.md#upnp)
+- [`KUBERNETES`](../../how-to/connect/specify-nat.md#kubernetes)
+- [`DOCKER`](../../how-to/connect/specify-nat.md#docker)
+- [`AUTO`](../../how-to/connect/specify-nat.md#auto)
+- [`NONE`](../../how-to/connect/specify-nat.md#none).
+
+The default is `AUTO`. `NONE` disables NAT functionality.
+
+:::tip
+
+UPnP support is often disabled by default in networking firmware. If disabled by default, explicitly enable UPnP support.
+
+:::
+
+:::tip
+
+Use `UPNPP2PONLY` if you wish to enable UPnP for p2p traffic but not JSON-RPC.
+
+:::
+
+:::note
+
+Specifying `UPNP` might introduce delays during node startup, especially on networks without a UPnP gateway device.
+
+You must specify `DOCKER` when using the [Besu Docker image](../../get-started/install/run-docker-image.md).
+
+:::
+
+### `network`
+
+
+
+
+
+```bash
+--network=
+```
+
+
+
+
+
+```bash
+--network=goerli
+```
+
+
+
+
+
+```bash
+BESU_NETWORK=goerli
+```
+
+
+
+
+
+```bash
+network="goerli"
+```
+
+
+
+
+
+The predefined network configuration. The default is `mainnet`.
+
+Possible values are:
+
+| Network | Chain | Type | Default Sync Mode | Description |
+| :-------- | :---- | :-----------| :----------------- | :------------------------------------------------------------- |
+| `mainnet` | ETH | Production | [FAST](#sync-mode) | The main network |
+| `goerli` | ETH | Test | [FAST](#sync-mode) | A PoS network |
+| `holesky` | ETH | Test | [FAST](#sync-mode) | A PoS network |
+| `sepolia` | ETH | Test | [FAST](#sync-mode) | A PoS network |
+| `dev` | ETH | Development | [FULL](#sync-mode) | A PoW network with a low difficulty to enable local CPU mining |
+| `classic` | ETC | Production | [FAST](#sync-mode) | The main Ethereum Classic network |
+| `mordor ` | ETC | Test | [FAST](#sync-mode) | A PoW network |
+
+:::tip
+
+Values are case insensitive, so either `mainnet` or `MAINNET` works.
+
+:::
+
+:::info
+
+- You can't use the `--network` and [`--genesis-file`](#genesis-file) options at the same time.
+
+- The Ropsten, Rinkeby, and Kiln testnets are deprecated.
+
+:::
+
+### `network-id`
+
+
+
+
+
+```bash
+--network-id=
+```
+
+
+
+
+
+```bash
+--network-id=8675309
+```
+
+
+
+
+
+```bash
+BESU_NETWORK_ID=8675309
+```
+
+
+
+
+
+```bash
+network-id="8675309"
+```
+
+
+
+
+
+The [P2P network identifier](../../concepts/network-and-chain-id.md).
+
+Use this option to override the default network ID. The default value is the same as the chain ID defined in the genesis file.
+
+### `node-private-key-file`
+
+
+
+
+
+```bash
+--node-private-key-file=
+```
+
+
+
+
+
+```bash
+--node-private-key-file=/home/me/me_node/myPrivateKey
+```
+
+
+
+
+
+```bash
+BESU_NODE_PRIVATE_KEY_FILE=/home/me/me_node/myPrivateKey
+```
+
+
+
+
+
+```bash
+node-private-key-file="/home/me/me_node/myPrivateKey"
+```
+
+
+
+
+
+The private key file for the node. The default is the key file in the [data directory](#data-path). If no key file exists, Besu creates a key file containing the generated private key, otherwise, the existing key file specifies the node private key.
+
+:::danger
+
+The private key is not encrypted.
+
+:::
+
+This option is ignored if [`--security-module`](#security-module) is set to a non-default value.
+
+### `p2p-enabled`
+
+
+
+
+
+```bash
+--p2p-enabled[=]
+```
+
+
+
+
+
+```bash
+--p2p-enabled=false
+```
+
+
+
+
+
+```bash
+BESU_P2P_ENABLED=false
+```
+
+
+
+
+
+```bash
+p2p-enabled=false
+```
+
+
+
+
+
+Enables or disables all P2P communication. The default is `true`.
+
+### `p2p-host`
+
+
+
+
+
+```bash
+--p2p-host=
+```
+
+
+
+
+
+```bash
+# to listen on all interfaces
+--p2p-host=0.0.0.0
+```
+
+
+
+
+
+```bash
+# to listen on all interfaces
+BESU_P2P_HOST=0.0.0.0
+```
+
+
+
+
+
+```bash
+p2p-host="0.0.0.0"
+```
+
+
+
+
+
+The advertised host that can be used to access the node from outside the network in [P2P communication](../../how-to/connect/configure-ports.md#p2p-networking). The default is `127.0.0.1`.
+
+:::info
+
+If [`--nat-method`](#nat-method) is set to [`NONE`](../../how-to/connect/specify-nat.md), `--p2p-host` is not overridden and must be specified for the node to be accessed from outside the network.
+
+:::
+
+### `p2p-interface`
+
+
+
+
+
+```bash
+--p2p-interface=
+```
+
+
+
+
+
+```bash
+--p2p-interface=192.168.1.132
+```
+
+
+
+
+
+```bash
+BESU_P2P_INTERFACE=192.168.1.132
+```
+
+
+
+
+
+```bash
+p2p-interface="192.168.1.132"
+```
+
+
+
+
+
+The network interface on which the node listens for [P2P communication](../../how-to/connect/configure-ports.md#p2p-networking). Use the option to specify the required network interface when the device that Besu is running on has multiple network interfaces. The default is 0.0.0.0 (all interfaces).
+
+### `p2p-port`
+
+
+
+
+
+```bash
+--p2p-port=
+```
+
+
+
+
+
+```bash
+# to listen on port 1789
+--p2p-port=1789
+```
+
+
+
+
+
+```bash
+# to listen on port 1789
+BESU_P2P_PORT=1789
+```
+
+
+
+
+
+```bash
+p2p-port="1789"
+```
+
+
+
+
+
+The P2P listening ports (UDP and TCP). The default is `30303`. You must [expose ports appropriately](../../how-to/connect/configure-ports.md).
+
+### `profile`
+
+
+
+
+```bash
+--profile=
+```
+
+
+
+
+```bash
+--profile=staker
+```
+
+
+
+
+```bash
+BESU_PROFILE=staker
+```
+
+
+
+
+```bash
+profile="staker"
+```
+
+
+
+
+Loads a pre-configured TOML file containing custom settings for a specific user profile.
+Possible values are:
+
+- [`minimalist_staker`](../../how-to/use-configuration-file/profile.md#minimalist-staker-profile)
+- [`staker`](../../how-to/use-configuration-file/profile.md#staker-profile)
+- [`enterprise` or `private`](../../how-to/use-configuration-file/profile.md#enterpriseprivate-profile) (aliases for the same profile)
+
+### `random-peer-priority-enabled`
+
+
+
+
+
+```bash
+--random-peer-priority-enabled[=]
+```
+
+
+
+
+
+```bash
+--random-peer-priority-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RANDOM_PEER_PRIORITY_ENABLED=true
+```
+
+
+
+
+
+```bash
+random-peer-priority-enabled=true
+```
+
+
+
+
+
+Enables or disables random prioritization of incoming connections. Enable in small, stable networks to prevent closed groups of peers forming. The default is `false`.
+
+### `remote-connections-limit-enabled`
+
+
+
+
+
+```bash
+--remote-connections-limit-enabled[=]
+```
+
+
+
+
+
+```bash
+--remote-connections-limit-enabled=false
+```
+
+
+
+
+
+```bash
+BESU_REMOTE_CONNECTIONS_LIMIT_ENABLED=false
+```
+
+
+
+
+
+```bash
+remote-connections-limit-enabled=false
+```
+
+
+
+
+
+Enables or disables using the [`--remote-connections-max-percentage`](#remote-connections-max-percentage) option to limit the percentage of remote P2P connections initiated by peers. The default is `true`.
+
+:::tip
+
+In private and permissioned networks with a level of trust between peers, disabling the remote connection limits may increase the speed at which nodes can join the network.
+
+:::
+
+:::danger
+
+To prevent eclipse attacks, ensure you enable the remote connections limit when connecting to any public network, and especially when using [`--sync-mode`](#sync-mode) and [`--fast-sync-min-peers`](#fast-sync-min-peers).
+
+:::
+
+### `remote-connections-max-percentage`
+
+
+
+
+
+```bash
+--remote-connections-max-percentage=
+```
+
+
+
+
+
+```bash
+--remote-connections-max-percentage=25
+```
+
+
+
+
+
+```bash
+BESU_REMOTE_CONNECTIONS_MAX_PERCENTAGE=25
+```
+
+
+
+
+
+```bash
+remote-connections-max-percentage=25
+```
+
+
+
+
+
+The percentage of remote P2P connections you can establish with the node. Must be between 0 and 100, inclusive. The default is 60.
+
+### `reorg-logging-threshold`
+
+
+
+
+
+```bash
+--reorg-logging-threshold=
+```
+
+
+
+
+
+```bash
+--reorg-logging-threshold=3
+```
+
+
+
+
+
+```bash
+BESU_REORG_LOGGING_THRESHOLD=3
+```
+
+
+
+
+
+```bash
+reorg-logging-threshold=3
+```
+
+
+
+
+
+Minimum depth of chain reorganizations to log. The default is 6.
+
+### `required-block`
+
+
+
+
+
+```bash
+--required-block, --required-blocks[=BLOCK=HASH[,BLOCK=HASH...]...]
+```
+
+
+
+
+
+```bash
+--required-block=6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80
+```
+
+
+
+
+
+```bash
+BESU_REQUIRED_BLOCK=6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80
+```
+
+
+
+
+
+```bash
+required-block=["6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80"]
+```
+
+
+
+
+
+Requires a peer with the specified block number to have the specified hash when connecting, or Besu rejects that peer.
+
+### `revert-reason-enabled`
+
+
+
+
+
+```bash
+--revert-reason-enabled[=]
+```
+
+
+
+
+
+```bash
+--revert-reason-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_REVERT_REASON_ENABLED=true
+```
+
+
+
+
+
+```bash
+revert-reason-enabled=true
+```
+
+
+
+
+
+Enables or disables including the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md) in the transaction receipt, [`eth_estimateGas`](../api/index.md#eth_estimategas) error response, [`eth_call`](../api/index.md#eth_call) error response, and [`trace`](../trace-types.md#trace) response. The default is `false`.
+
+:::caution
+
+Enabling revert reason may use a significant amount of memory. We don't recommend enabling revert reason when connected to public Ethereum networks.
+
+:::
+
+### `rpc-gas-cap`
+
+
+
+
+
+```bash
+--rpc-gas-cap=
+```
+
+
+
+
+
+```bash
+--rpc-gas-cap=50000000
+```
+
+
+
+
+
+```bash
+BESU_RPC_GAS_CAP=50000000
+```
+
+
+
+
+
+```bash
+rpc-gas-cap=50000000
+```
+
+
+
+
+
+Sets a limit on the amount of gas for transaction simulation RPC methods. Its value must be greater than or equal to `0`. The default is `0`, which indicates there is no limit. This cap prevents [`eth_call`](../api/index.md#eth_call) requests from using excessive resources.
+
+### `rpc-http-api`
+
+
+
+
+
+```bash
+--rpc-http-api=[,,...]
+```
+
+
+
+
+
+```bash
+--rpc-http-api=ETH,NET,WEB3
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_API=ETH,NET,WEB3
+```
+
+
+
+
+
+```bash
+rpc-http-api=["ETH","NET","WEB3"]
+```
+
+
+
+
+
+A comma-separated list of APIs to enable on the JSON-RPC HTTP channel. When you use this option you must also specify the `--rpc-http-enabled` option. The available API options are: `ADMIN`, `CLIQUE`, `DEBUG`, `EEA`, `ETH`, `IBFT`, `MINER`, `NET`, `PERM`, `PLUGINS`, `PRIV`, `QBFT`, `TRACE`, `TXPOOL`, and `WEB3`. The default is: `ETH`, `NET`, `WEB3`.
+
+:::tip
+
+The singular `--rpc-http-api` and plural `--rpc-http-apis` are available and are two names for the same option.
+
+:::
+
+### `rpc-http-api-methods-no-auth`
+
+
+
+
+
+```bash
+--rpc-http-api-methods-no-auth=[,,...]
+```
+
+
+
+
+
+```bash
+--rpc-http-api-methods-no-auth=admin_peers,eth_getWork
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_API_METHODS_NO_AUTH=admin_peers,eth_getWork
+```
+
+
+
+
+
+```bash
+rpc-http-api-methods-no-auth=["admin_peers","eth_getWork"]
+```
+
+
+
+
+
+A comma-separated list of JSON-RPC API methods to exclude from [authentication services](../../how-to/use-besu-api/authenticate.md).
+
+:::note
+You must enable JSON-RPC HTTP authentication using [`--rpc-http-authentication-enabled`](#rpc-http-authentication-enabled).
+:::
+
+### `rpc-http-authentication-credentials-file`
+
+
+
+
+
+```bash
+--rpc-http-authentication-credentials-file=
+```
+
+
+
+
+
+```bash
+--rpc-http-authentication-credentials-file=/home/me/me_node/auth.toml
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_AUTHENTICATION_CREDENTIALS_FILE=/home/me/me_node/auth.toml
+```
+
+
+
+
+
+```bash
+rpc-http-authentication-credentials-file="/home/me/me_node/auth.toml"
+```
+
+
+
+
+
+The [credentials file](../../how-to/use-besu-api/authenticate.md#1-create-the-credentials-file) for JSON-RPC API [authentication](../../how-to/use-besu-api/authenticate.md).
+
+### `rpc-http-authentication-enabled`
+
+
+
+
+
+```bash
+--rpc-http-authentication-enabled[=]
+```
+
+
+
+
+
+```bash
+--rpc-http-authentication-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_AUTHENTICATION_ENABLED=true
+```
+
+
+
+
+
+```bash
+rpc-http-authentication-enabled=true
+```
+
+
+
+
+
+Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the JSON-RPC HTTP service.
+
+### `rpc-http-authentication-jwt-algorithm`
+
+
+
+
+
+```bash
+---rpc-http-authentication-jwt-algorithm=
+```
+
+
+
+
+
+```bash
+--rpc-http-authentication-jwt-algorithm=ES256
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_AUTHENTICATION_JWT_ALGORITHM=ES256
+```
+
+
+
+
+
+```bash
+rpc-http-authentication-jwt-algorithm="ES256"
+```
+
+
+
+
+
+The [JWT key algorithm](../../how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair)
+used to generate the keypair for JSON-RPC HTTP authentication.
+Possible values are `RS256`, `RS384`, `RS512`, `ES256`, `ES384`, and `ES512`.
+The default is `RS256`.
+
+### `rpc-http-authentication-jwt-public-key-file`
+
+
+
+
+
+```bash
+--rpc-http-authentication-jwt-public-key-file=
+```
+
+
+
+
+
+```bash
+--rpc-http-authentication-jwt-public-key-file=publicKey.pem
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_AUTHENTICATION_JWT_PUBLIC_KEY_FILE="publicKey.pem"
+```
+
+
+
+
+
+```bash
+rpc-http-authentication-jwt-public-key-file="publicKey.pem"
+```
+
+
+
+
+
+The [JWT provider's public key file] used for JSON-RPC HTTP authentication with an external JWT.
+
+### `rpc-http-cors-origins`
+
+
+
+
+
+```bash
+--rpc-http-cors-origins=[,...]... or all or "*"
+```
+
+
+
+
+
+```bash
+--rpc-http-cors-origins=http://medomain.com,http://remix.ethereum.org
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_CORS_ORIGINS=http://medomain.com,https://meotherdomain.com
+```
+
+
+
+
+
+```bash
+rpc-http-cors-origins=["http://medomain.com","https://meotherdomain.com"]
+```
+
+
+
+
+
+A comma-separated list of domain URLs for CORS validation.
+
+Listed domains can access the node using JSON-RPC. If your client interacts with Besu using a browser app (such as Remix or a block explorer), add the client domain to the list.
+
+The default value is `"none"`. If you do not list any domains, browser apps cannot interact with your Besu node.
+
+:::note
+
+To run a local Besu node with MetaMask, set `--rpc-http-cors-origins` to `chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn`.
+
+Remember to also include the dapp domain MetaMask interacts with, for example if your app is deployed on Remix and you're using MetaMask to interact with the contract, use `--rpc-http-cors-origins=chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn,http://remix.ethereum.org`
+
+:::
+
+:::tip
+
+For testing and development purposes, use `"all"` or `"*"` to accept requests from any domain. We don't recommend accepting requests from any domain for production environments.
+
+:::
+
+### `rpc-http-enabled`
+
+
+
+
+
+```bash
+--rpc-http-enabled[=]
+```
+
+
+
+
+
+```bash
+--rpc-http-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_ENABLED=true
+```
+
+
+
+
+
+```bash
+rpc-http-enabled=true
+```
+
+
+
+
+
+Enables or disables the JSON-RPC HTTP service. The default is `false`.
+
+### `rpc-http-host`
+
+
+
+
+
+```bash
+--rpc-http-host=
+```
+
+
+
+
+
+```bash
+# to listen on all interfaces
+--rpc-http-host=0.0.0.0
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_HOST=0.0.0.0
+```
+
+
+
+
+
+```bash
+rpc-http-host="0.0.0.0"
+```
+
+
+
+
+
+The host on which JSON-RPC HTTP listens. The default is `127.0.0.1`.
+
+To allow remote connections, set to `0.0.0.0`.
+
+:::caution
+
+Setting the host to `0.0.0.0` exposes the RPC connection on your node to any remote connection. In a production environment, ensure you are using a firewall to avoid exposing your node to the internet.
+
+:::
+
+### `rpc-http-max-active-connections`
+
+
+
+
+
+```bash
+--rpc-http-max-active-connections=
+```
+
+
+
+
+
+```bash
+--rpc-http-max-active-connections=100
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_MAX_ACTIVE_CONNECTIONS=100
+```
+
+
+
+
+
+```toml
+rpc-http-max-active-connections=100
+```
+
+
+
+
+
+The maximum number of allowed JSON-RPC HTTP connections. Once this limit is reached, incoming connections are rejected. The default is 80.
+
+### `rpc-http-max-request-content-length`
+
+
+
+
+
+```bash
+--rpc-http-max-request-content-length=
+```
+
+
+
+
+
+```bash
+--rpc-http-max-request-content-length=2097152
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_MAX_REQUEST_CONTENT_LENGTH=2097152
+```
+
+
+
+
+
+```toml
+rpc-http-max-request-content-length=2097152
+```
+
+
+
+
+
+The maximum request content length.
+Besu only accepts JSON-RPC API requests with a body size less than or equal to this value.
+The default is 5242880 (5 MB).
+
+### `rpc-http-max-batch-size`
+
+
+
+
+
+```bash
+--rpc-http-max-batch-size=
+```
+
+
+
+
+
+```bash
+--rpc-http-max-batch-size=1200
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_MAX_BATCH_SIZE=1200
+```
+
+
+
+
+
+```toml
+rpc-http-max-batch-size=1200
+```
+
+
+
+
+
+The maximum number of allowed requests in a [RPC batch request](../../how-to/use-besu-api/json-rpc.md#http). The default limit is `1024`, and `-1` specifies no limit.
+
+### `rpc-http-port`
+
+
+
+
+
+```bash
+--rpc-http-port=
+```
+
+
+
+
+
+```bash
+# to listen on port 3435
+--rpc-http-port=3435
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_PORT=3435
+```
+
+
+
+
+
+```bash
+rpc-http-port="3435"
+```
+
+
+
+
+
+The port (TCP) on which JSON-RPC HTTP listens. The default is `8545`. You must [expose ports appropriately](../../how-to/connect/configure-ports.md).
+
+### `rpc-http-tls-ca-clients-enabled`
+
+
+
+
+
+```bash
+--rpc-http-tls-ca-clients-enabled[=]
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-ca-clients-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_CA_CLIENTS_ENABLED=true
+```
+
+
+
+
+
+```bash
+rpc-http-tls-ca-clients-enabled=true
+```
+
+
+
+
+
+Enables or disables clients with trusted CA certificates to connect. The default is `false`.
+
+:::note
+
+You must enable client authentication using the [`--rpc-http-tls-client-auth-enabled`](#rpc-http-tls-client-auth-enabled) option.
+
+:::
+
+### `rpc-http-tls-client-auth-enabled`
+
+
+
+
+
+```bash
+--rpc-http-tls-client-auth-enabled[=]
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-client-auth-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_CLIENT_AUTH_ENABLED=true
+```
+
+
+
+
+
+```bash
+rpc-http-tls-client-auth-enabled=true
+```
+
+
+
+
+
+Enables or disables TLS client authentication for the JSON-RPC HTTP service. The default is `false`.
+
+:::note
+
+You must specify [`--rpc-http-tls-ca-clients-enabled`](#rpc-http-tls-ca-clients-enabled) and/or [`rpc-http-tls-known-clients-file`](#rpc-http-tls-known-clients-file).
+
+:::
+
+### `rpc-http-tls-cipher-suite`
+
+
+
+
+
+```bash
+--rpc-http-tls-cipher-suite=[, ...]
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-cipher-suite=TLS_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_CIPHER_SUITE=TLS_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
+```
+
+
+
+
+
+```bash
+rpc-http-tls-cipher-suite=["TLS_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"]
+```
+
+
+
+
+
+A list of comma-separated TLS cipher suites to support.
+
+:::tip
+
+The singular `--rpc-http-tls-cipher-suite` and plural `--rpc-http-tls-cipher-suites` are available and are two names for the same option.
+
+:::
+
+### `rpc-http-tls-enabled`
+
+
+
+
+
+```bash
+--rpc-http-tls-enabled[=]
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_ENABLED=true
+```
+
+
+
+
+
+```bash
+rpc-http-tls-enabled=true
+```
+
+
+
+
+
+Enables or disables TLS for the JSON-RPC HTTP service. The default is `false`.
+
+:::note
+
+[`--rpc-http-enabled`](#rpc-http-enabled) must be enabled.
+
+:::
+
+### `rpc-http-tls-keystore-file`
+
+
+
+
+
+```bash
+--rpc-http-tls-keystore-file=
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-keystore-file=/home/me/me_node/keystore.pfx
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_KEYSTORE_FILE=/home/me/me_node/keystore.pfx
+```
+
+
+
+
+
+```bash
+rpc-http-tls-keystore-file="/home/me/me_node/keystore.pfx"
+```
+
+
+
+
+
+The Keystore file (in PKCS #12 format) that contains private key and the certificate presented to the client during authentication.
+
+### `rpc-http-tls-keystore-password-file`
+
+
+
+
+
+```bash
+--rpc-http-tls-keystore-password-file=
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-keystore-password-file=/home/me/me_node/password
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_KEYSTORE_PASSWORD_FILE=/home/me/me_node/password
+```
+
+
+
+
+
+```bash
+rpc-http-tls-keystore-password-file="/home/me/me_node/password"
+```
+
+
+
+
+
+The path to the file containing the password to decrypt the keystore.
+
+### `rpc-http-tls-known-clients-file`
+
+
+
+
+
+```bash
+--rpc-http-tls-known-clients-file=
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-known-clients-file=/home/me/me_node/knownClients
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_KNOWN_CLIENTS_FILE=/home/me/me_node/knownClients
+```
+
+
+
+
+
+```bash
+rpc-http-tls-known-clients-file="/home/me/me_node/knownClients"
+```
+
+
+
+
+
+The path to the file used to [authenticate clients](../../../private-networks/how-to/configure/tls/client-and-server.md#create-the-known-clients-file) using self-signed certificates or non-public certificates.
+
+Must contain the certificate's Common Name, and SHA-256 fingerprint in the format ` `.
+
+:::note
+
+You must enable client authentication using the [`--rpc-http-tls-client-auth-enabled`](#rpc-http-tls-client-auth-enabled) option.
+
+:::
+
+### `rpc-http-tls-protocol`
+
+
+
+
+
+```bash
+--rpc-http-tls-protocol=[, ...]
+```
+
+
+
+
+
+```bash
+--rpc-http-tls-protocol=TLSv1.3,TLSv1.2
+```
+
+
+
+
+
+```bash
+BESU_RPC_HTTP_TLS_PROTOCOL=TLSv1.3,TLSv1.2
+```
+
+
+
+
+
+```bash
+rpc-http-tls-protocol=["TLSv1.3","TLSv1.2"]
+```
+
+
+
+
+
+A list of comma-separated TLS protocols to support. The default is `DEFAULT_TLS_PROTOCOLS`, a list which includes `TLSv1.3` and `TLSv1.2`.
+
+:::tip
+
+The singular `--rpc-http-tls-protocol` and plural `--rpc-http-tls-protocols` are available and are two names for the same option.
+
+:::
+
+### `rpc-max-logs-range`
+
+
+
+
+
+```bash
+--rpc-max-logs-range=
+```
+
+
+
+
+
+```bash
+--rpc-max-logs-range=500
+```
+
+
+
+
+
+```bash
+BESU_RPC_MAX_LOGS_RANGE=500
+```
+
+
+
+
+
+```bash
+rpc-max-logs-range=500
+```
+
+
+
+
+
+When using [`eth_getLogs`](../api/index.md#eth_getlogs), the maximum number of blocks to retrieve logs from. Set to 0 to specify no limit. The default is 5000.
+
+:::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 or leaving this option at its default value.
+
+:::
+
+### `rpc-max-trace-filter-range`
+
+
+
+
+
+```bash
+--rpc-max-trace-filter-range=
+```
+
+
+
+
+
+```bash
+--rpc-max-trace-filter-range=100
+```
+
+
+
+
+
+```bash
+--BESU_RPC_MAX_TRACE_FILTER_RANGE=100
+```
+
+
+
+
+
+```bash
+rpc-max-trace-filter-range=100
+```
+
+
+
+
+
+The maximum number of blocks you can supply to the [`trace_filter`](../api/index.md#trace_filter) method. The value must be equal to or greater than `0`. Setting this option to `0` indicates there is no limit. The default is `1000`.
+
+
+### `rpc-tx-feecap`
+
+
+
+
+
+```bash
+--rpc-tx-feecap=
+```
+
+
+
+
+
+```bash
+--rpc-tx-feecap=1200000000000000000
+```
+
+
+
+
+
+```bash
+BESU_RPC_TX_FEECAP=1200000000000000000
+```
+
+
+
+
+
+```bash
+rpc-tx-feecap=1200000000000000000
+```
+
+
+
+
+
+The maximum transaction fee (in Wei) accepted for transactions submitted through the [`eth_sendRawTransaction`](../api/index.md#eth_sendrawtransaction) RPC. The default is 1000000000000000000 (1 ether).
+
+If set to 0, then this option is ignored and no cap is applied.
+
+### `rpc-ws-api`
+
+
+
+
+
+```bash
+--rpc-ws-api=[,...]...
+```
+
+
+
+
+
+```bash
+--rpc-ws-api=ETH,NET,WEB3
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_API=ETH,NET,WEB3
+```
+
+
+
+
+
+```bash
+rpc-ws-api=["ETH","NET","WEB3"]
+```
+
+
+
+
+
+A comma-separated list of APIs to enable on the WebSockets channel. When you use this option you must also specify the `--rpc-ws-enabled` option. The available API options are: `ADMIN`, `CLIQUE`, `DEBUG`, `EEA`, `ETH`, `IBFT`, `MINER`, `NET`, `PERM`, `PLUGINS`, `PRIV`, `QBFT`, `TRACE`, `TXPOOL`, and `WEB3`. The default is: `ETH`, `NET`, `WEB3`.
+
+:::tip
+
+The singular `--rpc-ws-api` and plural `--rpc-ws-apis` options are available and are two names for the same option.
+
+:::
+
+### `rpc-ws-api-methods-no-auth`
+
+
+
+
+
+```bash
+--rpc-ws-api-methods-no-auth=[,,...]
+```
+
+
+
+
+
+```bash
+--rpc-ws-api-methods-no-auth=admin_peers,eth_getWork
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_API_METHODS_NO_AUTH=admin_peers,eth_getWork
+```
+
+
+
+
+
+```bash
+rpc-ws-api-methods-no-auth=["admin_peers","eth_getWork"]
+```
+
+
+
+
+
+A comma-separated list of JSON-RPC API methods to exclude from [authentication services](../../how-to/use-besu-api/authenticate.md).
+
+:::note
+You must enable JSON-RPC WebSocket authentication using [`--rpc-ws-authentication-enabled`](#rpc-ws-authentication-enabled).
+:::
+
+### `rpc-ws-authentication-credentials-file`
+
+
+
+
+
+```bash
+--rpc-ws-authentication-credentials-file=
+```
+
+
+
+
+
+```bash
+--rpc-ws-authentication-credentials-file=/home/me/me_node/auth.toml
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_AUTHENTICATION_CREDENTIALS_FILE=/home/me/me_node/auth.toml
+```
+
+
+
+
+
+```bash
+rpc-ws-authentication-credentials-file="/home/me/me_node/auth.toml"
+```
+
+
+
+
+
+The path to the [credentials file](../../how-to/use-besu-api/authenticate.md#1-create-the-credentials-file) for JSON-RPC API [authentication](../../how-to/use-besu-api/authenticate.md).
+
+### `rpc-ws-authentication-enabled`
+
+
+
+
+
+```bash
+--rpc-ws-authentication-enabled[=]
+```
+
+
+
+
+
+```bash
+--rpc-ws-authentication-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_AUTHENTICATION_ENABLED=true
+```
+
+
+
+
+
+```bash
+rpc-ws-authentication-enabled=true
+```
+
+
+
+
+
+Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the JSON-RPC WebSocket service.
+
+:::note
+
+`wscat` doesn't support headers. [Authentication](../../how-to/use-besu-api/authenticate.md) requires you to pass an authentication token in the request header. To use authentication with WebSockets, you need an app that supports headers.
+
+:::
+
+### `rpc-ws-authentication-jwt-algorithm`
+
+
+
+
+
+```bash
+---rpc-ws-authentication-jwt-algorithm=
+```
+
+
+
+
+
+```bash
+--rpc-ws-authentication-jwt-algorithm=ES256
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_AUTHENTICATION_JWT_ALGORITHM=ES256
+```
+
+
+
+
+
+```bash
+rpc-ws-authentication-jwt-algorithm="ES256"
+```
+
+
+
+
+
+The [JWT key algorithm](../../how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair)
+used to generate the keypair for JSON-RPC WebSocket authentication.
+Possible values are `RS256`, `RS384`, `RS512`, `ES256`, `ES384`, and `ES512`.
+The default is `RS256`.
+
+### `rpc-ws-authentication-jwt-public-key-file`
+
+
+
+
+
+```bash
+--rpc-ws-authentication-jwt-public-key-file=
+```
+
+
+
+
+
+```bash
+--rpc-ws-authentication-jwt-public-key-file=publicKey.pem
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_AUTHENTICATION_JWT_PUBLIC_KEY_FILE="publicKey.pem"
+```
+
+
+
+
+
+```bash
+rpc-ws-authentication-jwt-public-key-file="publicKey.pem"
+```
+
+
+
+
+
+The [JWT provider's public key file] used for JSON-RPC WebSocket authentication with an external JWT.
+
+### `rpc-ws-enabled`
+
+
+
+
+
+```bash
+--rpc-ws-enabled[=]
+```
+
+
+
+
+
+```bash
+--rpc-ws-enabled=true
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_ENABLED=true
+```
+
+
+
+
+
+```bash
+rpc-ws-enabled=true
+```
+
+
+
+
+
+Enables or disables the WebSocket JSON-RPC service. The default is `false`.
+
+### `rpc-ws-host`
+
+
+
+
+
+```bash
+--rpc-ws-host=
+```
+
+
+
+
+
+```bash
+# to listen on all interfaces
+--rpc-ws-host=0.0.0.0
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_HOST=0.0.0.0
+```
+
+
+
+
+
+```bash
+rpc-ws-host="0.0.0.0"
+```
+
+
+
+
+
+The host on which WebSocket JSON-RPC listens.
+The default is `127.0.0.1`.
+
+To allow remote connections, set to `0.0.0.0`
+
+### `rpc-ws-max-active-connections`
+
+
+
+
+
+```bash
+--rpc-ws-max-active-connections=
+```
+
+
+
+
+
+```bash
+--rpc-ws-max-active-connections=100
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_MAX_ACTIVE_CONNECTIONS=100
+```
+
+
+
+
+
+```toml
+rpc-ws-max-active-connections=100
+```
+
+
+
+
+
+The maximum number of WebSocket connections allowed for JSON-RPC. Once this limit is reached, incoming connections are rejected. The default is 80.
+
+### `rpc-ws-max-frame-size`
+
+
+
+
+
+```bash
+--rpc-ws-max-frame-size=
+```
+
+
+
+
+
+```bash
+--rpc-ws-max-frame-size=65536
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_MAX_FRAME_SIZE=65536
+```
+
+
+
+
+
+```toml
+rpc-ws-max-frame-size=65536
+```
+
+
+
+
+
+The maximum size in bytes for JSON-RPC WebSocket frames. If this limit is exceeded, the WebSocket disconnects. The default is 1048576 (or 1 MB).
+
+### `rpc-ws-port`
+
+
+
+
+
+```bash
+--rpc-ws-port=
+```
+
+
+
+
+
+```bash
+# to listen on port 6174
+--rpc-ws-port=6174
+```
+
+
+
+
+
+```bash
+BESU_RPC_WS_PORT=6174
+```
+
+
+
+
+
+```bash
+rpc-ws-port="6174"
+```
+
+
+
+
+
+The port (TCP) on which WebSocket JSON-RPC listens. The default is `8546`. You must [expose ports appropriately](../../how-to/connect/configure-ports.md).
+
+### `security-module`
+
+
+
+
+
+```bash
+--security-module=
+```
+
+
+
+
+
+```bash
+--security-module=security_module
+```
+
+
+
+
+
+```bash
+BESU_SECURITY_MODULE=security_module
+```
+
+
+
+
+
+```bash
+security-module="security_module"
+```
+
+
+
+
+
+Name of the security module plugin to use. For example, a Hardware Security Module (HSM) or V3 filestore plugin.
+
+The default is the node's local private key file specified using [`--node-private-key-file`](#node-private-key-file).
+
+### `static-nodes-file`
+
+
+
+
+
+```bash
+--static-nodes-file=
+```
+
+
+
+
+
+```bash
+--static-nodes-file=~/besudata/static-nodes.json
+```
+
+
+
+
+
+```bash
+BESU_STATIC_NODES_FILE=~/besudata/static-nodes.json
+```
+
+
+
+
+
+```bash
+static-nodes-file="~/besudata/static-nodes.json"
+```
+
+
+
+
+
+Static nodes JSON file containing the [static nodes](../../how-to/connect/static-nodes.md) for this node to connect to. The default is `datapath/static-nodes.json`.
+
+### `strict-tx-replay-protection-enabled`
+
+
+
+
+
+```bash
+--strict-tx-replay-protection-enabled[=]
+```
+
+
+
+
+
+```bash
+--strict-tx-replay-protection-enabled=false
+```
+
+
+
+
+
+```bash
+STRICT_TX_REPLAY_PROTECTION_ENABLED=false
+```
+
+
+
+
+
+```bash
+strict-tx-replay-protection-enabled=false
+```
+
+
+
+
+
+Enables or disables replay protection, in accordance with [EIP-155](https://eips.ethereum.org/EIPS/eip-155), on transactions submitted using JSON-RPC. The default is `false`.
+
+### `sync-min-peers`, `fast-sync-min-peers`
+
+
+
+
+
+```bash
+--sync-min-peers=
+```
+
+
+
+
+
+```bash
+--sync-min-peers=8
+```
+
+
+
+
+
+```bash
+BESU_SYNC_MIN_PEERS=8
+```
+
+
+
+
+
+```bash
+sync-min-peers=8
+```
+
+
+
+
+
+The minimum number of peers required before starting [sync](../../get-started/connect/sync-node.md). The default is `5`. Set to `1` to enable static peers to contribute to the initial sync.
+
+:::info
+
+This option does not apply to Proof of Stake networks.
+
+:::
+
+### `sync-mode`
+
+
+
+
+
+```bash
+--sync-mode=
+```
+
+
+
+
+
+```bash
+--sync-mode=SNAP
+```
+
+
+
+
+
+```bash
+BESU_SYNC_MODE=SNAP
+```
+
+
+
+
+
+```bash
+sync-mode="SNAP"
+```
+
+
+
+
+
+The synchronization mode. Use `SNAP` for [snap sync](../../get-started/connect/sync-node.md#snap-synchronization), `CHECKPOINT` for [checkpoint sync](../../get-started/connect/sync-node.md#checkpoint-synchronization), `FAST` for [fast sync](../../get-started/connect/sync-node.md#fast-synchronization), and `FULL` for [full sync](../../get-started/connect/sync-node.md#run-an-archive-node).
+
+- The default is `FULL` when connecting to a private network by not using the [`--network`](#network) option and specifying the [`--genesis-file`](#genesis-file) option.
+- The default is `SNAP` when using the [`--network`](#network) option with named networks, except for the `dev` development network. `SNAP` is also the default if running Besu on the default network (Ethereum Mainnet) by specifying neither [network](#network) nor [genesis file](#genesis-file).
+
+:::note Sync nodes for BFT
+
+If you're running a node on a [QBFT](../../../private-networks/how-to/configure/consensus/qbft.md) or [IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md) network, your node must use fast sync or full sync.
+
+:::
+
+:::tip
+
+- We recommend using snap sync over fast sync because snap sync can be faster by several days.
+- It might become impossible to sync Ethereum Mainnet using fast sync in the future, as clients drop support for fast sync. We recommend you update Besu to a version that supports newer sync methods.
+- When synchronizing in a mode other than `FULL`, most historical world state data is unavailable. Any methods attempting to access unavailable world state data return `null`.
+
+:::
+
+### `target-gas-limit`
+
+
+
+
+
+```bash
+--target-gas-limit=
+```
+
+
+
+
+
+```bash
+--target-gas-limit=8000000
+```
+
+
+
+
+
+```bash
+BESU_TARGET_GAS_LIMIT=8000000
+```
+
+
+
+
+
+```bash
+target-gas-limit="8000000"
+```
+
+
+
+
+
+The gas limit toward which Besu will gradually move on an existing network, if enough miners are in agreement. To change the block gas limit set in the genesis file without creating a new network, use `target-gas-limit`. The gas limit between blocks can change only 1/1024th, so the target tells the block creator how to set the gas limit in its block. If the values are the same or within 1/1024th, Besu sets the limit to the specified value. Otherwise, the limit moves as far as it can within that constraint.
+
+If a value for `target-gas-limit` is not specified, the block gas limit remains at the value specified in the [genesis file](../genesis-items.md#genesis-block-parameters).
+
+Use the [`miner_changeTargetGasLimit`](../api/index.md#miner_changetargetgaslimit) API to update the `target-gas-limit` while Besu is running. Alternatively restart Besu with an updated `target-gas-limit` value.
+
+### `tx-pool`
+
+
+
+
+
+```bash
+--tx-pool=
+```
+
+
+
+
+
+```bash
+--tx-pool=sequenced
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL=sequenced
+```
+
+
+
+
+
+```bash
+tx-pool="sequenced"
+```
+
+
+
+
+
+Type of [transaction pool](../../concepts/transactions/pool.md) to use.
+Set to `layered` to use the layered transaction pool implementation.
+Set to `sequenced` (previously known as `legacy`) to opt out of the layered transaction pool.
+The default is `layered`.
+
+### `tx-pool-enable-save-restore`
+
+
+
+
+
+```bash
+--tx-pool-enable-save-restore[=]
+```
+
+
+
+
+
+```bash
+--tx-pool-enable-save-restore=true
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_ENABLE_SAVE_RESTORE=true
+```
+
+
+
+
+
+```bash
+tx-pool-enable-save-restore=true
+```
+
+
+
+
+
+Enables or disables saving the [transaction pool](../../concepts/transactions/pool.md) contents to a
+file on shutdown and reloading it at startup.
+The default is `false`.
+
+You can define a custom path to the transaction pool file using the [`--tx-pool-save-file`](#tx-pool-save-file) option.
+
+### `tx-pool-layer-max-capacity`
+
+
+
+
+
+```bash
+--tx-pool-layer-max-capacity=
+```
+
+
+
+
+
+```bash
+--tx-pool-layer-max-capacity=20000000
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_LAYER_MAX_CAPACITY=20000000
+```
+
+
+
+
+
+```bash
+tx-pool-layer-max-capacity="20000000"
+```
+
+
+
+
+
+Maximum amount of memory (in bytes) that any layer within the [layered transaction
+pool](../../concepts/transactions/pool#layered-transaction-pool) can occupy.
+The default is `12500000`, or 12.5 MB.
+
+There are two memory-limited layers in the transaction pool, so the expected memory consumption is
+twice the value specified by this option, or 25 MB by default.
+Increase this value if you have spare RAM and the eviction rate is high for your network.
+
+### `tx-pool-limit-by-account-percentage`
+
+
+
+
+
+```bash
+--tx-pool-limit-by-account-percentage=
+```
+
+
+
+
+
+```bash
+--tx-pool-limit-by-account-percentage=0.1
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_LIMIT_BY_ACCOUNT_PERCENTAGE=0.1
+```
+
+
+
+
+
+```bash
+tx-pool-limit-by-account-percentage=0.4
+```
+
+
+
+
+
+The maximum percentage of transactions from a single sender kept in the [transaction pool](../../concepts/transactions/pool.md).
+Accepted values are in the range `(0–1]`.
+The default is `.001`, or 0.1% of transactions from a single sender to be kept in the pool.
+
+:::caution
+- With the [layered transaction pool](../../concepts/transactions/pool#layered-transaction-pool)
+ implementation, this option is not applicable.
+ Replace this option with [`--tx-pool-max-future-by-sender`](#tx-pool-max-future-by-sender) to
+ specify the maximum number of sequential transactions from a single sender kept in the pool.
+
+- The default value is often unsuitable for [private networks](../../../private-networks/index.md).
+ This feature mitigates future-nonce transactions from filling the pool without ever being
+ executable by Besu.
+ This is important for Mainnet, but may cause issues on private networks.
+ Please update this value or set to `1` if you know the nodes gossiping transactions in your network.
+:::
+
+### `tx-pool-max-future-by-sender`
+
+
+
+
+
+```bash
+--tx-pool-max-future-by-sender=
+```
+
+
+
+
+
+```bash
+--tx-pool-max-future-by-sender=250
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_MAX_FUTURE_BY_SENDER=250
+```
+
+
+
+
+
+```bash
+tx-pool-max-future-by-sender="250"
+```
+
+
+
+
+
+The maximum number of sequential transactions from a single sender kept in the
+[layered transaction pool](../../concepts/transactions/pool#layered-transaction-pool).
+The default is `200`.
+
+Increase this value to allow a single sender to fit more transactions in a single block.
+For private networks, you can set this in the hundreds or thousands if you want to ensure
+transactions with large nonce gaps remain in the transaction pool.
+
+### `tx-pool-max-prioritized`
+
+
+
+
+
+```bash
+--tx-pool-max-prioritized=
+```
+
+
+
+
+
+```bash
+--tx-pool-max-prioritized=1500
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_MAX_PRIORITIZED=1500
+```
+
+
+
+
+
+```bash
+tx-pool-max-prioritized="1500"
+```
+
+
+
+
+
+The maximum number of transactions that are prioritized in the
+[layered transaction pool](../../concepts/transactions/pool#layered-transaction-pool).
+The default is `2000`.
+
+For private networks, we recommend setting this value to the maximum number of transactions that fit
+in a block in your network.
+
+### `tx-pool-max-size`
+
+
+
+
+
+```bash
+--tx-pool-max-size=
+```
+
+
+
+
+
+```bash
+--tx-pool-max-size=2000
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_MAX_SIZE=2000
+```
+
+
+
+
+
+```bash
+tx-pool-max-size="2000"
+```
+
+
+
+
+
+The maximum number of transactions kept in the [transaction pool](../../concepts/transactions/pool.md).
+The default is `4096`.
+
+:::caution
+With the [layered transaction pool](../../concepts/transactions/pool#layered-transaction-pool)
+implementation, this option is not applicable because the layered pool is limited by memory size
+instead of the number of transactions.
+To configure the maximum memory capacity, use [`--tx-pool-layer-max-capacity`](#tx-pool-layer-max-capacity).
+:::
+
+### `tx-pool-min-gas-price`
+
+
+
+
+
+```bash
+--tx-pool-min-gas-price=
+```
+
+
+
+
+
+```bash
+--tx-pool-min-gas-price=2000
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_MIN_GAS_PRICE=2000
+```
+
+
+
+
+
+```bash
+tx-pool-min-gas-price="2000"
+```
+
+
+
+
+
+The minimum gas price, in wei, required for a transaction to be accepted into the [transaction pool](../../concepts/transactions/pool.md).
+
+
+### `tx-pool-no-local-priority`
+
+
+
+
+
+```bash
+--tx-pool-no-local-priority[=]
+```
+
+
+
+
+
+```bash
+--tx-pool-no-local-priority=true
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_NO_LOCAL_PRIORITY=true
+```
+
+
+
+
+
+```bash
+tx-pool-no-local-priority=true
+```
+
+
+
+
+
+If this option is set to `true`, senders of transactions submitted via RPC are *not* prioritized over
+remote transactions in the [transaction pool](../../concepts/transactions/pool.md).
+The default is `false`.
+
+### `tx-pool-price-bump`
+
+
+
+
+
+```bash
+--tx-pool-price-bump=
+```
+
+
+
+
+
+```bash
+--tx-pool-price-bump=25
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_PRICE_BUMP=25
+```
+
+
+
+
+
+```bash
+tx-pool-price-bump=25
+```
+
+
+
+
+
+The price bump percentage to [replace an existing transaction in the transaction
+pool](../../concepts/transactions/pool#replacing-transactions-with-the-same-sender-and-nonce).
+For networks with a [base fee and priced gas](../../concepts/transactions/pool.md#in-networks-with-a-base-fee-and-priced-gas), the default is `10`, or 10%.
+For networks with [zero base fee, or free gas](../../concepts/transactions/pool.md#in-networks-with-zero-base-base-or-free-gas), the default is `0`.
+
+### `tx-pool-priority-senders`
+
+
+
+
+
+```bash
+--tx-pool-priority-senders=[,,...]
+```
+
+
+
+
+
+```bash
+--tx-pool-priority-senders=0x13003d886a7be927d9451c27eb3bc8d3616e26e9
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_PRIORITY_SENDERS=0x13003d886a7be927d9451c27eb3bc8d3616e26e9
+```
+
+
+
+
+
+```bash
+tx-pool-priority-senders="0x13003d886a7be927d9451c27eb3bc8d3616e26e9"
+```
+
+
+
+
+
+A comma-separated list of sender addresses to prioritize in the [transaction pool](../../concepts/transactions/pool.md).
+Transactions sent from these addresses, from any source, are prioritized and only evicted after all others.
+If not specified, only senders submitting transactions via RPC have priority (unless
+[`--tx-pool-no-local-priority`](#tx-pool-no-local-priority) is set to `true`).
+
+### `tx-pool-retention-hours`
+
+
+
+
+
+```bash
+--tx-pool-retention-hours=
+```
+
+
+
+
+
+```bash
+--tx-pool-retention-hours=5
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_RETENTION_HOURS=5
+```
+
+
+
+
+
+```bash
+tx-pool-retention-hours=5
+```
+
+
+
+
+
+The maximum period (in hours) to hold pending transactions in the [transaction pool](../../concepts/transactions/pool.md).
+The default is `13`.
+
+:::caution
+With the [layered transaction pool](../../concepts/transactions/pool#layered-transaction-pool)
+implementation, this option is not applicable because old transactions will expire when the memory
+cache is full.
+:::
+
+### `tx-pool-save-file`
+
+
+
+
+
+```bash
+--tx-pool-save-file=
+```
+
+
+
+
+
+```bash
+--tx-pool-save-file=/home/me/me_node/node_txpool.dump
+```
+
+
+
+
+
+```bash
+BESU_TX_POOL_SAVE_FILE=/home/me/me_node/node_txpool.dump
+```
+
+
+
+
+
+```bash
+tx-pool-save-file="/home/me/me_node/node_txpool.dump"
+```
+
+
+
+
+
+The path to the file that stores the [transaction pool's](../../concepts/transactions/pool.md)
+content if the save and restore functionality is enabled using
+[`--tx-pool-enable-save-restore`](#tx-pool-enable-save-restore).
+The file is created on shutdown and reloaded during startup.
+The default file name is `txpool.dump` in the [data directory](#data-path).
+
+### `version`
+
+
+
+
+
+```bash
+-V, --version
+```
+
+
+
+
+
+Prints version information and exits.
+
+### `version-compatibility-protection`
+
+
+
+
+```bash
+--version-compatibility-protection[=]
+```
+
+
+
+
+```bash
+--version-compatibility-protection=true
+```
+
+
+
+
+```bash
+BESU_VERSION_COMPATIBILITY_PROTECTION=true
+```
+
+
+
+
+```bash
+version-compatibility-protection=true
+```
+
+
+
+
+Enables or disables performing version compatibility checks when starting Besu.
+If set to `true`, it checks that the version of Besu being started is the same
+or later than the version of Besu that previously started with the same data directory.
+
+The default is `false` for named networks, such as Mainnet or Goerli, and `true`
+for non-named networks.
+
+### `Xhelp`
+
+
+
+
+
+```bash
+-X, --Xhelp
+```
+
+
+
+
+
+Displays the early access options and their descriptions, and exits.
+
+:::caution
+
+The displayed options are unstable and may change between releases.
+
+:::
+
+
+
+[push gateway integration]: ../../how-to/monitor/metrics.md#run-prometheus-with-besu-in-push-mode
+[JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/cli/subcommands.md b/versioned_docs/version-24.5.0/public-networks/reference/cli/subcommands.md
new file mode 100644
index 00000000000..d22d9150520
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/cli/subcommands.md
@@ -0,0 +1,351 @@
+---
+title: Subcommands
+description: Hyperledger Besu command line interface subcommands
+sidebar_position: 2
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Subcommands
+
+This reference describes the syntax of the Hyperledger Besu command line interface (CLI) subcommands.
+
+:::note
+
+This reference contains subcommands that apply to both public and private networks. For private-network-specific subcommands, see the [private network subcommands reference](../../../private-networks/reference/cli/subcommands.md).
+
+:::
+
+To start a Besu node using subcommands, run:
+
+```bash
+besu [OPTIONS] [SUBCOMMAND] [SUBCOMMAND OPTIONS]
+```
+
+If using Bash or Z shell, you can view subcommand suggestions by pressing the Tab key twice.
+
+```bash
+besu Tab+Tab
+```
+
+## `blocks`
+
+Provides blocks related actions.
+
+### `import`
+
+
+
+
+
+```bash
+besu blocks import [--skip-pow-validation-enabled] [--start-block=] [--end-block=] --from=
+```
+
+
+
+
+
+```bash
+besu blocks import --skip-pow-validation-enabled --start-block=100 --end-block=300 --from=/home/me/me_project/mainnet-export1.blocks --from=/home/me/me_project/mainnet-export2.blocks
+```
+
+
+
+
+
+Imports a block or range of blocks from the specified file into the blockchain database.
+
+You can specify the starting index of the block range to import with `--start-block`. If omitted, the default start block is 0 (the beginning of the chain).
+
+You can specify the ending index (exclusive) of the block range to import with `--end-block`. If omitted, all blocks after the start block are imported.
+
+You can specify multiple `--from` arguments. This can be useful when blocks have been exported over time to multiple files. If multiple files are provided they are read in the order specified in the command.
+
+Including `--skip-pow-validation-enabled` skips validation of the `mixHash` when importing blocks.
+
+:::note
+
+Use `--skip-pow-validation-enabled` when performing [Ethereum Foundation hive testing](https://github.com/ethereum/hive).
+
+:::
+
+### `export`
+
+
+
+
+
+```bash
+besu blocks export [--start-block=] [--end-block=] --to=
+```
+
+
+
+
+
+```bash
+besu --network=goerli --data-path=/home/data/ blocks export --start-block=100 --end-block=300 --to=/home/exportblock.bin
+```
+
+
+
+
+
+Exports a block or range of blocks from storage to a file in RLP format.
+
+If you omit `--start-block`, the default start block is 0 (the beginning of the chain), and if you omit `--end-block`, the default end block is the current chain head.
+
+If you are not running the command against the default network (Mainnet), specify the `--network` or `--genesis-file` parameter.
+
+## `operator`
+
+Provides operator actions.
+
+### `generate-log-bloom-cache`
+
+
+
+
+
+```bash
+besu operator generate-log-bloom-cache [--start-block=] [--end-block=]
+```
+
+
+
+
+
+```bash
+besu --network=goerli --data-path=/project/goerli operator generate-log-bloom-cache --start-block=0 --end-block=100000
+```
+
+
+
+
+
+:::tip
+
+Manually executing `generate-log-bloom-cache` is not required unless you set the [`--auto-log-bloom-caching-enabled`](options.md#auto-log-bloom-caching-enabled) command line option to false.
+
+:::
+
+Generates cached log bloom indexes for blocks. APIs use the cached indexes for improved log query performance.
+
+:::note
+
+Each index file contains 100000 blocks. The last fragment of blocks less that 100000 are not indexed.
+
+:::
+
+To generate cached log bloom indexes while the node is running, use the [`admin_generateLogBloomCache`](../api/index.md#admin_generatelogbloomcache) API.
+
+## `password`
+
+Provides password related actions.
+
+### `hash`
+
+
+
+
+
+```bash
+besu password hash --password=
+```
+
+
+
+
+
+```bash
+besu password hash --password=myPassword123
+```
+
+
+
+
+
+Generates the hash of a given password. Include the hash in the [credentials file](../../how-to/use-besu-api/authenticate.md#credentials-file) for JSON-RPC API [authentication](../../how-to/use-besu-api/authenticate.md).
+
+## `public-key`
+
+Provides node public key related actions.
+
+:::caution
+
+To get the public key or address of a node, ensure you use the [`--data-path`](options.md#data-path) or [`--node-private-key-file`](options.md#node-private-key-file) option with the `public-key` command. Otherwise, a new [node key](../../concepts/node-keys.md) is silently generated when starting Besu.
+
+:::
+
+### `export`
+
+
+
+
+
+```bash
+besu public-key export [--node-private-key-file=] [--to=] [--ec-curve=]
+```
+
+
+
+
+
+```bash
+besu --data-path= public-key export --node-private-key-file=/home/me/me_node/myPrivateKey --ec-curve=secp256k1
+```
+
+
+
+
+
+```bash
+besu --data-path= public-key export --node-private-key-file=/home/me/me_node/myPrivateKey --to=/home/me/me_project/not_precious_pub_key --ec-curve=secp256k1
+```
+
+
+
+
+
+Outputs the node public key to standard output or to the file specified by `--to=`. You can output the public key associated with a specific private key file using the [`--node-private-key-file`](options.md#node-private-key-file) option. The default elliptic curve used for the key is `secp256k1`. Use the `--ec-curve` option to choose between `secp256k1` or `secp256r1`.
+
+### `export-address`
+
+
+
+
+
+```bash
+besu public-key export-address [--node-private-key-file=] [--to=] [--ec-curve=]
+```
+
+
+
+
+
+```bash
+besu --data-path= public-key export-address --node-private-key-file=/home/me/me_node/myPrivateKey --ec-curve=secp256k1
+```
+
+
+
+
+
+```bash
+besu --data-path= public-key export-address --node-private-key-file=/home/me/me_node/myPrivateKey --to=/home/me/me_project/me_node_address --ec-curve=secp256k1
+```
+
+
+
+
+
+Outputs the node address to standard output or to the file specified by `--to=`. You can output the address associated with a specific private key file using the [`--node-private-key-file`](options.md#node-private-key-file) option. The default elliptic curve used for the key is `secp256k1`. Use the `--ec-curve` option to choose between `secp256k1` or `secp256r1`.
+
+## `retesteth`
+
+
+
+
+
+```bash
+besu retesteth [--data-path=] [--rpc-http-host=] [--rpc-http-port=] [-l=] [--host-allowlist=[,…]… or * or all]
+```
+
+
+
+
+
+```bash
+besu retesteth --data-path=/home/me/me_node --rpc-http-port=8590 --host-allowlist=*
+```
+
+
+
+
+
+Runs a Retesteth-compatible server. [Retesteth](https://github.com/ethereum/retesteth/wiki) is a developer tool that can generate and run consensus tests against any Ethereum client running such a server.
+
+The command accepts the following command line options:
+
+- [`--data-path`](options.md#data-path)
+- [`--host-allowlist`](options.md#host-allowlist)
+- [`--rpc-http-host`](options.md#rpc-http-host)
+- [`--rpc-http-port`](options.md#rpc-http-port)
+- [`--logging`](options.md#logging)
+
+## `storage`
+
+Provides storage related actions.
+
+### `revert-metadata`
+
+
+
+
+
+```bash
+besu storage revert-metadata v2-to-v1
+```
+
+
+
+
+
+Reverts the modifications made by the [database metadata refactor](https://github.com/hyperledger/besu/pull/6555).
+If you need to downgrade Besu, run this subcommand before installing the previous binaries.
+
+### `revert-variables`
+
+
+
+
+
+```bash
+besu storage revert-variables --config-file
+```
+
+
+
+
+
+```bash
+besu storage revert-variables --config-file ../besu-local-nodes/config/besu/besu1.conf
+```
+
+
+
+
+
+Reverts the modifications made by the [variables storage feature](https://github.com/hyperledger/besu/pull/5471).
+If you need to downgrade Besu, first run this subcommand specifying the path to
+the [configuration file](../../how-to/use-configuration-file/index.md) normally used to
+start Besu.
+
+## `validate-config`
+
+
+
+
+
+```bash
+besu validate-config --config-file
+```
+
+
+
+
+
+```bash
+besu validate-config --config-file ../besu-local-nodes/config/besu/besu1.conf
+```
+
+
+
+
+
+Performs basic syntax validation of the specified [configuration file](../../how-to/use-configuration-file/index.md). Checks TOML syntax (for example, valid format and unmatched quotes) and flags unknown options. Doesn't check data types, and doesn't check dependencies between options (this is done at Besu startup).
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/disclosure.md b/versioned_docs/version-24.5.0/public-networks/reference/disclosure.md
new file mode 100644
index 00000000000..3182278df61
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/disclosure.md
@@ -0,0 +1,14 @@
+---
+title: Security disclosure policy
+sidebar_position: 8
+description: Hyperledger Besu responsible disclosure statement
+tags:
+ - public networks
+ - private networks
+---
+
+# Security disclosure policy
+
+At Hyperledger Besu, security is a priority. But regardless of how much effort we put into system security, there might still be vulnerabilities present. If you discover a vulnerability, we need to know about it so we can take steps to address it as quickly as possible. We would like you to help us better protect our clients and our systems.
+
+Please follow the process explained on [Hyperledger defect response wiki page](https://wiki.hyperledger.org/display/SEC/Defect+Response).
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/engine-api/_category_.json b/versioned_docs/version-24.5.0/public-networks/reference/engine-api/_category_.json
new file mode 100644
index 00000000000..0ea3b53ab2e
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/engine-api/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Engine API",
+ "position": 3
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/engine-api/index.md b/versioned_docs/version-24.5.0/public-networks/reference/engine-api/index.md
new file mode 100644
index 00000000000..9b8db91b651
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/engine-api/index.md
@@ -0,0 +1,532 @@
+---
+title: Engine API
+description: Engine API methods reference
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Engine API methods
+
+[Consensus and execution clients](../../concepts/the-merge.md#execution-and-consensus-clients) communicate with each other using the Engine API. When running Besu as an execution client, [use these API calls](../../how-to/use-engine-api.md) to communicate with a consensus client.
+
+:::info
+
+The engine API is enabled by default.
+
+:::
+
+See the [Ethereum Engine API specification](https://github.com/ethereum/execution-apis/blob/0b965fb714ccd3faa3c939fdce1726e56679cdec/src/engine/specification.md) for more information. Not all changes to the Engine API are documented on this page.
+
+## Methods
+
+### `engine_exchangeCapabilities`
+
+Exchanges a list of supported Engine API methods between the consensus client and Besu.
+
+#### Parameters
+
+`remoteCapabilities`: _array_ of _strings_ - Engine API method names that the consensus client supports
+
+#### Returns
+
+`localCapabilities`: _array_ of _strings_ - Engine API method names that Besu supports
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_exchangeCapabilities","params":[["engine_exchangeTransitionConfigurationV1","engine_forkchoiceUpdatedV1","engine_getPayloadBodiesByHash","engine_getPayloadBodiesByRangeV1","engine_getPayloadV1","engine_newPayloadV1"]],"id":67}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "engine_exchangeCapabilities",
+ "params": [
+ [
+ "engine_exchangeTransitionConfigurationV1",
+ "engine_forkchoiceUpdatedV1",
+ "engine_getPayloadBodiesByHash",
+ "engine_getPayloadBodiesByRangeV1",
+ "engine_getPayloadV1",
+ "engine_newPayloadV1"
+ ]
+ ],
+ "id": 67
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": [
+ "engine_getPayloadV1",
+ "engine_getPayloadV2",
+ "engine_executePayloadV1",
+ "engine_newPayloadV1",
+ "engine_newPayloadV2",
+ "engine_forkchoiceUpdatedV1",
+ "engine_forkchoiceUpdatedV2",
+ "engine_exchangeTransitionConfigurationV1",
+ "engine_getPayloadBodiesByHashV1",
+ "engine_getPayloadBodiesByRangeV1"
+ ]
+}
+```
+
+
+
+
+
+### `engine_exchangeTransitionConfigurationV1`
+
+Sends the transition configuration to the consensus client to verify the configuration between both clients.
+
+:::note
+
+The execution client runs this call every 60 seconds in the background. The log displays a warning message if the call hasn't been sent in 120 seconds.
+
+:::
+
+#### Parameters
+
+`transitionConfiguration`: _object_ - [Transition configuration object](objects.md#transition-configuration-object)
+
+#### Returns
+
+`transitionConfiguration`: _object_ - [Transition configuration object](objects.md#transition-configuration-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_exchangeTransitionConfigurationV1","params":[{"terminalTotalDifficulty": 0, "terminalBlockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "terminalBlockNumber": "0x1"}],"id":67}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "engine_exchangeTransitionConfigurationV1",
+ "params": [
+ {
+ "terminalTotalDifficulty": 0,
+ "terminalBlockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "terminalBlockNumber": "0x1"
+ }
+ ],
+ "id": 67
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": {
+ "terminalTotalDifficulty": 0,
+ "terminalBlockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "terminalBlockNumber": "0x1"
+ }
+}
+```
+
+
+
+
+
+### `engine_forkchoiceUpdatedV1`
+
+Updates the fork choice with the consensus client.
+
+#### Parameters
+
+- `forkchoiceState`: _object_ - [Fork choice state object](objects.md#fork-choice-state-object)
+
+- `payloadAttributes`: _object_ - [Payload attribute object](objects.md#payload-attributes-object). Can be `null`.
+
+#### Returns
+
+- `payloadStatus`: _object_ - [Payload status object](objects.md#payload-status-object)
+
+- `payloadId`: _data_ - identifier of the payload build process or `null`
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_forkchoiceUpdatedV1","params":[{"headBlockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858", "safeBlockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858", "finalizedBlockHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a"},null],"id":67}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "engine_forkchoiceUpdatedV1",
+ "params": [
+ {
+ "headBlockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "safeBlockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "finalizedBlockHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a"
+ },
+ null
+ ],
+ "id": 67
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": {
+ "payloadStatus": {
+ "status": "VALID",
+ "latestValidHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "validationError": null
+ },
+ "payloadId": null
+ }
+}
+```
+
+
+
+
+
+### `engine_getPayloadBodiesByHashV1`
+
+Returns the bodies of the execution payloads corresponding to the specified block hashes.
+
+#### Parameters
+
+`blockHashes`: **array** of **strings** - Block hashes
+
+#### Returns
+
+`engineGetPayloadBodiesResultV1`: **array** of **objects** - Execution payload body objects
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_getPayloadBodiesByHashV1","params":[["0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c","0xfe88c94d860f01a17f961bf4bdfb6e0c6cd10d3fda5cc861e805ca1240c58553"]],"id":1}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "engine_getPayloadBodiesByHashV1",
+ "params": [
+ [
+ "0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c",
+ "0xfe88c94d860f01a17f961bf4bdfb6e0c6cd10d3fda5cc861e805ca1240c58553"
+ ]
+ ],
+ "id": 67
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": [{
+ "transactions": ["0xf865808506fc23ac00830124f8940101010101010101010101010101010101010101018031a02c4d88bfdc2f6dbf82c33d235c4e785e9fc23b2d0fc7b9d20fc5e9674f1f9d15a016d6d69b925cf26128683ab4a096e196fbb1142d6c6d4e8d3481b9bef1bd0f65", "0x02f86c0701843b9aca008506fc23ac00830124f89402020202020202020202020202020202020202020180c080a039409b4e5603dd8c3cf38232348661a8e99ac518396eeaa128ec9ec2a3eb8127a06b21ab956f5f138cb44fda1a9055bd08980ea4f8040d877c00dac025608d0d95", ...],
+ "withdrawals": [{
+ "index" : "0xf0",
+ "validatorIndex" : "0xf0",
+ "address" : "0x00000000000000000000000000000000000010f0",
+ "amount" : "0x1"
+ }, {
+ "index" : "0xf1",
+ "validatorIndex" : "0xf1",
+ "address" : "0x00000000000000000000000000000000000010f1",
+ "amount" : "0x1"
+ }]
+ }, {
+ "transactions": ["0xf865108506fc23ac00830124f8940101010101010101010101010101010101010101018031a0d9712a3c40ae85aea4ad1bd95a0b7cc7bd805189a9e2517403b11a00a1530f81a053b53b0267a6dcfe9f9a1652307b396b3e8a65e65707a450e60c92baefdbcfbe", "0x02f86c0711843b9aca008506fc23ac00830124f89402020202020202020202020202020202020202020180c080a071d36bc93c7ae8cc5c01501e51e5e97a51aa541d1a89c809a2af7eb40e9bc2cba071644230e21c075c1da08916aff5efe9f95a6f6a4f94dc217f6c1bb4a3240b29", ...],
+ "withdrawals": [{
+ "index" : "0xf2",
+ "validatorIndex" : "0xf2",
+ "address" : "0x00000000000000000000000000000000000010f2",
+ "amount" : "0x1"
+ }, {
+ "index" : "0xf3",
+ "validatorIndex" : "0xf3",
+ "address" : "0x00000000000000000000000000000000000010f3",
+ "amount" : "0x1"
+ }]
+ }]
+}
+```
+
+
+
+
+
+### `engine_getPayloadBodiesByRangeV1`
+
+Returns the bodies of the execution payloads corresponding to the specified range of block numbers.
+
+#### Parameters
+
+- `startBlockNumber`: _string_ - Number of the starting block of the range, as a hexadecimal string
+
+- `count`: _string_ - Number of blocks in the range (including the starting block), as a hexadecimal string
+
+#### Returns
+
+`engineGetPayloadBodiesResultV1`: _array_ of _objects_ - Execution payload body objects
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_getPayloadBodiesByRangeV1","params":["0x20", "0x2"],"id":1}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "engine_getPayloadBodiesByRangeV1",
+ "params": ["0x20", "0x2"],
+ "id": 67
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": [{
+ "transactions": ["0xf865808506fc23ac00830124f8940101010101010101010101010101010101010101018031a02c4d88bfdc2f6dbf82c33d235c4e785e9fc23b2d0fc7b9d20fc5e9674f1f9d15a016d6d69b925cf26128683ab4a096e196fbb1142d6c6d4e8d3481b9bef1bd0f65", "0x02f86c0701843b9aca008506fc23ac00830124f89402020202020202020202020202020202020202020180c080a039409b4e5603dd8c3cf38232348661a8e99ac518396eeaa128ec9ec2a3eb8127a06b21ab956f5f138cb44fda1a9055bd08980ea4f8040d877c00dac025608d0d95", ...],
+ "withdrawals": [{
+ "index" : "0xf0",
+ "validatorIndex" : "0xf0",
+ "address" : "0x00000000000000000000000000000000000010f0",
+ "amount" : "0x1"
+ }, {
+ "index" : "0xf1",
+ "validatorIndex" : "0xf1",
+ "address" : "0x00000000000000000000000000000000000010f1",
+ "amount" : "0x1"
+ }]
+ }, {
+ "transactions": ["0xf865108506fc23ac00830124f8940101010101010101010101010101010101010101018031a0d9712a3c40ae85aea4ad1bd95a0b7cc7bd805189a9e2517403b11a00a1530f81a053b53b0267a6dcfe9f9a1652307b396b3e8a65e65707a450e60c92baefdbcfbe", "0x02f86c0711843b9aca008506fc23ac00830124f89402020202020202020202020202020202020202020180c080a071d36bc93c7ae8cc5c01501e51e5e97a51aa541d1a89c809a2af7eb40e9bc2cba071644230e21c075c1da08916aff5efe9f95a6f6a4f94dc217f6c1bb4a3240b29", ...],
+ "withdrawals": [{
+ "index" : "0xf2",
+ "validatorIndex" : "0xf2",
+ "address" : "0x00000000000000000000000000000000000010f2",
+ "amount" : "0x1"
+ }, {
+ "index" : "0xf3",
+ "validatorIndex" : "0xf3",
+ "address" : "0x00000000000000000000000000000000000010f3",
+ "amount" : "0x1"
+ }]
+ }]
+}
+```
+
+
+
+
+
+### `engine_getPayloadV1`
+
+Prepares the payload to send to the consensus client.
+
+#### Parameters
+
+`payloadId`: _data_ - Identifier of the payload build process
+
+#### Returns
+
+`executionPayload`: _object_ - [Execution payload object](objects.md#execution-payload-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_getPayloadV1","params":["0x0000000021f32cc1"],"id":1}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "engine_getPayloadV1",
+ "params": ["0x0000000021f32cc1"],
+ "id": 67
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 67,
+ "result": {
+ "parentHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a",
+ "feeRecipient": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "stateRoot": "0xca3149fa9e37db08d1cd49c9061db1002ef1cd58db2210f2115c8c989b2bdf45",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "prevRandao": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "blockNumber": "0x1",
+ "gasLimit": "0x1c9c380",
+ "gasUsed": "0x0",
+ "timestamp": "0x5",
+ "extraData": "0x",
+ "baseFeePerGas": "0x7",
+ "blockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "transactions": []
+ }
+}
+```
+
+
+
+
+
+### `engine_newPayloadV1`
+
+Executes the payload with the consensus client.
+
+#### Parameters
+
+`executionPayload`: _object_ - [Execution payload object](objects.md#execution-payload-object)
+
+#### Returns
+
+- `payloadStatus`: _object_ - [Payload status object](objects.md#payload-status-object)
+
+
+
+
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"engine_newPayloadV1","params":[
+ {
+ "parentHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a",
+ "feeRecipient": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "stateRoot": "0xca3149fa9e37db08d1cd49c9061db1002ef1cd58db2210f2115c8c989b2bdf45",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "prevRandao": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "blockNumber": "0x1",
+ "gasLimit": "0x1c9c380",
+ "gasUsed": "0x0",
+ "timestamp": "0x5",
+ "extraData": "0x",
+ "baseFeePerGas": "0x7",
+ "blockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "transactions": []
+ }
+],"id":67}' http://127.0.0.1:8550
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "engine_newPayloadV1",
+ "params": [
+ {
+ "parentHash": "0x3b8fb240d288781d4aac94d3fd16809ee413bc99294a085798a589dae51ddd4a",
+ "feeRecipient": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "stateRoot": "0xca3149fa9e37db08d1cd49c9061db1002ef1cd58db2210f2115c8c989b2bdf45",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "prevRandao": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "blockNumber": "0x1",
+ "gasLimit": "0x1c9c380",
+ "gasUsed": "0x0",
+ "timestamp": "0x5",
+ "extraData": "0x",
+ "baseFeePerGas": "0x7",
+ "blockHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "transactions": []
+ }
+ ],
+ "id": 67
+}
+```
+
+
+
+
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "status": "VALID",
+ "latestValidHash": "0x3559e851470f6e7bbed1db474980683e8c315bfce99b2a6ef47c057c04de7858",
+ "validationError": null
+ }
+}
+```
+
+
+
+
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/engine-api/objects.md b/versioned_docs/version-24.5.0/public-networks/reference/engine-api/objects.md
new file mode 100644
index 00000000000..ecd40054d9f
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/engine-api/objects.md
@@ -0,0 +1,71 @@
+---
+title: Objects
+description: Engine API objects reference
+tags:
+ - public networks
+---
+
+# Engine API objects
+
+The following objects are parameters for or returned by the [Engine API methods](index.md).
+
+## Execution payload object
+
+Parameter for [`engine_newPayloadV1`](index.md#engine_newpayloadv1). Returned by [`engine_getPayloadV1`](index.md#engine_getpayloadv1).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `parentHash` | _Data_, 32 Bytes | Hash of the parent block. |
+| `feeRecipient` | _Data_, 20 Bytes | Beneficiary of the fee. |
+| `stateRoot` | _Data_, 32 Bytes | Root of the final state trie for the block. |
+| `receiptsRoot` | _Data_, 32 Bytes | Root of the receipts trie for the block. |
+| `logsBloom` | _Data_, 256 Bytes | Bloom filter for light clients to quickly retrieve related logs. |
+| `prevRandao` | _Data_, 32 Bytes | Difficulty for this block. |
+| `blockNumber` | _Quantity_, 64 Bits | Block number of block containing this transaction. |
+| `gasLimit` | _Quantity_, 64 Bits | Maximum gas allowed in this block. |
+| `gasUsed` | _Quantity_, 64 Bits | Total gas used by all transactions in this block. |
+| `timestamp` | _Quantity_, 64 Bits | Unix timestamp (milliseconds) for block assembly. |
+| `extraData` | _Data_, 0 to 32 Bytes | Extra data field for this block. |
+| `baseFeePerGas` | _Quantity_, 256 Bits | The block's [base fee per gas](../../concepts/transactions/types.md#eip1559-transactions). This field is empty for blocks created before [EIP-1559](https://github.com/ethereum/EIPs/blob/2d8a95e14e56de27c5465d93747b0006bd8ac47f/EIPS/eip-1559.md). |
+| `blockHash` | _Data_, 32 Bytes | Hash of the execution block. |
+| `transactions` | _Array_ | Array of transaction objects, each object is a list representing `TransactionType`, `TransactionPayload`, or `LegacyTransaction` as defined in [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718). |
+
+## Fork choice state object
+
+Parameter for [`engine_forkchoiceUpdatedV1`](index.md#engine_forkchoiceupdatedv1).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `headBlockHash` | _Data_, 32 Bytes | Block hash of the head of the canonical chain. |
+| `safeBlockHash` | _Data_, 32 Bytes | "Safe" block hash of the canonical chain under certain synchrony and honesty assumptions. This value MUST be either equal to or an ancestor of `headBlockHash`. |
+| `finalizedBlockHash` | _Data_, 32 Bytes | Block hash of the most recent finalized block. |
+
+## Payload attributes object
+
+Parameter for [`engine_forkchoiceUpdatedV1`](index.md#engine_forkchoiceupdatedv1).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `timestamp` | _Quantity_, 64 Bits | Value for the `timestamp` field of the new payload. |
+| `prevRandao` | _Data_, 32 Bytes | Value for the `prevRandao` field of the new payload. |
+| `suggestedFeeRecipient` | _Data_, 20 Bytes | Suggested value for the `feeRecipient` field of the new payload. |
+
+## Payload status object
+
+Returned by [`engine_newPayloadV1`](index.md#engine_newpayloadv1) and [`engine_forkchoiceUpdatedV1`](index.md#engine_forkchoiceupdatedv1).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `status` | _Enumeration_ | Either `"VALID"`, `"INVALID"`, `"SYNCING"`, `"ACCEPTED"`, `"INVALID_BLOCK_HASH"`, or `"INVALID_TERMINAL_BLOCK"`. |
+| `latestValidHash` | _Data_, 32 Bytes | Hash of the most recent valid block in the branch defined by payload and its ancestors. |
+| `validationError` | _String_ | Message providing additional details on the validation error if the payload is classified as `INVALID`, `INVALID_BLOCK_HASH` or `INVALID_TERMINAL_BLOCK`. |
+
+## Transition configuration object
+
+Parameter for and returned by [`engine_exchangeTransitionConfigurationV1`](index.md#engine_exchangetransitionconfigurationv1).
+
+| Key | Type | Value |
+| --- | :-: | --- |
+| `terminalTotalDifficulty` | _Quantity_, 256 Bits | Maps on the `TERMINAL_TOTAL_DIFFICULTY` parameter of [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675#client-software-configuration). |
+| `terminalBlockHash` | _Data_, 32 Bytes | Maps on the `TERMINAL_BLOCK_HASH` parameter of [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675#client-software-configuration). |
+| `terminalBlockNumber` | _Quantity_, 64 Bits | Maps on the `TERMINAL_BLOCK_NUMBER` parameter of [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675#client-software-configuration). |
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/evm-tool.md b/versioned_docs/version-24.5.0/public-networks/reference/evm-tool.md
new file mode 100644
index 00000000000..50f10a33ea1
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/evm-tool.md
@@ -0,0 +1,637 @@
+---
+title: EVM tool options
+sidebar_position: 5
+description: Besu EVM tool options reference
+tags:
+ - public networks
+ - private networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# EVM tool reference
+
+This reference describes [options](#options) and [subcommands](#subcommands) for the
+[EVM tool](../how-to/troubleshoot/evm-tool.md).
+
+:::note
+
+Option names that include `trace`, such as [`--trace`](#json-trace) and [`--trace.[no]memory`](#nomemory-tracenomemory) exist to support [`t8ntool`](https://ethereum-tests.readthedocs.io/en/latest/t8ntool.html) reference testing, and are interchangeable with their standard option names.
+
+:::
+
+## Options
+
+### `code`
+
+
+
+
+
+```bash
+--code=
+```
+
+
+
+
+
+```bash
+--code=5B600080808060045AFA50600056
+```
+
+
+
+
+
+The code to be executed, in compiled hex code form. Execution fails if this is not set.
+
+### `gas`
+
+
+
+
+
+```bash
+--gas=
+```
+
+
+
+
+
+```bash
+--gas=100000000
+```
+
+
+
+
+
+Amount of gas to make available to the EVM. The default is 10 billion, a number unlikely to be seen in any production blockchain.
+
+### `price`
+
+
+
+
+
+```bash
+--price=
+```
+
+
+
+
+
+```bash
+--price=10
+```
+
+
+
+
+
+Price of gas in Gwei. The default is `0`. If set to a non-zero value, the sender account must have enough value to cover the gas fees.
+
+### `sender`
+
+
+
+
+
+```bash
+--sender=
+```
+
+
+
+
+
+```bash
+--sender=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73
+```
+
+
+
+
+
+The account the invocation is sent from. The specified account must exist in the world state, which, unless specified by [`--genesis`](#genesis), is the set of [accounts used for testing](../../private-networks/reference/accounts-for-testing.md).
+
+### `receiver`
+
+
+
+
+
+```bash
+--receiver=
+```
+
+
+
+
+
+```bash
+--receiver=0x588108d3eab34e94484d7cda5a1d31804ca96fe7
+```
+
+
+
+
+
+The account the invocation is sent to. The specified account does not need to exist.
+
+### `input`
+
+
+
+
+
+```bash
+--input=
+```
+
+
+
+
+
+```bash
+--input=9064129300000000000000000000000000000000000000000000000000000000
+```
+
+
+
+
+
+The data passed into the call. Corresponds to the `data` field of the transaction and is returned by the `CALLDATA` and related opcodes.
+
+### `value`
+
+
+
+
+
+```bash
+--value=
+```
+
+
+
+
+
+```bash
+--value=1000000000000000000
+```
+
+
+
+
+
+The value, in wei, attached to this transaction. For operations that query the value or transfer it to other accounts this is the amount that is available. The amount is not reduced to cover intrinsic cost and gas fees.
+
+### `json`, `trace`
+
+
+
+
+
+```bash
+--json
+```
+
+
+
+
+
+Provides an operation-by-operation trace of the command in JSON.
+
+`--trace` is an alias for `--json`.
+
+### `json-alloc`
+
+
+
+
+
+```bash
+--json-alloc
+```
+
+
+
+
+
+Outputs a JSON summary of the post-execution world state and allocations.
+
+### `[no]memory`, `trace.[no]memory`
+
+
+
+
+
+```bash
+--nomemory, --memory
+```
+
+
+
+
+
+Setting `--nomemory` disables tracing the memory output for each operation. Setting `--memory` enables it. Memory traces are disabled by default.
+
+For memory heavy scripts, disabling memory traces may reduce the volume of JSON output.
+
+`--trace.[no]memory` is an alias for `--[no]memory`.
+
+### `trace.[no]stack`
+
+
+
+
+
+```bash
+--trace.nostack, --trace.stack
+```
+
+
+
+
+
+Setting `--trace.nostack` disables tracing the operand stack for each operation. Setting `--trace.stack` enables it. Stack traces are enabled by default.
+
+### `trace.[no]returndata`
+
+
+
+
+
+```bash
+--trace.noreturndata, --trace.returndata
+```
+
+
+
+
+
+Setting `--trace.noreturndata` disables tracing the return data for each operation. Setting `--trace.returndata` enables it. Return data traces are enabled by default.
+
+### `[no]time`
+
+
+
+
+
+```bash
+--notime, --time
+```
+
+
+
+
+
+Setting `--notime` disables including time data in the summary output. Setting `--time` enables it.
+
+This is useful for testing and differential evaluations.
+
+### `genesis`
+
+
+
+
+
+```bash
+--genesis=
+```
+
+
+
+
+
+```bash
+--genesis=/opt/besu/genesis.json
+```
+
+
+
+
+
+The [Besu genesis file](genesis-items.md) to use when evaluating the EVM. Most useful are the `alloc` items that set up accounts and their stored memory states.
+
+`--prestate` is a deprecated alias for `--genesis`.
+
+### `chain`
+
+
+
+
+
+```bash
+--chain=
+```
+
+
+
+
+
+```bash
+--chain=goerli
+```
+
+
+
+
+
+The well-known network genesis file to use when evaluating the EVM. These values are an alternative to the [`--genesis`](#genesis) option for well-known networks.
+
+### `repeat`
+
+
+
+
+
+```bash
+--repeat=
+```
+
+
+
+
+
+```bash
+--repeat=1000
+```
+
+
+
+
+
+Number of times to repeat the contract before gathering timing information. This is useful when benchmarking EVM operations. The default is `0`.
+
+### `revert-reason-enabled`
+
+
+
+
+
+```bash
+--revert-reason-enabled
+```
+
+
+
+
+
+Enables tracing the reason included in `REVERT` operations. The revert reason is enabled by default.
+
+### `fork`
+
+
+
+
+
+```bash
+--fork=
+```
+
+
+
+
+
+```bash
+--fork=FutureEips
+```
+
+
+
+
+
+Specific fork to evaluate, overriding network settings.
+
+### `key-value-storage`
+
+
+
+
+
+```bash
+--key-value-storage=
+```
+
+
+
+
+
+```bash
+--key-value-storage=rocksdb
+```
+
+
+
+
+
+Kind of key value storage to use.
+
+It might be useful to execute isolated EVM calls in the context of an actual world state. The default is `memory`, which executes the call only in the context of the world provided by [`--genesis`](#genesis) or [`--chain`](#chain) at block zero.
+
+When set to `rocksdb` and combined with [`--data-path`](#data-path), [`--block-number`](#block-number), and [`--genesis`](#genesis), a Besu node that isn't currently running can be used to provide the appropriate world state for a transaction. This is useful when evaluating consensus failures.
+
+### `data-path`
+
+
+
+
+
+```bash
+--data-path=
+```
+
+
+
+
+
+```bash
+--data-path=/opt/besu/data
+```
+
+
+
+
+
+When [`--key-value-storage`](#key-value-storage) is set to `rocksdb`, specifies the location of the database on disk.
+
+### `block-number`
+
+
+
+
+
+```bash
+--block-number=
+```
+
+
+
+
+
+```bash
+--block-number=10000000
+```
+
+
+
+
+
+The block number to evaluate the code against. Used to ensure that the EVM is evaluating the code against the correct fork, or to specify the world state when [`--key-value-storage`](#key-value-storage) is set to `rocksdb`.
+
+### `version`
+
+
+
+
+
+```bash
+--version
+```
+
+
+
+
+
+Displays the version information.
+
+`-v` is an alias for `--version`.
+
+## Subcommands
+
+:::caution
+The following subcommands are used for testing code bases and not meant for typical user interactions.
+:::
+
+### `code-validate`
+
+
+
+
+
+```bash
+evmtool code-validate --file=
+```
+
+
+
+
+
+```bash
+evmtool code-validate --file=eof.txt
+```
+
+
+
+
+
+Allows [Ethereum object formatted (EOF)](https://eips.ethereum.org/EIPS/eip-3540) code to be validated.
+
+You can specify a file containing one or more EOF containers or EVM bytecode using the `--file` option.
+Each line in the file is considered a separate program.
+
+#### Use command arguments
+
+If you use command arguments, each argument is considered a separate program.
+If a code segment includes spaces, it must be contained in quotes.
+
+
+
+
+
+```bash
+docker run --rm hyperledger/besu-evmtool:develop code-validate "0xef0001 010008 020002-0007-0002 030000 00 00000002-02010002 59-59-b00001-50-b1 03-b1" 0xef0002 0xef00010100040200010001030000000000000000
+```
+
+
+
+
+
+```bash
+evmtool code-validate "0xef0001 010008 020002-0007-0002 030000 00 00000002-02010002 59-59-b00001-50-b1 03-b1" 0xef0002 0xef00010100040200010001030000000000000000
+```
+
+
+
+
+
+#### Use standard input
+
+If no reference tests are passed in using the command line, the EVM tool loads and validates code
+from standard input.
+Each line is considered a separate program.
+Comment lines and blanks are ignored.
+
+### `state-test`
+
+Allows the [Ethereum state tests](https://github.com/ethereum/tests/tree/develop/GeneralStateTests)
+to be evaluated.
+Run `evmtool state-test --help` for the full list of supported options.
+Notable options are [`--json`](#json-trace) and [`--nomemory`](#nomemory-tracenomemory).
+
+Set `--json` for EVM Lab Fuzzing.
+Whether or not `--json` is set, a summary JSON object is printed to standard output for each state
+test executed.
+
+#### Use command arguments
+
+If you use command arguments, you can list one or more state tests.
+All the state tests are evaluated in the order they are specified.
+
+
+
+
+```bash
+docker run --rm -v ${PWD}:/opt/referencetests hyperledger/besu-evmtool:develop --json state-test /opt/referencetests/GeneralStateTests/stExample/add11.json
+```
+
+
+
+
+
+
+```bash
+evmtool --json state-test stExample/add11.json
+```
+
+
+
+
+
+#### Use standard input
+
+If no reference tests are passed in using the command line, the EVM tool loads one complete JSON
+object from standard input and executes that state test.
+
+
+
+
+
+```bash
+docker run --rm -i hyperledger/besu-evmtool:develop --json state-test < stExample/add11.json
+```
+
+
+
+
+
+```bash
+evmtool --json state-test < stExample/add11.json
+```
+
+
+
+
+
+### `transition`, `t8n`, `t8n-server`
+
+Allows the Ethereum state transition and blockchain tests to be evaluated.
+See the [transition tool reference](https://ethereum-tests.readthedocs.io/en/develop/t8ntool-ref.html)
+and [Execution Spec Tests](https://ethereum.github.io/execution-spec-tests/v1.0.6/) for more
+information about this subcommand.
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/genesis-items.md b/versioned_docs/version-24.5.0/public-networks/reference/genesis-items.md
new file mode 100644
index 00000000000..a837fc24a4a
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/genesis-items.md
@@ -0,0 +1,148 @@
+---
+title: Genesis file items
+sidebar_position: 4
+description: Genesis file configuration items reference
+tags:
+ - public networks
+ - private networks
+---
+
+# Genesis file items
+
+The [Besu genesis file](../concepts/genesis-file.md) contains [network configuration items](#configuration-items) and [genesis block parameters](#genesis-block-parameters).
+
+## Configuration items
+
+Network configuration items are specified in the genesis file in the `config` object.
+
+| Item | Description |
+|---------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Milestone blocks | [Milestone blocks for the network](#milestone-blocks). |
+| `chainID` | [Chain ID for the network](../concepts/network-and-chain-id.md). |
+| `ethash` | Specifies network uses [Ethash](../../private-networks/how-to/configure/consensus/index.md) and contains [`fixeddifficulty`](#fixed-difficulty). |
+| `clique` | Specifies network uses [Clique](../../private-networks/how-to/configure/consensus/clique.md) and contains [Clique configuration items](../../private-networks/how-to/configure/consensus/clique.md#genesis-file). |
+| `ibft2` | Specifies network uses [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md) and contains [IBFT 2.0 configuration items](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file). |
+| `qbft` | Specifies network uses [QBFT](../../private-networks/how-to/configure/consensus/qbft.md) and contains [QBFT configuration items](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file). |
+| `transitions` | Specifies block at which to [change IBFT 2.0 or QBFT validators](../../private-networks/how-to/configure/consensus/add-validators-without-voting.md). |
+| `contractSizeLimit` | Maximum contract size in bytes. Specify in [free gas networks](../../private-networks/how-to/configure/free-gas.md). The default is `24576` and the maximum size is `2147483647`. |
+| `evmStackSize` | Maximum stack size. Specify to increase the maximum stack size in private networks with complex smart contracts. The default is `1024`. |
+| `ecCurve` | Specifies [the elliptic curve to use](../../private-networks/how-to/configure/curves.md). Default is `secp256k1`. |
+| `discovery` | Specifies [discovery configuration items](#discovery-configuration-items). The `discovery` object can be left empty. |
+| `zeroBaseFee` | Specifies a base fee of `0` for [free gas networks](../../private-networks/how-to/configure/free-gas.md#4-enable-zero-base-fee-if-using-london-fork-or-later). |
+
+## Genesis block parameters
+
+The purpose of some genesis block parameters varies depending on the consensus protocol (Ethash, [Clique](../../private-networks/how-to/configure/consensus/clique.md), [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md), or [QBFT](../../private-networks/how-to/configure/consensus/qbft.md)). These parameters include:
+
+- `difficulty`.
+- `extraData`.
+- `mixHash`.
+
+The following table describes the genesis block parameters with the same purpose across all consensus protocols.
+
+| Item | Description |
+| --- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `coinbase` | Address to pay mining rewards to. Can be any value in the genesis block (commonly set to `0x0000000000000000000000000000000000000000`). |
+| `gasLimit` | Block gas limit. Total gas limit for all transactions in a block. |
+| `nonce` | Used in block computation. Can be any value in the genesis block (commonly set to `0x0`). |
+| `timestamp` | Creation date and time of the block. Must be before the next block so we recommend specifying `0x0` in the genesis file. |
+| `alloc` | Defines [accounts with balances](../../private-networks/reference/accounts-for-testing.md) or [contracts](../../private-networks/how-to/configure/contracts.md). |
+
+:::caution
+
+If a `Supplied genesis block does not match stored chain data` error occurs, use the genesis file matching the genesis block of the data directory, or use the [`--data-path`](../reference/cli/options.md#data-path) option to specify a different data directory.
+
+:::
+
+## Milestone blocks
+
+In public networks, the milestone blocks specify the blocks at which the network changed protocol. See a [full list of Ethereum protocol releases](https://github.com/ethereum/execution-specs#ethereum-protocol-releases) and their corresponding milestone blocks.
+
+```json title="Ethereum Mainnet milestone blocks"
+{
+ "config": {
+ ...
+ "homesteadBlock": 1150000,
+ "daoForkBlock": 1920000,
+ "daoForkSupport": true,
+ "eip150Block": 2463000,
+ "eip150Hash": "0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0",
+ "eip155Block": 2675000,
+ "eip158Block": 2675000,
+ "byzantiumBlock": 4370000,
+ "constantinopleBlock": 7280000,
+ "constantinopleFixBlock": 7280000,
+ "muirGlacierBlock": 9200000,
+ "berlinBlock": 12244000,
+ "londonBlock": 12965000,
+ "arrowGlacierBlock": 13773000,
+ "grayGlacierBlock": 15050000,
+ ...
+ },
+}
+```
+
+:::caution
+
+Ensure you include a milestone far enough in advance in the genesis file. Not doing so can lead to unexpected and inconsistent behavior without specific errors.
+
+:::
+
+In private networks, the milestone block defines the protocol version for the network.
+
+```json title="Private network milestone block"
+{
+ "config": {
+ ...
+ "berlinBlock": 0,
+ ...
+ },
+}
+```
+
+:::note
+
+In private networks, we recommend specifying the latest milestone block. It's implied this includes the preceding milestones. This ensures you use the most up-to-date protocol and have access to the most recent opcodes.
+
+:::
+
+## Fixed difficulty
+
+Use `fixeddifficulty` to specify a fixed difficulty in private networks using Ethash. This will keep the network's difficulty constant and override the `difficulty` parameter from the genesis file.
+
+```json
+{
+ "config": {
+ ...
+ "ethash": {
+ "fixeddifficulty": 1000
+ },
+
+ },
+ ...
+}
+```
+
+:::tip
+
+Using `fixeddifficulty` is not recommended for use with Ethash outside of test environments. For production networks using Ethash, we recommend setting a low `difficulty` value in the genesis file instead. Ethash will adjust the difficulty of the network based on hashrate to produce blocks at the targeted frequency.
+
+:::
+
+## Discovery configuration items
+
+Use the `discovery` configuration items to specify the [`bootnodes`](cli/options.md#bootnodes) and [`discovery-dns-url`](cli/options.md#discovery-dns-url) in the genesis file, in place of using CLI options or listing them in the configuration file. If either CLI option is used, it takes precedence over the genesis file. Anything listed in the configuration file also takes precedence.
+
+```json
+{
+ "config": {
+ "discovery": {
+ "bootnodes": [
+ "enode://c35c3...d615f@1.2.3.4:30303",
+ "enode://f42c13...fc456@1.2.3.5:30303"
+ ],
+ "dns": "enrtree://AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7BVDQ5FDPRT2@nodes.example.org"
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/projects-using-besu.md b/versioned_docs/version-24.5.0/public-networks/reference/projects-using-besu.md
new file mode 100644
index 00000000000..801ed4448db
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/projects-using-besu.md
@@ -0,0 +1,18 @@
+---
+title: Projects using Besu
+sidebar_position: 7
+description: List of projects using Besu
+tags:
+ - public networks
+ - private networks
+---
+
+# Projects using Besu
+
+## Block explorers
+
+The following block explorers are compatible with Besu:
+
+- [BlockScout](https://github.com/blockscout/blockscout#readme) - See the [project documentation](https://docs.blockscout.com/) for setup instructions.
+
+- [Chainlens Blockchain Explorer](https://www.web3labs.com/chainlens) - See how to [use Chainlens with privacy-enabled networks](../../private-networks/how-to/monitor/chainlens.md).
diff --git a/versioned_docs/version-24.5.0/public-networks/reference/trace-types.md b/versioned_docs/version-24.5.0/public-networks/reference/trace-types.md
new file mode 100644
index 00000000000..2ea2b785ce9
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/reference/trace-types.md
@@ -0,0 +1,160 @@
+---
+title: Transaction trace types
+sidebar_position: 6
+description: Transaction trace types reference
+tags:
+ - public networks
+ - private networks
+---
+
+# Transaction trace types
+
+When [tracing transactions](../how-to/troubleshoot/trace-transactions.md), the trace type options are [`trace`](#trace), [`vmTrace`](#vmtrace), and [`stateDiff`](#statediff).
+
+## `trace`
+
+An ordered list of calls to other contracts, excluding precompiled contracts.
+
+```json title="trace example"
+"trace":[
+ {
+ "action":{
+ "callType":"call",
+ "from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
+ "gas":"0xffadea",
+ "input":"0x",
+ "to":"0x0100000000000000000000000000000000000000",
+ "value":"0x0"
+ },
+ "result":{
+ "gasUsed":"0x1e",
+ "output":"0x"
+ },
+ "subtraces":0,
+ "traceAddress":[
+ ],
+ "type":"call"
+ }
+]
+```
+
+| Key | Value |
+| --- | --- |
+| `action` | Transaction details. |
+| `callType` | Whether the transaction is `call` or `create`. |
+| `from` | Address of the transaction sender. |
+| `gas` | Gas provided by sender. |
+| `input` | Transaction data. |
+| `to` | Target of the transaction. |
+| `value` | Value transferred in the transaction. |
+| `result` | Transaction result. |
+| `gasUsed` | Gas used by the transaction. Includes any refunds of unused gas. |
+| `output` | Return value of the contract call. Contains only the actual value sent by a `RETURN` operation. If a `RETURN` was not executed, the output is empty bytes. |
+| `subTraces` | Traces of contract calls made by the transaction. |
+| `traceAddress` | Tree list address of where the call occurred, address of the parents, and order of the current sub call. |
+| `type` | Whether the transaction is a `CALL` or `CREATE` series operation. |
+
+## `vmTrace`
+
+An ordered list of EVM actions when processing the transaction.
+
+`vmTrace` only reports actual data returned from a `RETURN` opcode and does not return the contents of the reserved output space for the call operations. As a result:
+
+- `vmTrace` reports `null` when a call operation ends because of a `STOP`, `HALT`, `REVERT`, running out of instructions, or any exceptional halts.
+- When a `RETURN` operation returns data of a different length to the space reserved by the call, `vmTrace` reports only the data passed to the `RETURN` operation and does not include pre-existing memory data or trim the returned data.
+
+For out of gas operations, `vmTrace` reports the operation that caused the out of gas exception, including the calculated gas cost. `vmTrace` does not report `ex` values because the operation is not executed.
+
+```json title="vmTrace example"
+"vmTrace":{
+ "code":"0x7f3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b3016000527f14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905601052600851",
+ "ops":[
+ {
+ "cost":3,
+ "ex":{
+ "mem":null,
+ "push":[
+ "0x8"
+ ],
+ "store":null,
+ "used":16756175
+ },
+ "pc":72,
+ "sub":null
+ },
+ ...
+ ]
+}
+```
+
+| Key | Value |
+| --- | --- |
+| `code` | Code executed by the EVM. |
+| `ops` | Sequence of EVM operations (opcodes) executed in the transaction. |
+| `cost` | Gas cost of the opcode. Includes memory expansion costs but not gas refunds. For precompiled contract calls, reports only the actual cost. |
+| `ex` | Executed operations. |
+| `mem` | Memory read or written by the operation. |
+| `push` | Adjusted stack items. For swap, includes all intermediate values and the result. Otherwise, is the value pushed onto the stack. |
+| `store` | Account storage written by the operation. |
+| `used` | Remaining gas taking into account the all but 1/64th rule for calls. |
+| `pc` | Program counter. |
+| `sub` | Sub call operations. |
+
+## `stateDiff`
+
+State changes in the requested block for each transaction represented as a map of accounts to an object. Besu lists the balance, code, nonce, and storage changes from immediately before the transaction to after the transaction. For the `key:value` pairs:
+
+- `+` indicates the field didn’t exist before and now has the specified value
+- `-` indicates a deleted value
+- `*` has a `from` and a `to` value.
+
+An absent value is distinct from zero when creating accounts or clearing storage.
+
+```json title="stateDiff example"
+"stateDiff":{
+ "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73":{
+ "balance":{
+ "*":{
+ "from":"0xffffffffffffffffffffffffffffffffc3e12a20b",
+ "to":"0xffffffffffffffffffffffffffffffffc3dc5f091"
+ }
+ },
+ "code":"=",
+ "nonce":{
+ "*":{
+ "from":"0x14",
+ "to":"0x15"
+ }
+ },
+ "storage":{
+ }
+ }
+}
+```
+
+| Key | Value |
+| -------------- | ----------------------------------------- |
+| `balance` | Change of balance event. |
+| `balance.from` | Balance before the transaction. |
+| `balance.to` | Balance after the transaction. |
+| `code` | Changes to code. None in this example. |
+| `nonce` | Change of nonce. |
+| `nonce.from` | Nonce before the transaction. |
+| `nonce.to` | Nonce after the transaction. |
+| `storage` | Changes to storage. None in this example. |
+
+## Applicable API methods
+
+The trace options `trace`, `vmTrace`, and `stateDiff` are available for the following [ad-hoc tracing API methods](../how-to/troubleshoot/trace-transactions.md#ad-hoc-tracing-apis):
+
+- [`trace_call`](api/index.md#trace_call)
+- [`trace_callMany`](api/index.md#trace_callmany)
+- [`trace_rawTransaction`](api/index.md#trace_rawtransaction)
+- [`trace_replayBlockTransactions`](api/index.md#trace_replayblocktransactions)
+
+Only the `trace` option is available for the following [transaction-trace filtering API methods](../how-to/troubleshoot/trace-transactions.md#transaction-trace-filtering-apis):
+
+- [`trace_block`](api/index.md#trace_block)
+- [`trace_filter`](api/index.md#trace_filter)
+- [`trace_get`](api/index.md#trace_get)
+- [`trace_transaction`](api/index.md#trace_transaction)
diff --git a/versioned_docs/version-24.5.0/public-networks/tutorials/_category_.json b/versioned_docs/version-24.5.0/public-networks/tutorials/_category_.json
new file mode 100644
index 00000000000..f72790313cd
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/tutorials/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Tutorials",
+ "position": 5,
+ "link": {
+ "type": "generated-index",
+ "slug": "public-networks/tutorials"
+ }
+}
diff --git a/versioned_docs/version-24.5.0/public-networks/tutorials/besu-teku-mainnet.md b/versioned_docs/version-24.5.0/public-networks/tutorials/besu-teku-mainnet.md
new file mode 100644
index 00000000000..e1c0f670ca4
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/tutorials/besu-teku-mainnet.md
@@ -0,0 +1,204 @@
+---
+title: Run Besu and Teku on Mainnet
+sidebar_position: 1
+description: Run Besu and Teku on Ethereum Mainnet.
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Run Besu and Teku on Mainnet
+
+Run Besu as an [execution client](../concepts/the-merge.md#execution-clients) and [Teku](https://docs.teku.consensys.net/) as a [consensus client](../concepts/the-merge.md#consensus-clients) on Ethereum Mainnet.
+
+## 1. Install Besu and Teku
+
+Install [Besu](../get-started/install/binary-distribution.md) and [Teku](https://docs.teku.consensys.net/HowTo/Get-Started/Installation-Options/Install-Binaries/).
+
+Ensure you meet the prerequisites for the installation option you use. For example, you must have Java 17+ if using the Besu and Teku binary distributions.
+
+Ensure you meet the [system requirements for Besu on public networks](../get-started/system-requirements.md).
+
+## 2. Generate the shared secret
+
+Run the following command:
+
+```bash
+openssl rand -hex 32 | tr -d "\n" > jwtsecret.hex
+```
+
+You will specify `jwtsecret.hex` when starting Besu and Teku. This is a shared JWT secret the clients use to authenticate each other when using the [Engine API](../how-to/use-engine-api.md).
+
+## 3. Generate validator keys
+
+If you're running Teku as a beacon node only, skip to the [next step](#4-start-besu).
+
+If you're also running Teku as a validator client, have a funded Ethereum address ready (32 ETH and gas fees for each validator).
+
+Generate validator keys and stake your ETH for one or more validators using the [Staking Launchpad](https://launchpad.ethereum.org/en/).
+
+:::info
+
+Save the password you use to generate each key pair in a `.txt` file.
+
+You should also have a `.json` file for each validator key pair.
+
+:::
+
+## 4. Start Besu
+
+Run the following command or specify the options in a [configuration file](../how-to/use-configuration-file/index.md):
+
+```bash
+besu \
+ --sync-mode=SNAP \
+ --data-storage-format=BONSAI \
+ --rpc-http-enabled=true \
+ --rpc-http-host="0.0.0.0" \
+ --rpc-ws-enabled=true \
+ --rpc-ws-host="0.0.0.0" \
+ --host-allowlist=,127.0.0.1,localhost \
+ --engine-host-allowlist=,127.0.0.1,localhost \
+ --engine-rpc-enabled \
+ --engine-jwt-secret=
+```
+
+Specify:
+
+- The path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the [`--engine-jwt-secret`](../reference/cli/options.md#engine-jwt-secret) option.
+- The IP address of your Besu node using the [`--host-allowlist`](../reference/cli/options.md#host-allowlist) and [`--engine-host-allowlist`](../reference/cli/options.md#engine-host-allowlist) options.
+
+Also, in the command:
+
+- [`--sync-mode`](../reference/cli/options.md#sync-mode) specifies using [snap sync](../get-started/connect/sync-node.md#snap-synchronization).
+- [`--data-storage-format`](../reference/cli/options.md#data-storage-format) specifies using [Bonsai Tries](../concepts/data-storage-formats.md#bonsai-tries).
+- [`--rpc-http-enabled`](../reference/cli/options.md#rpc-http-enabled) enables the HTTP JSON-RPC service.
+- [`--rpc-http-host`](../reference/cli/options.md#rpc-http-host) is set to `0.0.0.0` to allow remote RPC connections.
+- [`--rpc-ws-enabled`](../reference/cli/options.md#rpc-ws-enabled) enables the WebSocket JSON-RPC service.
+- [`--rpc-ws-host`](../reference/cli/options.md#rpc-ws-host) is set to `0.0.0.0` to allow remote RPC connections.
+- [`--engine-rpc-enabled`](../reference/cli/options.md#engine-rpc-enabled) enables the [Engine API](../reference/engine-api/index.md).
+
+You can modify the option values and add other [command line options](../reference/cli/options.md) as needed.
+
+## 5. Start Teku
+
+Open a new terminal window.
+
+### Beacon node only
+
+To run Teku as a beacon node only (without validator duties), run the following command or specify the options in the [Teku configuration file]:
+
+```bash
+teku \
+ --ee-endpoint=http://localhost:8551 \
+ --ee-jwt-secret-file= \
+ --metrics-enabled=true \
+ --rest-api-enabled=true \
+ --checkpoint-sync-url=
+```
+
+Specify:
+
+- The path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the
+ [`--ee-jwt-secret-file`](https://docs.teku.consensys.io/reference/cli#ee-jwt-secret-file) option.
+- The URL of a checkpoint sync endpoint using the
+ [`--checkpoint-sync-url`](https://docs.teku.consensys.io/reference/cli#checkpoint-sync-url) option.
+
+Also, in the command:
+
+- [`--ee-endpoint`](https://docs.teku.consensys.io/reference/cli#ee-endpoint) is set to the default URL of Besu's Engine API.
+- [`--metrics-enabled`](https://docs.teku.consensys.io/reference/cli#metrics-enabled) enables Teku's metrics exporter.
+- [`--rest-api-enabled`](https://docs.teku.consensys.io/reference/cli#rest-api-enabled) enables Teku's REST API service.
+
+You can modify the option values and add other [Teku command line options] as needed.
+
+### Beacon node and validator client
+
+To run Teku as a beacon node and validator in a single process, run the following command or specify the options in the [Teku configuration file]:
+
+```bash
+teku \
+ --ee-endpoint http://localhost:8551 \
+ --ee-jwt-secret-file \
+ --metrics-enabled=true \
+ --rest-api-enabled=true \
+ --checkpoint-sync-url= \
+ --validators-proposer-default-fee-recipient= \
+ --validator-keys=:[,:,...]
+```
+
+Specify:
+
+- The path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the
+ [`--ee-jwt-secret-file`](https://docs.teku.consensys.io/reference/cli#ee-jwt-secret-file) option.
+- The URL of a checkpoint sync endpoint using the
+ [`--checkpoint-sync-url`](https://docs.teku.consensys.io/reference/cli#checkpoint-sync-url) option.
+- An Ethereum address you own as the default fee recipient using the
+ [`--validators-proposer-default-fee-recipient`](https://docs.teku.consensys.io/reference/cli#validators-proposer-default-fee-recipient)
+ option.
+- The paths to the keystore `.json` file and password `.txt` file created in
+ [step 3](#3-generate-validator-keys) for each validator using the
+ [`--validator-keys`](https://docs.teku.consensys.io/reference/cli#validator-keys) option.
+ Separate the `.json` and `.txt` files with a colon, and separate entries for multiple validators with commas.
+
+Also, in the command:
+
+- [`--ee-endpoint`](https://docs.teku.consensys.io/reference/cli#ee-endpoint) is set to the default URL of Besu's Engine API.
+- [`--metrics-enabled`](https://docs.teku.consensys.io/reference/cli#metrics-enabled) enables Teku's metrics exporter.
+- [`--rest-api-enabled`](https://docs.teku.consensys.io/reference/cli#rest-api-enabled) enables Teku's REST API service.
+
+You can modify the option values and add other [Teku command line options] as needed.
+
+## 6. Wait for Besu and Teku to sync
+
+After starting Besu and Teku, your node starts syncing and connecting to peers.
+
+
+
+
+
+```json
+{"@timestamp":"2023-02-03T04:43:49,555","level":"INFO","thread":"main","class":"DefaultSynchronizer","message":"Starting synchronizer.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,556","level":"INFO","thread":"main","class":"FastSyncDownloader","message":"Starting sync","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,559","level":"INFO","thread":"main","class":"Runner","message":"Ethereum main loop is up.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:53,106","level":"INFO","thread":"Timer-0","class":"DNSResolver","message":"Resolved 2409 nodes","throwable":""}
+{"@timestamp":"2023-02-03T04:45:04,803","level":"INFO","thread":"nioEventLoopGroup-3-10","class":"SnapWorldStateDownloader","message":"Downloading world state from peers for pivot block 16545859 (0x616ae3c4cf85f95a9bce2814a7282d75dc2eac36
+cb9f0fcc6f16386df70da3c5). State root 0xa7114541f42c62a72c8b6bb9901c2ccf4b424cd7f76570a67b82a183b02f25dc pending requests 0","throwable":""}
+{"@timestamp":"2023-02-03T04:46:04,834","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.08%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:48:01,840","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.23%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:49:09,931","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.41%, Peer count: 11","throwable":""}
+{"@timestamp":"2023-02-03T04:50:12,466","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.61%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:20,977","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.75%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:28,985","level":"INFO","thread":"EthScheduler-Services-29 (importBlock)","class":"FastImportBlocksStep","message":"Block import progress: 180400 of 16545859 (1%)","throwable":""}
+```
+
+
+
+
+
+```bash
+2022-03-21 20:43:24.355 INFO - Syncing *** Target slot: 76092, Head slot: 2680, Remaining slots: 73412, Connected peers: 8
+2022-03-21 20:43:36.363 INFO - Syncing *** Target slot: 76093, Head slot: 2879, Remaining slots: 73214, Connected peers: 10
+2022-03-21 20:43:48.327 INFO - Syncing *** Target slot: 76094, Head slot: 3080, Remaining slots: 73014, Connected peers: 8
+2022-03-21 20:44:00.339 INFO - Syncing *** Target slot: 76095, Head slot: 3317, Remaining slots: 72778, Connected peers: 6
+2022-03-21 20:44:12.353 INFO - Syncing *** Target slot: 76096, Head slot: 3519, Remaining slots: 72577, Connected peers: 9
+```
+
+
+
+
+
+If you're running Teku as a beacon node only, you're all set. If you're also running Teku as a validator client, ensure Besu and Teku are fully synced before submitting your staking deposit in the next step. Syncing Besu can take several days.
+
+## 7. Stake ETH
+
+Stake your ETH for one or more validators using the [Staking Launchpad](https://launchpad.ethereum.org/en/).
+
+You can check your validator status by searching your Ethereum address on the [Beacon Chain explorer](https://beaconcha.in/). It may take up to multiple days for your validator to be activated and start proposing blocks.
+
+
+
+[Teku configuration file]: https://docs.teku.consensys.net/HowTo/Configure/Use-Configuration-File/
+[Teku command line options]: https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax/
diff --git a/versioned_docs/version-24.5.0/public-networks/tutorials/besu-teku-testnet.md b/versioned_docs/version-24.5.0/public-networks/tutorials/besu-teku-testnet.md
new file mode 100644
index 00000000000..e42a4a8f046
--- /dev/null
+++ b/versioned_docs/version-24.5.0/public-networks/tutorials/besu-teku-testnet.md
@@ -0,0 +1,254 @@
+---
+title: Run Besu and Teku on a testnet
+sidebar_position: 2
+description: Run Besu and Teku on Goerli or Sepolia testnet.
+tags:
+ - public networks
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Run Besu and Teku on a testnet
+
+Run Besu as an [execution client](../concepts/the-merge.md#execution-clients) and [Teku](https://docs.teku.consensys.net/) as a [consensus client](../concepts/the-merge.md#consensus-clients) on the [Goerli](https://github.com/eth-clients/goerli) and [Sepolia](https://github.com/eth-clients/sepolia) Ethereum testnets.
+
+:::note
+
+Sepolia is a permissioned network and you can't run a validator client on it without [requesting to become a validator](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg) first. You can connect your consensus client using the beacon node only, without any validator duties.
+
+:::
+
+## 1. Install Besu and Teku
+
+Install [Besu](../get-started/install/binary-distribution.md) and [Teku](https://docs.teku.consensys.net/HowTo/Get-Started/Installation-Options/Install-Binaries/).
+
+Ensure you meet the prerequisites for the installation option you use. For example, you must have Java 17+ if using the Besu and Teku binary distributions.
+
+Ensure you meet the [system requirements for Besu on public networks](../get-started/system-requirements.md).
+
+## 2. Generate the shared secret
+
+Run the following command:
+
+```bash
+openssl rand -hex 32 | tr -d "\n" > jwtsecret.hex
+```
+
+You will specify `jwtsecret.hex` when starting Besu and Teku. This is a shared JWT secret the clients use to authenticate each other when using the [Engine API](../how-to/use-engine-api.md).
+
+## 3. Generate validator keys
+
+If you're running Teku as a beacon node only, skip to the [next step](#4-start-besu).
+
+If you're also running Teku as a validator client, create a test Ethereum address (you can do this in [MetaMask](https://metamask.zendesk.com/hc/en-us/articles/360015289452-How-to-create-an-additional-account-in-your-wallet)). Fund this address with testnet ETH (32 ETH and gas fees for each validator) using a faucet. See the list of [Goerli faucets](https://github.com/eth-clients/goerli#meta-data-g%C3%B6rli) and [Sepolia faucets](https://github.com/eth-clients/sepolia#meta-data-sepolia).
+
+:::note
+
+If you can't get ETH using the faucet, you can ask for help on the [EthStaker Discord](https://discord.io/ethstaker).
+
+:::
+
+Generate validator keys for one or more validators using the [Goerli Staking Launchpad](https://goerli.launchpad.ethereum.org/) (or [request to become validator on Sepolia](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg)).
+
+:::info
+
+Save the password you use to generate each key pair in a `.txt` file. You should also have a `.json` file for each validator key pair.
+
+:::
+
+## 4. Start Besu
+
+Run the following command or specify the options in a [configuration file](../how-to/use-configuration-file/index.md):
+
+
+
+
+
+```bash
+besu \
+ --network=goerli \
+ --rpc-http-enabled=true \
+ --rpc-http-host=0.0.0.0 \
+ --rpc-http-cors-origins="*" \
+ --rpc-ws-enabled=true \
+ --rpc-ws-host=0.0.0.0 \
+ --host-allowlist="*" \
+ --engine-host-allowlist="*" \
+ --engine-rpc-enabled \
+ --engine-jwt-secret=
+```
+
+
+
+
+
+```bash
+besu \
+ --network=sepolia \
+ --rpc-http-enabled=true \
+ --rpc-http-host=0.0.0.0 \
+ --rpc-http-cors-origins="*" \
+ --rpc-ws-enabled=true \
+ --rpc-ws-host=0.0.0.0 \
+ --host-allowlist="*" \
+ --engine-host-allowlist="*" \
+ --engine-rpc-enabled \
+ --engine-jwt-secret=
+```
+
+
+
+
+
+Specify the path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the [`--engine-jwt-secret`](../reference/cli/options.md#engine-jwt-secret) option.
+
+You can modify the option values and add other [command line options](../reference/cli/options.md) as needed.
+
+## 5. Start Teku
+
+Open a new terminal window.
+
+### Beacon node only
+
+To run Teku as a beacon node only (without validator duties), run the following command or specify the options in the [Teku configuration file]:
+
+
+
+
+
+```bash
+teku \
+ --network=goerli \
+ --ee-endpoint=http://localhost:8551 \
+ --ee-jwt-secret-file= \
+ --metrics-enabled=true \
+ --rest-api-enabled=true \
+ --checkpoint-sync-url=
+```
+
+
+
+
+
+```bash
+teku \
+ --network=sepolia \
+ --ee-endpoint=http://localhost:8551 \
+ --ee-jwt-secret-file= \
+ --metrics-enabled=true \
+ --rest-api-enabled=true \
+ --checkpoint-sync-url=
+```
+
+
+
+
+
+Specify:
+
+- The path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the
+ [`--ee-jwt-secret-file`](https://docs.teku.consensys.io/reference/cli#ee-jwt-secret-file) option.
+- The URL of a checkpoint sync endpoint using the
+ [`--checkpoint-sync-url`](https://docs.teku.consensys.io/reference/cli#checkpoint-sync-url) option.
+
+You can modify the option values and add other [Teku command line options] as needed.
+
+### Beacon node and validator client
+
+To run Teku as a beacon node and validator in a single process, run the following command or specify the options in the [Teku configuration file]:
+
+
+
+
+
+```bash
+teku \
+ --network=goerli \
+ --ee-endpoint=http://localhost:8551 \
+ --ee-jwt-secret-file= \
+ --metrics-enabled=true \
+ --rest-api-enabled=true \
+ --checkpoint-sync-url= \
+ --validators-proposer-default-fee-recipient= \
+ --validator-keys=:[,:,...]
+```
+
+
+
+
+
+Sepolia is a permissioned network and you can't run a validator client on it without [requesting to become a validator](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg) first.
+
+
+
+
+
+Specify:
+
+- The path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the
+ [`--ee-jwt-secret-file`](https://docs.teku.consensys.io/reference/cli#ee-jwt-secret-file) option.
+- The URL of a checkpoint sync endpoint using the
+ [`--checkpoint-sync-url`](https://docs.teku.consensys.io/reference/cli#checkpoint-sync-url) option.
+- The test Ethereum address created in [step 3](#3-generate-validator-keys) as the default fee
+ recipient using the
+ [`--validators-proposer-default-fee-recipient`](https://docs.teku.consensys.io/reference/cli#validators-proposer-default-fee-recipient)
+ option.
+- The paths to the keystore `.json` file and password `.txt` file created in
+ [step 3](#3-generate-validator-keys) for each validator using the
+ [`--validator-keys`](https://docs.teku.consensys.io/reference/cli#validator-keys) option.
+ Separate the `.json` and `.txt` files with a colon, and separate entries for multiple validators with commas.
+
+You can modify the option values and add other [Teku command line options] as needed.
+
+## 6. Wait for Besu and Teku to sync
+
+After starting Besu and Teku, your node starts syncing and connecting to peers.
+
+
+
+
+
+```json
+{"@timestamp":"2023-02-03T04:43:49,555","level":"INFO","thread":"main","class":"DefaultSynchronizer","message":"Starting synchronizer.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,556","level":"INFO","thread":"main","class":"FastSyncDownloader","message":"Starting sync","throwable":""}
+{"@timestamp":"2023-02-03T04:43:49,559","level":"INFO","thread":"main","class":"Runner","message":"Ethereum main loop is up.","throwable":""}
+{"@timestamp":"2023-02-03T04:43:53,106","level":"INFO","thread":"Timer-0","class":"DNSResolver","message":"Resolved 2409 nodes","throwable":""}
+{"@timestamp":"2023-02-03T04:45:04,803","level":"INFO","thread":"nioEventLoopGroup-3-10","class":"SnapWorldStateDownloader","message":"Downloading world state from peers for pivot block 16545859 (0x616ae3c4cf85f95a9bce2814a7282d75dc2eac36
+cb9f0fcc6f16386df70da3c5). State root 0xa7114541f42c62a72c8b6bb9901c2ccf4b424cd7f76570a67b82a183b02f25dc pending requests 0","throwable":""}
+{"@timestamp":"2023-02-03T04:46:04,834","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.08%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:48:01,840","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.23%, Peer count: 8","throwable":""}
+{"@timestamp":"2023-02-03T04:49:09,931","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.41%, Peer count: 11","throwable":""}
+{"@timestamp":"2023-02-03T04:50:12,466","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.61%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:20,977","level":"INFO","thread":"EthScheduler-Services-3 (batchPersistAccountData)","class":"SnapsyncMetricsManager","message":"Worldstate download progress: 0.75%, Peer count: 10","throwable":""}
+{"@timestamp":"2023-02-03T04:51:28,985","level":"INFO","thread":"EthScheduler-Services-29 (importBlock)","class":"FastImportBlocksStep","message":"Block import progress: 180400 of 16545859 (1%)","throwable":""}
+```
+
+
+
+
+
+```bash
+2022-03-21 20:43:24.355 INFO - Syncing *** Target slot: 76092, Head slot: 2680, Remaining slots: 73412, Connected peers: 8
+2022-03-21 20:43:36.363 INFO - Syncing *** Target slot: 76093, Head slot: 2879, Remaining slots: 73214, Connected peers: 10
+2022-03-21 20:43:48.327 INFO - Syncing *** Target slot: 76094, Head slot: 3080, Remaining slots: 73014, Connected peers: 8
+2022-03-21 20:44:00.339 INFO - Syncing *** Target slot: 76095, Head slot: 3317, Remaining slots: 72778, Connected peers: 6
+2022-03-21 20:44:12.353 INFO - Syncing *** Target slot: 76096, Head slot: 3519, Remaining slots: 72577, Connected peers: 9
+```
+
+
+
+
+
+If you're running Teku as a beacon node only, you're all set. If you're also running Teku as a validator client, ensure Besu and Teku are fully synced before submitting your staking deposit in the next step. Syncing Besu can take several days.
+
+## 7. Stake ETH
+
+Stake your testnet ETH for one or more validators using the [Goerli Staking Launchpad](https://goerli.launchpad.ethereum.org/).
+
+You can check your validator status by searching your Ethereum address on the [Goerli Beacon Chain explorer](https://goerli.beaconcha.in/). It may take up to multiple days for your validator to be activated and start proposing blocks.
+
+
+
+[Teku configuration file]: https://docs.teku.consensys.net/HowTo/Configure/Use-Configuration-File/
+[Teku command line options]: https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax/
diff --git a/versioned_sidebars/version-24.5.0-sidebars.json b/versioned_sidebars/version-24.5.0-sidebars.json
new file mode 100644
index 00000000000..32910f92f17
--- /dev/null
+++ b/versioned_sidebars/version-24.5.0-sidebars.json
@@ -0,0 +1,14 @@
+{
+ "publicDocSidebar": [
+ {
+ "type": "autogenerated",
+ "dirName": "public-networks"
+ }
+ ],
+ "privateDocSidebar": [
+ {
+ "type": "autogenerated",
+ "dirName": "private-networks"
+ }
+ ]
+}
diff --git a/versions.json b/versions.json
index 9cb528f65f3..4da5ad0935c 100644
--- a/versions.json
+++ b/versions.json
@@ -1,4 +1,5 @@
[
+ "24.5.0",
"24.3.0",
"24.1.0",
"23.10.3",